![]() |
|
|
#61
|
||||
|
||||
|
Цитата:
|
|
#62
|
||||
|
||||
|
Цитата:
Хотя я смотрю что компонент TDBF не поддерживает свойство Filter, но поддерживает обработчик OnFilterRecord - вот на него и нужно цеплять фильтр. А ещё к тому же компонент TDBF не поддерживает Null в полях типа Дата/Время. |
|
#63
|
||||
|
||||
|
Цитата:
|
|
#64
|
||||
|
||||
|
Цитата:
Код:
procedure TForm1.ButtonClick(Sender: TObject); begin FDBF.Filtered := False; FDBF.Filter := 'R069 IS NULL'; FDBF.Filtered := True; end; Код:
procedure TForm1.FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept := not DataSet.Filtered or DataSet.FieldByName('R069').IsNull;
end;Поэтому чтобы отобрать только те записи которые имеют "пустое" значение в поле 'R069' делаем так: Код:
procedure TForm1.FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
Accept := not DataSet.Filtered or (DataSet.FieldByName('R069').AsDateTime = EncodeDate(1900, 1, 1));
end; |
|
#65
|
||||
|
||||
|
Цитата:
И что означает вместо "EncodeDate(..." можно просто подставить константу 2? Последний раз редактировалось spawn-1212, 10.12.2012 в 10:53. |
|
#66
|
||||
|
||||
|
Не получается у меня, даже кнопкой фильтр неправильно работает...
помогите плиз, на работе долбают нужно очеень |
|
#67
|
||||
|
||||
|
Переделал я программку, отказавшись от openDialog? но фильтр всё-равно не могу сделать подскажите пжл как (у меня список, нужно вывести все строки, в которых нет даты в столбце R069 + вывести столбы RFA(фамилия), RIM(имя) при нажатии кнопки1)
Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ADODB, DB, Grids, DBGrids, StdCtrls;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
DBGrid1: TDBGrid;
ADOConnection1: TADOConnection;
ADOTable1: TADOTable;
ADOQuery1: TADOQuery;
ListBox1: TListBox;
ComboBox1: TComboBox;
Label1: TLabel;
Button1: TButton;
procedure ListBox1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
AppFolderPath: String;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var fs:TSearchRec;
begin
Label1.Caption:='Aua?aou aaco';
AppFolderPath:=copy(ExtractFilePath(Application.ExeName),1,length(ExtractFilePath(Application.ExeName)))+'BD';
ComboBox1.ItemIndex:=0;
if FindFirst(AppFolderPath+'\*.dbf', faAnyFile, fs)=0 then
repeat
ListBox1.AddItem(fs.Name,nil);
until FindNext(fs)<>0;
FindClose(fs);
end;
procedure TForm1.ListBox1Click(Sender: TObject);
var
i: Integer;
begin
ADOTable1.Active:= false;
ADOConnection1.Connected:=false;
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source="' +AppFolderPath + '";Extended Properties="DBASE IV;";"';
ADOConnection1.LoginPrompt:=False;
ADOConnection1.Mode:=cmRead;
ADOConnection1.Connected:=True;
DataSource1.DataSet:=ADOTable1;
ComboBox1.Items.Clear;
ADOConnection1.Connected:=True;
ADOTable1.TableName:=ListBox1.Items[ListBox1.ItemIndex];
ADOTable1.Active:=True;
ComboBox1.ItemIndex:=ADOTable1.FieldCount;
for i:= 1 to (ADOTable1.FieldCount - 1) do
//While not IntToStr(ADOTable1.FieldCount) do
begin
ComboBox1.Items.Add(ADOTable1.Fields[i].FieldName);
// ADOQuery1.Next;
end;
DBGrid1.DataSource:=DataSource1;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOTable1.Active:=False;
ADOQuery1.SQL.Text:= 'Select RFA From KADRY_.DBF Where R069 is null';
ADOQuery1.Active:= True;
end;
end.Последний раз редактировалось spawn-1212, 20.12.2012 в 14:35. |