Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.05.04;
Скачать: CL | DM;

Вниз

как правильно задать фильтр   Найти похожие ветки 

 
ЛИЯ   (2008-04-09 11:03) [0]

Добрый день! Подскажите, пожалуйста, как правильно задать фильтр.
Я сделала так:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, DB, DBClient, ComCtrls,
StdCtrls;

type
TForm1 = class(TForm)
ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
MonthCalendar1: TMonthCalendar;
Button1: TButton;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure DBGrid1KeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
MonthCalendar1.Date := Now;
ClientDataSet1.Filter := FormatDateTime("dd/mm/yyyy",Now);
ClientDataSet1.Filtered := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
If not ClientDataSet1.Locate("Номер",Edit1.text,[]) then
begin
MessageDlg("Номер не найден!", mtError, [mbOK], 0);
Edit1.SetFocus;
end;
If ClientDataSet1.Locate("Номер",Edit1.text,[]) then
begin
DBGrid1.SetFocus;
end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
ClientDataSet1.post;
end;

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
ClientDataSet1.edit;
ClientDataSet1.Fields[1].AsString := FormatDateTime("dd/mm/yyyy",Now);
end;

end.


При запуске выдает сообщение: "Project Project1.exe raised exception class EDatabaseError with message "Invalid filter expression character:".". Process stopped. Use Step or Run to continue."
А еще ругается при закрытие окна, если не внести изменения в таблицу.
Таблица простая, состоит всего из двух столбцов: номера и даты. Еще есть календарь MonthCalendar1. Хочу чтобы программа, при изменение даты в календаре, отображала в таблице только те данные, которые были внесены в базу именно в эту дату.
Все упирается в фильтр! Подскажите, если не сложно, как он пишется.
Заранее благодарнa!


 
Kolan ©   (2008-04-09 11:05) [1]

> ClientDataSet1.Filter := FormatDateTime("dd/mm/yyyy",Now)
> ;

Прочтите справку по этому свойству.


 
Плохиш ©   (2008-04-09 11:07) [2]


> procedure TForm1.FormCreate(Sender: TObject);
> begin
> MonthCalendar1.Date := Now;
> ClientDataSet1.Filter := FormatDateTime("dd/mm/yyyy",Now);
>
> ClientDataSet1.Filtered := True;
> end;

Вообще-то филтер обычно задаётся в формате <поле>=<значение>

> procedure TForm1.Button1Click(Sender: TObject);
> begin
> If not ClientDataSet1.Locate("Номер",Edit1.text,[]) then
> begin
> MessageDlg("Номер не найден!", mtError, [mbOK], 0);
> Edit1.SetFocus;
> end;
> If ClientDataSet1.Locate("Номер",Edit1.text,[]) then
> begin
> DBGrid1.SetFocus;
> end;
> end;

Хм, стоит справку по if прочитать, в частности, про словo else.


 
Плохиш ©   (2008-04-09 11:08) [3]


> филтер

Блин, долго смотрел на слово... потом понял, что оно означает :-)))



Страницы: 1 вся ветка

Текущий архив: 2008.05.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.014 c
2-1207486169
dumka
2008-04-06 16:49
2008.05.04
Канва


2-1207400086
delphicoder
2008-04-05 16:54
2008.05.04
Недопонимания с TreeView


4-1188547784
fromats1
2007-08-31 12:09
2008.05.04
Запуск процесса от имени другого процесса


15-1206227132
Petr V. Abramov
2008-03-23 02:05
2008.05.04
Вакансия Delphi программист


15-1206368870
asdf2
2008-03-24 17:27
2008.05.04
Беспроводная связь.