Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Delphi7, Pascal (http://forum.oszone.net/showthread.php?t=29347)

mahsus 26-10-2004 08:53 203454

Привет, народ!
Помогите, пожалуйста с компонентом MaskEdit и базой Access. Одно из полей базы 'DateTime' (полный формат времени). Нужно отфильтровать записи по времени. Поле ввода я делаю MaskEdit'ом с маской ввода "!90:00:00;0;0". После того как пользователь ввел время (дата у меня уже имеется в формате TDate), фильтрацию осуществляю так:

procedure TMainForm.BitBtn1Click(Sender: TObject);
Var FilterTime: TDateTime;
   Field,Znak,SFilterTime: String;
begin
Field:='Time';
Znak:='=';
DateOpen:=Date;
FilterTime:=DateOpen+StrToTime(FromMaskEdit.EditText);
SFilterTime:=DateTimeToStr(FilterTime);

ADOTable1.Filter:='('+Field+Znak+SFilterTime+')';
Label17.Caption:=SFilterTime;
ADOTable1.Filtered:=true;
end;

Ошибки не выдает, за исключением того, если ввели не все цифры, но при правильном вводе проблема в том, что никакой фильтрации просто нет.
Буду очень благодарен за помощь.

Prisoner 27-10-2004 02:23 203455

Ввели не все цифры и корректный ввод? Хм... ну да ладно. А пробывать перед применением фильтра анализировать введенные данные и дополнять значениями по умолчанию (пусть это будут нолики)? Скажем в некоторой позиции ввода не было - нолики туда.

mahsus 27-10-2004 08:37 203456

При том коде, который я написал, даже при корректном вводе времени с последующем добавлении к нему даты не получается отфильтровать базу, она морозится, хотя при выводе полной фильтрующей даты в Label она в точности совпадет с той, что в таблице.

Prisoner 28-10-2004 03:14 203457

Попробуйте:
а) Znak:= ' = ';
б) "Закавычить" SFilterTime функцией QuotedStr, быть может это необходимо.


Время: 12:14.

Время: 12:14.
© OSzone.net 2001-