Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск в дате в Гриде [D6]


Kvinta ©   (2006-12-12 12:02:00) 

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

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


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


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

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


Kvinta   (2006-12-12 13:02:00) [2]


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

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


Sergey13   (2006-12-12 12:58:00) [3]

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


Kvinta   (2006-12-12 12:45:00) [4]


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


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


Fredy314   (2006-12-12 12:41:00) [5]

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


Fredy314   (2006-12-12 12:40:00) [6]

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


Kvinta   (2006-12-12 12:26:00) [7]


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


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


clickmaker   (2006-12-12 12:14:00) [8]

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


Kvinta   (2006-12-12 12:11:00) [9]


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

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


clickmaker   (2006-12-12 12:09:00) [10]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо