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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2011, 12:42   #1
Volodq
Пользователь
 
Регистрация: 12.05.2011
Сообщений: 14
По умолчанию Не получается сортировать по дате.

Добрый день
Имеются следующие компоненты
ADOQuery
DataSource
DBGrid
Button
2 DateTimePicker
Пытаюсь вывести информацию из связанных таблиц отфильтровав её по дате. Компоненты DateTimePicker задают интервал фильтрации.
Записал запрос следующего вида.
Код:
begin
   Zhurnal_Query.Close;
   Zhurnal_Query.SQL.Text := 'SELECT I.Famil, I.Imya, I.Otch, N.Kat_Dela,'+
   'N.N_Dela, N.Rol_V_Dele, N.DataVrem_Zased,  N.Kabinet FROM dbo.Nazn_SZ  N,'+
   'dbo.Inf_grahd I WHERE (I.N_Zapisi=N.Grahdanin)and'+
   '(N.DataVrem_zased>'''+DateToStr(DateNach.DateTime)+ ''') and'+
   '(N.DataVrem_zased<'''+DateToStr(DateStop.DateTime)+ ''')';
   Zhurnal_Query.Open;
   
   
  end;
Выделеный кусок должен фильтровать по дате и он фильтрует но только если выбираеш дату меньше 12 го числа если выше 12-го то дает ошибку конвертирования. Возможно нужно как то по другому сделать преобразование типов? А не переходить от формата дата к формату строковому.
Еще я попробовал фильтровать по другому через свойство Filter ADOQuery
Используя следующее.
Код:
   Zhurnal_Query.Filtered:=False;
   Zhurnal_Query.Filter:= 'Zhurnal_Query.Fields[6].AsDateTime >'+DateNach.DateTime;
   Zhurnal_Query.Filtered:=True;
Пишет не совместимы типы String и TdateTime
Вот сижу мучаюсь.

Последний раз редактировалось Stilet; 17.05.2011 в 18:02.
Volodq вне форума Ответить с цитированием
Старый 17.05.2011, 13:12   #2
drkred
Новичок
Джуниор
 
Регистрация: 24.01.2011
Сообщений: 2
По умолчанию

смотри есть функция formatdate которая возвращает строку синтаксис: FormatDate('dd.mm.yyyy',DateTime):s tring; вот строка 'dd.mm.yyyy' она задает формат, я не помню в access'e по моему нужно дату записать через / т.е формат 'dd/mm/yyyy', и сам запрос по моему должен так:
select Date
from Table
where (date>#dd.mm.yyyy#)and(Date<#dd.mm. yyyy#)

попробуй со слешами если это не прокатит
drkred вне форума Ответить с цитированием
Старый 17.05.2011, 13:14   #3
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Здравствуйте
А так не пробовали
Код:
begin
   Zhurnal_Query.Close;
   Zhurnal_Query.SQL.Text := 'SELECT I.Famil, I.Imya, I.Otch, N.Kat_Dela,'+
   'N.N_Dela, N.Rol_V_Dele, N.DataVrem_Zased,  N.Kabinet FROM dbo.Nazn_SZ  N,'+
   'dbo.Inf_grahd I WHERE (I.N_Zapisi=N.Grahdanin)and'+
   '(N.DataVrem_zased>#'+DateToStr(DateNach.DateTime)+ #') and'+
   '(N.DataVrem_zased<#'+DateToStr(DateStop.DateTime)+ '#)';
   Zhurnal_Query.Open;
end;
До свидания
Добавка: Пока посылал, уже ответили . В запросах можете использовать и функции самой MS Access, а не только Delphi

Последний раз редактировалось OlegVE; 17.05.2011 в 13:16. Причина: Добавка
OlegVE вне форума Ответить с цитированием
Старый 17.05.2011, 15:30   #4
Volodq
Пользователь
 
Регистрация: 12.05.2011
Сообщений: 14
По умолчанию

Спасибо но не прокатило. Сделал с решеткой. Пишет синтаксическая ошибка.
А в родном запросе упорно путает день и месяц местами.
И еще я в начале не написал но у меня база не Access а SQL.
Volodq вне форума Ответить с цитированием
Старый 17.05.2011, 15:36   #5
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Цитата:
...путает день и месяц местами...
Используйте тогда функцию FormatDateTime, как Вам предлагалось выше. Там и установите порядок следования дня и месяца.
Извините, исправил на FormatDateTime.

Последний раз редактировалось OlegVE; 17.05.2011 в 15:50.
OlegVE вне форума Ответить с цитированием
Старый 17.05.2011, 15:54   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

FormatDateTime('yyyymmdd',DateNach. DateTime) - если ваша SQL это MS SQL, то скушает
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 17.05.2011, 17:26   #7
Gulik
Холост/Не замужем
Форумчанин
 
Аватар для Gulik
 
Регистрация: 13.11.2007
Сообщений: 283
По умолчанию

Код:
FormatDateTime('mmddyyyy',DateNach.DateTime)
в запросе формат даты должен быть mm.dd.yyyy
плюс ко всему к этому чтобы не было ошибок типо не совпадение типов данных нужно все это дело заключить в #

лично я при построении запросов не пользуюсь функцией FormatDateTime(),
я раскладываю дату по переменным функцией DecodeDate() а потом уже довожу это все до нужного мне вида
метод весьма извращенный, но дело каждого...

Последний раз редактировалось Gulik; 17.05.2011 в 17:30.
Gulik вне форума Ответить с цитированием
Старый 26.05.2011, 07:29   #8
Volodq
Пользователь
 
Регистрация: 12.05.2011
Сообщений: 14
По умолчанию

В итоге я сделал вот так и заработало.

Zhurnal_Query.SQL.Text := 'SELECT I.Famil, I.Imya, I.Otch, I.Pol, Z.DataVrem_Vhoda,'+
'Z.DataVrem_Vihoda, Z.N_Kab, Z.Prichina,Z.Primech FROM dbo.Zhurn_posesh Z,'+
'dbo.Inf_grahd I WHERE (Z.Grahdanin=I.N_zapisi) and'+
'(I.Famil= '''+FamilEdit.Text+''')'+
' and Z.DataVrem_Vhoda>= '+
QuotedStr(FormatDateTime('yyyy-mm-dd 00:00:00',DateNach.Date))+
' and Z.DataVrem_Vhoda<= '+
QuotedStr(FormatDateTime('yyyy-mm-dd 23:59:59',DateStop.Date));
Volodq вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировать список СИ++ Человек Панда Помощь студентам 2 10.05.2011 21:45
сортировать файл ostapchyk bod9 Паскаль, Turbo Pascal, PascalABC.NET 0 03.04.2011 17:43
сортировать в массиве Ronaldo_7 Помощь студентам 4 06.12.2010 14:38
Сортировать список Vladsgs Microsoft Office Excel 4 18.05.2010 08:39
Сортировать по имени Манжосов Денис :) Помощь студентам 2 25.04.2008 10:12