Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.31;
Скачать: CL | DM;

Вниз

Поиск в дате в Гриде   Найти похожие ветки 

 
Kvinta   (2006-12-12 12:02) [0]

Есть Грид, в нем нужно искать некую информацию по нажатию клавиши, с текстовыми полями, все работает. Но есть Колонки данные в которых типа ДАТА, с ними так не получается, появляется ошибка, что в общем понятно. Не могу придумать, как реализовать поиск в этих столбцах. т.е. если человек ввел скажем 10.1 Курсор перейдет на ближайшую дату 10- го числа 1?-го месяца, соответственно при нажатии клавиш дальше, поиск уточняется. Кажется понятно объяснил :) Использую метод Locate: Вот кусочек из KeyPress:
ADoQuery1.Locate(DbGrid1.SelectedField.FullName,StrToDate(FindStr+Key),[loPartialKey])

Примечание:
EhLib мне не подходит.


 
clickmaker ©   (2006-12-12 12:09) [1]

боюсь, что Locate здесь не поможет. ПартиалКи работает только для строк, для числовых полей (как дата) он не имеет смысла.
Поэтому свой метод поиска придется писать. С разбором и сравнением частей дат


 
Kvinta   (2006-12-12 12:11) [2]


> Поэтому свой метод поиска придется писать. С разбором и
> сравнением частей дат

Ууууу.... Нехотелось бы конечно. Может у кого еще есть мнения на этот счет?


 
clickmaker ©   (2006-12-12 12:14) [3]

ну как вариант, можно извернуться и при вводе частичной даты просто дополнять другие поля, а потому уже в Locate
т.е. вводит чел 10. - месяц и год ставишь текущие, ну и т.д.


 
Kvinta   (2006-12-12 12:26) [4]


> дополнять другие поля, а потому уже в Locate
> т.е. вводит чел 10. - месяц и год ставишь текущие, ну и
> т.д.


Нет. Этот номер не прошел по причине того что если дополнить дату ну скажет 10.01.01 Locate ищет именно такую дату. :( А мысль была хорошая, я тоже в этом направлении думал...


 
Fredy314 ©   (2006-12-12 12:40) [5]

В звпросе Where (Data=10.01.01)or(Data=10.01.02).....


 
Fredy314 ©   (2006-12-12 12:41) [6]

Все варианты генерировать програмно в зависимости от того какакя часть даты введена, работать должно, только это изврат.


 
Kvinta   (2006-12-12 12:45) [7]


> В звпросе Where (Data=10.01.01)or(Data=10.01.02).....


... Это шутка? Даты могут варьйроваться в очень больших пределах. А если всё что ввели это 1? И причем тут запрос? Он нам тогда одну строчку в грид вернет, ну либо 10, смотря сколько дат совпадет :)
или может я туплю?


 
Sergey13 ©   (2006-12-12 12:58) [8]

Может стоит завести калк поле - дата в строковом представлении и искать по нему?


 
Kvinta   (2006-12-12 13:02) [9]


> Может стоит завести калк поле - дата в строковом представлении
> и искать по нему?

Тоже не годиться, структуру базы менять уже поздно.


 
Рамиль ©   (2006-12-12 14:37) [10]


> Тоже не годиться, структуру базы менять уже поздно.

Так причем тут структура базы?
Можно просто
select DateToStr(fDate) as sDate from TableName where ...
DateToStr в зависимости от того какая СУБД
Или вычисляемое поле в DataSet как в [8]



Страницы: 1 вся ветка

Текущий архив: 2006.12.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
4-1156150573
Alita
2006-08-21 12:56
2006.12.31
Перенаправить сообщение


15-1165980287
vidiv
2006-12-13 06:24
2006.12.31
Персональный компьютер


15-1165951639
Petr V. Abramov
2006-12-12 22:27
2006.12.31
Вторничные задачки :)


3-1161322590
DelphiN!
2006-10-20 09:36
2006.12.31
SQL запрос


3-1161332967
Juice
2006-10-20 12:29
2006.12.31
Округление в Firebird