Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2009, 21:34   #1
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию Вывод только одного года ('yyyy') из даты 'dd.mm.yyyy'. В Accese

Народ, уже повторяюсь, но перепробовал все, что только знаю.

у меня есть поле, в Accese тип поля - datetime, там хранится дата в формате 'dd.mm.yyy' я вывожу запросом дату в таблицу, выводит нормально, но мне надо не саму дату а только год от этой даты т.е. 'yyyy'

Вот файл, в нем программа с БД на форме "SV_RZ" есть ListBox1, по нажатию на 1 строку ListBox1, должно выдать вместо полной даты, только год 'yyyy'.

думаю объяснил понятно ( файл тут ---->ПОПК.rar
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 09.12.2009, 09:52   #2
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

если в запросе то
Код:
select year(date) as Year_ From [table]
если из полной даты то
Код:
ListBox1.Items.Add(FormatDateTime('YYYY',ADOQuery1.FieldByName('date').AsDateTime));
vovk вне форума Ответить с цитированием
Старый 09.12.2009, 12:13   #3
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от vovk Посмотреть сообщение
если в запросе то
Код:
select year(date) as Year_ From [table]
если из полной даты то
Код:
ListBox1.Items.Add(FormatDateTime('YYYY',ADOQuery1.FieldByName('date').AsDateTime));
Код:
dm.ADOQ_O.Close;
dm.ADOQ_O.SQL.Clear;
dm.ADOQ_O.SQL.Add('SELECT year(data_ucheta), * FROM VOZRAST_P INNER JOIN (UCHET INNER JOIN 
 (PRICHINA_NETR INNER JOIN (KABINET INNER JOIN (DIAGNOZ INNER JOIN PACIENT ON DIAGNOZ.[id_dz] = PACIENT.[id_dz]) ON KABINET.[id_kabineta] = PACIENT.[id_kabineta]) ');
dm.ADOQ_O.SQL.Add(' ON PRICHINA_NETR.[id_prichina_netudosp] = PACIENT.[id_prichina_netudosp]) 
ON UCHET.[id_uch] = PACIENT.[id_uch]) ON VOZRAST_P.[id_vozrasta] = PACIENT.[id_vozrasta]');
dm.ADOQ_O.Open;
чет не показывает отдельно (
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 09.12.2009, 12:26   #4
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

по моему тут со звёздочкой не получится, желательно поля указывать.

Попробуйте с простым запросом, для того чтобы результат посмотреть
vovk вне форума Ответить с цитированием
Старый 09.12.2009, 12:42   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

думаю, что проблема или в том, что запрос не возвращает ни одной записи, либо перед звёздочкой можно попробовать добавить алиас таблицы...

а вообще, сначала пробуйте так:
Код:
SELECT data_ucheta  FROM VOZRAST_P...
если сработает, дальше:
Код:
SELECT year(data_ucheta) FROM VOZRAST_P...
а если и так сработает - тогда дописывайте звёздочку или другие поля...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.12.2009, 12:45   #6
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от vovk Посмотреть сообщение
по моему тут со звёздочкой не получится, желательно поля указывать.

Попробуйте с простым запросом, для того чтобы результат посмотреть
НЕРАБОТАЕТ ПИШЕТ ПОЛЕ НЕ НАЙДЕНО data_ucheta
Код:
dm.ADOQ_O.Close;
dm.ADOQ_O.SQL.Clear;
dm.ADOQ_O.SQL.Add('SELECT year(data_ucheta),vozrast,prichina,nomer_kab,dz,kol,VOZRAST_P.[id_vozrasta],UCHET.[id_uch],PRICHINA_NETR.[id_prichina_netudosp],');
dm.ADOQ_O.SQL.Add('KABINET.[id_kabineta],DIAGNOZ.[id_dz],id_pacienta,PACIENT.[id_kabineta],PACIENT.[id_dz],PACIENT.[id_prichina_netudosp],PACIENT.
[id_uch],PACIENT.[id_vozrasta]');
dm.ADOQ_O.SQL.Add('FROM VOZRAST_P INNER JOIN (UCHET INNER JOIN (PRICHINA_NETR INNER JOIN (KABINET INNER JOIN (DIAGNOZ INNER JOIN PACIENT 
ON DIAGNOZ.[id_dz] = PACIENT.[id_dz]) ON KABINET.[id_kabineta] = PACIENT.[id_kabineta])');
dm.ADOQ_O.SQL.Add('ON PRICHINA_NETR.[id_prichina_netudosp] = PACIENT.[id_prichina_netudosp]) ON UCHET.[id_uch] = PACIENT.[id_uch])
 ON VOZRAST_P.[id_vozrasta] = PACIENT.[id_vozrasta]');
dm.ADOQ_O.Open;
так работает но это с полной датой
Код:
dm.ADOQ_O.Close;
dm.ADOQ_O.SQL.Clear;
dm.ADOQ_O.SQL.Add('SELECT data_ucheta,vozrast,prichina,nomer_kab,dz,kol,VOZRAST_P.[id_vozrasta],UCHET.[id_uch],
PRICHINA_NETR.[id_prichina_netudosp],');
dm.ADOQ_O.SQL.Add('KABINET.[id_kabineta],DIAGNOZ.[id_dz],id_pacienta,PACIENT.[id_kabineta],PACIENT.[id_dz],PACIENT.[id_prichina_netudosp],
PACIENT.[id_uch],PACIENT.[id_vozrasta]');
dm.ADOQ_O.SQL.Add('FROM VOZRAST_P INNER JOIN (UCHET INNER JOIN (PRICHINA_NETR INNER JOIN (KABINET INNER JOIN (DIAGNOZ INNER JOIN 
PACIENT ON DIAGNOZ.[id_dz] = PACIENT.[id_dz]) ON KABINET.[id_kabineta] = PACIENT.[id_kabineta])');
dm.ADOQ_O.SQL.Add('ON PRICHINA_NETR.[id_prichina_netudosp] = PACIENT.[id_prichina_netudosp]) ON UCHET.[id_uch] = PACIENT.[id_uch]) 
ON VOZRAST_P.[id_vozrasta] = PACIENT.[id_vozrasta]');
dm.ADOQ_O.Open;
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 09.12.2009, 12:51   #7
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Ради экспиремента попробовал у себя, ACCESS 2002, DELPHI 2007 нормально работает, как и ожидалось.
Сейчас скачаю ваш файлик попробую посмотреть
vovk вне форума Ответить с цитированием
Старый 09.12.2009, 12:54   #8
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

ок ) ждемс
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Старый 09.12.2009, 13:04   #9
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

в вашем датасете ADOQ_O, нужно список полей сначала поправить, а потом можно будет увидеть искомое
vovk вне форума Ответить с цитированием
Старый 09.12.2009, 13:07   #10
Droid
Форумчанин
 
Аватар для Droid
 
Регистрация: 24.04.2008
Сообщений: 440
По умолчанию

Цитата:
Сообщение от vovk Посмотреть сообщение
в вашем датасете ADOQ_O, нужно список полей сначала поправить, а потом можно будет увидеть искомое
а если поподробнее ?
1 старый программист, лучше новых 2-х
Droid вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сократить всю дату до вывода только года .ГГ ? jmaz Microsoft Office Excel 4 07.12.2009 12:37
Kопирование файлы из одного компьютера на другой, только по таймеру Aqil_f Microsoft Office Excel 6 22.10.2009 07:13
Как преобразовать из dd/mm/yyyy в dd.mm.yyyy? Dux Общие вопросы Delphi 11 06.10.2009 00:21
Вывод на экран списка статей, опубликован-ных после заданного года Igor571 Паскаль, Turbo Pascal, PascalABC.NET 2 01.12.2008 08:23
Сортировка даты DD.MM.YYYY o1ps Общие вопросы C/C++ 1 06.11.2007 16:13