首页 > 解决方案 > lazarus DBGrid 查找字段(无创建)

问题描述

我一直在使用 Lazarus 2.x 和 Firebird 3(通过flarerobin),我有两个表:带有外键(promoter_id)和启动器(id,fullname)的上诉。

我想为 DBGrid 创建一个查找字段,其中包含来自数据集上诉的字段属性和来自数据集启动器的查找字段。

因此我得到了以下脚本:

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, DBGrids,Unit3,DB;

type

  { TForm5 }

  TForm5 = class(TForm)
    DBGrid1: TDBGrid;
    procedure FormShow(Sender: TObject);
    procedure showgrid;
    procedure showlookup;
  private

  public

  end;

var
  Form5: TForm5;

implementation

{$R *.lfm}

{ TForm5 }

procedure TForm5.FormShow(Sender: TObject);
begin
 //showlookup;
 showgrid;
 showlookup;
end;

procedure TForm5.showgrid;
begin

 appeals.SQLQuery2.Close;
 appeals.SQLQuery2.SQL.Text:='select * from appeals where datediff(day,cast(''Now'' as date),cast(date_judgement as date))<5 and date_court IS NOT NULL';

 appeals.DBConnection.Connected:=True;
 appeals.SQLTransaction1.Active:=True;
 //appeals.SQLQuery2.Open;

 //appeals.DataSource1.DataSet:=appeals.SQLQuery2;
 //DBGrid1.DataSource:=appeals.DataSource1;

 DBGrid1.Columns.Items[1].Width:=120;
 DBGrid1.Columns.Items[0].Visible:=false;
 DBGrid1.Columns.Items[1].Title.Caption:='Name';
 DBGrid1.Columns.Items[2].Title.Caption:='Date Entry';
 DBGrid1.Columns.Items[3].Title.Caption:='Date Suspension';
 DBGrid1.Columns.Items[4].Title.Caption:='Date Examination';
 DBGrid1.Columns.Items[5].Title.Caption:='Date Final';
 DBGrid1.Columns.Items[6].Title.Caption:='Promoter';

end;

procedure TForm5.showlookup;
begin

 appeals.SQLQuery4.Close;
 appeals.SQLQuery4.SQL.Text:='select id,fullname from promoter';
 //appeals.SQLQuery4.Open;

 DBGrid1.Columns.Items[6].Field.FieldName:='promoter_id';
 DBGrid1.Columns.Items[6].Field.FieldKind:=fkLookup;
 DBGrid1.Columns.Items[6].Field.KeyFields:='promoter_id';
 DBGrid1.Columns.Items[6].Field.LookupDataSet:= appeals.SQLQuery4;
 DBGrid1.Columns.Items[6].Field.LookupKeyFields:='id';
 DBGrid1.Columns.Items[6].Field.LookupResultField:='fullname';
 DBGrid1.Columns.Items[6].Field.DataSet:=appeals.SQLQuery2;

 appeals.SQLQuery4.Open;
 appeals.SQLQuery2.Open;

 appeals.DataSource1.DataSet:=appeals.SQLQuery2;
 DBGrid1.DataSource:=appeals.DataSource1;
end;

end.

一旦我运行它,我就会收到以下错误(附加)或文本描述ElistError:ListIndex (1) out of bounds

在此处输入图像描述

此外,我通过首先运行并打开查询来使用我的代码,但在促销列网格中没有显示查找字段(只有数字,没有文本描述)。不幸的是,在 Lazarus IDE 中没有创建查找字段或计算的参考书目或代码示例。

任何帮助对我来说都很方便!

问候

标签: lazarus

解决方案


推荐阅读