lazarus - 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 中没有创建查找字段或计算的参考书目或代码示例。
任何帮助对我来说都很方便!
问候
解决方案
推荐阅读
- java - 如何将侧输入/额外输入传递给 JdbcIO RowMapper Java
- jquery - 如何ajax请求仅每3分钟更改一次的图像src?
- reactjs - 酶无法识别 lodash.flowright
- sql - 此 SQL 查询如何返回具有相同 id_product 的结果?
- ssl-certificate - http(80)到https(443)ssl重定向在haproxy中不起作用?
- go - 访问没有 http.Request 的上下文
- python - Docker python请求导致DH KEY TOO SMALL错误
- javascript - JS非阻塞打印
- javascript - 如何检查一个单词在 JSON 数组中出现的次数
- reactjs - 如何使用 React Hooks 在第一次渲染时加载带有道具的子组件