Форум: "Базы";
Текущий архив: 2015.05.03;
Скачать: [xml.tar.bz2];
ВнизПоиск по дате в БД Access Найти похожие ветки
← →
Lutdan © (2011-04-28 00:28) [0]Возникла проблема: Мне нужно, чтоб при изменении даты фильтровались данные в DBGrid. Реализовал так:
procedure TForm1.sDateEdit1Change(Sender: TObject);
begin
if not (DateToStr(sDateEdit1.Date) = "") then
begin
DataModule4.ADDArhuv1.Filter := "Paz_Data_Vudachi =""" + datetostr(form1.sDateEdit1.date)+"""";
DataModule4.ADDArhuv1.Filtered := True;
Всё работает, когда я выбираю дату, а вот когда прописываю её (например, не до конца ввёл день 2_.__.____) фильтруется только первая строка в ADOTable, но при вводе полной даты (23.04.2011) всё фильтрует правильно.
Так вот вопрос: Как можно сделать так, что бы фильтровались данные только после полного ввода даты.Пробовал MaskEdit, но там такая же проблема, если не до конца вводить дату.
Ещё вопроc посложнее: Мне нужно как - то отфильтровать данные скажем с Января по Апрель. В Таблице Access дата записана в виде: 03.04.2011. Как вытянуть 04 месяц? Как сделать фильтр скажем 01 по 04 месяц и отобразить данные?
Добавлено 25.04.11, 02:38
Можно конечно сделать через Button и там написать проверку на правильный ввод даты (но как это сделать*?), но хотелось бы именно фильтровать по мере ввода пользователем даты.
← →
Германн © (2011-04-28 04:18) [1]
> В Таблице Access дата записана в виде: 03.04.2011.
Тебе уже давно АП на "исходниках" сказал, что в БД дата записана в виде действительного числа, а не строки. До сих пор не понятно?
И забудь про свойства Filter и Filtered равно как и о компонентах T(xxx)Table.
← →
Sergey13 © (2011-04-28 10:58) [2]> [0] Lutdan © (28.04.11 00:28)
Используй для даты специализированные контролы, типа DateEdit - там сложнее ввести не то. Или сам контролируй после ввода.
Но сначала конечно см
> [1] Германн © (28.04.11 04:18)
это первично.
← →
OW © (2011-04-28 12:46) [3]
> Как можно сделать так, что бы фильтровались данные только
> после полного ввода даты
не включать фильтрование при неполном вводе
для этого проверять, например, длину введенного значения
procedure TForm1.sDateEdit1Change(Sender: TObject);
begin
if not (DateToStr(sDateEdit1.Date) = "") then
begin
if (form1.sDateEdit1.СООТВСВОЙСТВО заполнено полностью)
then begin
DataModule4.ADDArhuv1.Filter := "Paz_Data_Vudachi =""" + datetostr(form1.sDateEdit1.date)+"""";
..
end;
Но сначала конечно см
Sergey13 © (28.04.11 10:58) [2]
← →
Anatoly Podgoretsky © (2011-04-28 14:20) [4]> OW (28.04.2011 12:46:03) [3]
Но ведь это нормально, неполный ввод даты, соответствует справки
Ввод не полный, а дата полная
← →
OW © (2011-04-28 15:23) [5]
> Anatoly Podgoretsky © (28.04.11 14:20) [4]
согласен.
Коль дата суть число, то как только что-то введено, интерпретация уже пошла, какая-то дата уже есть.
Однако, тут ситуация сродни той, что как если бы мы заставляли вводить пользователя "православные" десятичные числа побитно. т.е. ты уж, юзер, изволь точно писать, как в компьютере они хранятся,"0101..", а не "5", или 9.
т.е. дискретность ввода некая должна быть.
Таковую обеспечивает присвоение, например, edtAny.dat := 44404;
или программист.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2015.05.03;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.002 c