Главная страница
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.47 MB
Время: 0.029 c
8-1179475581
kanti
2007-05-18 12:06
2008.05.04
Работа с видео


2-1207562627
Alex_C
2008-04-07 14:03
2008.05.04
Данные двух TMemoryStream - в один сложить


2-1207647164
Fr1K
2008-04-08 13:32
2008.05.04
QuickRep


15-1206347973
usr
2008-03-24 11:39
2008.05.04
MS SQL Server 2000


15-1206311535
Petr V. Abramov
2008-03-24 01:32
2008.05.04
а как работает интернет?