急!创建LOOKUP的问题 怎样在程序运行时,用代码动态的创建LOOKUP字段???? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var v_a:tfield;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.close;qry.fields.add(v_a);qry.open;]其中v_a应该是一个 TField 类型。 var 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的相關屬性沒有設錯的話﹐絕對不會有錯誤 的。 我确实是按上面写的,提示的错误:qry: field 'name' cannot be a calculated or lookup field. Procedure GetCalcField(QrySrc:TQuery;ModeType:String;SelfCalcList:tStringList);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) 如何将Pbyte类型中的图片存入bitmap中。 有关delphi打印的问题 打印问题。 webbrowse中显示依次多个word文件时,如何判断word已经被调用(防止启动多个word进程)? 如果dbgrid中的数据是动态生成的,怎么实现流水号呢? 能不能返回子串在字符串中的位置 有关dll的问题,能不能在dll中利用ado对数据库操作?在线等,,,请看代码, 2000下开发的程序在98或95上使用的问题 VC多线程调用Delphi Dll 问题 如何让执行SQL语句时的光标消失? 应该没人能答 视图的操作
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)