Помощь - Поиск - Пользователи - Календарь
Полная версия: БД, фильрация
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
klem4
Господа, выручайте срочно, горю !

Что имеем :


class TfrmReport = class(TForm)
//....

mskEdtStart: TMaskEdit;
mskEdtEnd: TMaskEdit;
//...
end;

procedure TfrmReport.FormCreate(Sender: TObject);
begin
// ...
mskEdtStart.EditMask := '##.##.##';
mskEdtStart.Text := '';
mskEdtEnd.EditMask := '##.##.##';
mskEdtEnd.Text := '';
// ...
end;

procedure TfrmReport.btnPreviewClick(Sender: TObject);
var
startDate, endDate: TDateTime;
// ...
begin
// ...
try
startDate := StrToDate(mskEdtStart.Text);
endDate := StrToDate(mskEdtEnd.Text);
except
...
end;
// ...
with frmMain.tblCard do begin
Filter := 'C_Date >= ' + DateToStr(startDate) + ' AND C_Date <= ' + DateToStr(endDate); <-------------- ТУТ ОШИБКА
Filtered := true;
end;
//...
end;
end;


C_Date - поле типа Date (Paradox)

Что за точку он там нашел ? что я делаю не правильно, подозревают что MaskEdit мне тут карину портит, но как ?!

ps если пробовать проводить в этом-же месте фильтрацию по другим полям, то все ок.
мисс_граффити
а ты случаем Date и DateTime не попутал?
и, кстати, # позволяет ввести цифру, а также + и -. Если тебе только цифры нужны - ставь 9.
klem4
Поменял на TDate (startDate, endDate)

НО даже при таком раскладе всеравно ошибка таже самая :

(* TEST*)
startDate := Now;
endDate := Now;
(*TEST*)
with frmMain.tblCard do begin
Filtered := false;
Filter := 'C_Date >= ' + DateToStr(startDate) + ' AND C_Date <= ' + DateToStr(endDate);
Filtered := true;
end;







9-ки пробовал
мисс_граффити
нашла книжечку, там вот что пишут:
(совместимость значений полей разных типов)
TDateTimeField AsString - преобразование возможно
TDateField AsString - преобразование происходит, если оно возможно и часто зависит от формата отображения (свойство DisplayFormat).

а что такое DateToStr - это родное делфино или сам писал?
AsString - это свойство, если что. Может, через него попробовать?
volvo
Попробуй:
Filter := 'C_Date >= ' + QuotedStr(DateToStr(startDate)) + ' AND C_Date <= ' + QuotedStr(DateToStr(endDate));
klem4
Спасибо всем за помощь !

Filter := 'C_Date >= ' + QuotedStr(DateToStr(startDate)) + ' AND C_Date <= ' + QuotedStr(DateToStr(endDate));


yes2.gif

Цитата
а что такое DateToStr - это родное делфино или сам писал?


Родное ;)

Цитата
Unit

SysUtils

Category

date/time routines

function DateToStr(Date: TDateTime): string;

Description

Use DateToStr to obtain a string representation of a date value that can be used for display purposes. The conversion uses the format specified by the ShortDateFormat global variable.



Что-то мне подсказывает, что с этим ShortDateFormat можно тоже поигарться, щас посмотрю что там.

Спасибо еще раз !
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.