首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

请问关于FieldDefs

2013-06-25 
请教关于FieldDefs第一次查询的时候,是可以查询得出来的,第二次按“查询”,会报这个错误Duplicate field nam

请教关于FieldDefs
第一次查询的时候,是可以查询得出来的,第二次按“查询”,会报这个错误Duplicate field name 'F_sampleid'.出错在这段代码,    FieldDefs.update;
    for i:=0 to FieldDefs.Count-1 do
    begin
      FieldDefs.Items[i].CreateField(adoquery1);
    end;
请问应该怎么办呢??
 with adoquery1 do
  begin
  close;
  SQL.Clear;
  if not (s ='') then
  begin
    SQL.Add('select * from rwfp where   ' );
    SQL.Add( s +'order by isnull(f_Urgent,6),f_todate desc');
  end
  else
  begin
      SQL.Add('select *  from rwfp ');
  end;
    
    FieldDefs.update;
    for i:=0 to FieldDefs.Count-1 do
    begin
      FieldDefs.Items[i].CreateField(adoquery1);
    end;

    field1:=TstringField.Create(adoquery1);
    with field1 do
    begin
      FieldName:='xm';
      DataSet:=adoquery1;
      DisplayLabel:='项目';
      FieldKind:=fklookup;
    end;

    with adoquery2 do
    begin
      Close;
      SQL.Add('select id,xmmc from a_devolve_xm a where exists(select 1 from a_gr_rwfp where xmid=a.id)');
      Open;
    end;

    with field1 do
    begin
      KeyFields:='xmid';
      LookupDataSet:=adoquery2;
      LookupCache:=true;
      LookupKeyFields:='id';
      LookupResultField:='xmmc';
    end ;
end; fielddefs 动态创建
[解决办法]
提示字段重复了,每次创建的时候先清除下试下:

with adoquery1 do
  begin
  close;
  SQL.Clear;
  if not (s ='') then
  begin
    SQL.Add('select * from rwfp where   ' );
    SQL.Add( s +'order by isnull(f_Urgent,6),f_todate desc');
  end
  else
  begin
      SQL.Add('select *  from rwfp ');
  end;
    
    FieldDefs.update;
    ADOQuery1.FieldDefs.Clear;


    for i:=0 to FieldDefs.Count-1 do
    begin
      FieldDefs.Items[i].CreateField(adoquery1);
    end;

热点排行