![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск в дате в Гриде [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 здесь не поможет. ПартиалКи работает только для строк, для числовых полей (как дата) он не имеет смысла.
Поэтому свой метод поиска придется писать. С разбором и сравнением частей дат