Форум: "Начинающим";
Текущий архив: 2006.12.31;
Скачать: [xml.tar.bz2];
ВнизПоиск в дате в Гриде Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.041 c