怎样在程序运行时,用代码动态的创建LOOKUP字段????
解决方案 »
- 怎么用DBNavigator修改由DBgrid显示出来的数据库里的数据?或者有其他方便的方法?急!
- 一个非常简单的问题,关于如何建立function及在程序中使用
- 参数不足,期待是1的错误,请求帮助!
- 怎么设定DBGRID中字段按给定格式显示?
- 怎么让FastReport在显示空(NULL)数字字段时不显示默认的0?
- 什么地方可以DownLoad好的电脑书籍
- 如何处理?
- 送100,请教可在Delphi6中播放PC喇叭的控件,一定给分!
- 我在我的一个软件上用到下载的控件,通过TOOLS/Environment Options的/Labrary/labrary path添加路径,但是总是出现错误,怎么办?
- 取打印机上纸张的大小
- 应该没人能答
- 视图的操作
begin
v_a:=tfield.Create(self);
v_a.FieldKind:=fklookup;
v_a.FieldName:='name'; //字段名稱
v_a.KeyFields:='no'; //索引字段
v_a.LookupDataSet:=table1;//查找的數據集
v_a.LookupKeyFields:='no';//查找的數據集索引
v_a.LookupResultField:='name';//查找的數據集返回值
end;
qry.close;
qry.fields.add(v_a);
qry.open;
我在把LOOKUP字段加到ADOQUERY里的时候,还是有错误,请再给指教一下。
qry.fields.add(v_a);
qry.open;]
其中v_a应该是一个 TField 类型。
begin
qry.close;
v_a:=tfield.Create(self);
v_a.FieldKind:=fklookup;
v_a.FieldName:='name'; //字段名稱
v_a.KeyFields:='no'; //索引字段
v_a.LookupDataSet:=table1;//查找的數據集
v_a.LookupKeyFields:='no';//查找的數據集索引
v_a.LookupResultField:='name';//查找的數據集返回值
qry.fields.add(v_a);
qry.open;
end;
記住table1要打開喲。
如果你對v_a的相關屬性沒有設錯的話﹐絕對不會有錯誤 的。
var Qrytmp:TQuery;
Fieldstr:TStringField;
FieldInt:TIntegerField;
FieldCur:TCurrencyField;
begin
Qrytmp:=QrySrc;
Qrytmp.Close;
Fieldstr:=TStringField.Create(Qrytmp);
Fieldstr.FieldKind:= fkData;//fkCalculated;
Fieldstr.Name:= Qrytmp.Name + Fieldbyname('FldName').Asstring;
Fieldstr.FieldName:= Fieldbyname('FldName').Asstring;
Fieldstr.DisplayLabel:= Fieldbyname('FldCaption').asstring;
Fieldstr.Size:= StrtoInt(Fieldbyname('FldSize').asstring);
Fieldstr.DisplayWidth:= StrtoInt(Fieldbyname('FldSize').asstring);
Fieldstr.Index:=Qrytmp.FieldCount;
Fieldstr.DataSet:=Qrytmp;
end;
用这个方法没有问题,我现在正在使用这个方法。给分吧!
var
t: TStringField;
s: String;
begin
qry1.Close;
t := TStringField.Create(Self);
t.FieldKind := fkLookUp;
t.FieldName := 'zgd';
t.KeyFields := 'itemcode';
t.LookupDataSet := qry2;
t.LookupKeyFields := 'itemcode';
t.LookupResultField := 'itemname';
t.DataSet := qry1;
qry1.Open;
s := qry1.fieldbyname('zgd').AsString;
end;
注意:1、一定要用TStringField
2、一定要用 t.DataSet := qry1, 不能使用 qry1.Fields.Add(t)