搞了半天都没搞出来,如何在运行时为AdoQuery上创建Lookup字段呀?(100分)

  • 主题发起人 主题发起人 lncd
  • 开始时间 开始时间
L

lncd

Unregistered / Unconfirmed
GUEST, unregistred user!
我也知道这样不对,可怎么才对呢?
procedure TForm1.Button1Click(Sender: TObject);
var
aa:TStringField;
begin
aa:=TStringField.Create(Self);
aa.Name:='rrr';
aa.FieldName:='dddd';
aa.FieldKind:=fkLookup;
aa.LookupDataSet:=AdoQuery2;
aa.KeyFields:='divid';
aa.DisplayLabel:='XXXXXXXXX';
aa.DisplayWidth:=100;
aa.LookupKeyFields:='divid';
aa.LookupResultField:='divname';

AdoQuery1.Fields.Add(aa);
AdoQuery1.open;
end;
 
请参考这个问题
http://www.delphibbs.com/delphibbs/dispq.asp?lid=478936
再设定查找字段的属性就可。
 
以前做的一个例子,看对你有没有帮助
Dts_Query.DataSet:=Dtm.TblWage;
Dtm.TblEmploy.Open;
With Dtm.TblWage do
begin
with FieldDefs do
begin
Clear;
with AddFieldDef do
begin
Name := 'EmployID';
DataType := ftWideString;
Size:=4;
CreateField(Self,nil,'EmployID',False); //添加EmployID字段
end;
with AddFieldDef do
begin
Name := 'Wage';
DataType := ftFloat;
CreateField(Self,nil,'Wage',False); //添加Wage字段
end;
With AddFieldDef do
begin
Name:='Name';
DataType:=ftString;
Size:=20;
CreateField(Self,nil,'Name',False); //添加Name字段,LookUp类型
end;
end;

FieldByName('Name').FieldKind:=fkLookup;
FieldByName('Name').KeyFields:='EmployID';
FieldByName('Name').LookupDataSet:=Dtm.TblEmploy;
FieldByName('Name').LookupKeyFields:='EmployID';
FieldByName('Name').LookupResultField:='Name';
//设置'Name'字段为LookUp类型,其值由Employ与Wage两个表EmployID字段关联,返回Employ表的Name字段的值
Open;
end;
 
已经搞定,谢谢。
 
后退
顶部