在程序运行时,动态添加ado字段问题,相当于在设计时的 add all fields 要怎么弄呀

解决方案 »

  1.   

    看不懂,请说具体一点是表格或控件读取ADO的字段还是啥?如果是表格那类,像DBGRID,只要DATASOURCE连上后,列放空就行,查询时,自动就跳出ADO的所有的列,不管列的数量有没变化。
    要不就是先用控件的ADDFIELD,先看COLCOUNT是多少,然后加进去
      

  2.   

    不是很理解大约猜测你的意思是运行的时候就直接创建连接ado里面的东西
    可以这样。。
    procedure TForm1.FormCreate(Sender: TObject);
    begin
         //ado.... 
    end
      

  3.   

    不用添加open之后列就存在了,可以用了
      

  4.   

    Open的时候会自动获取列信息的
      

  5.   

    t:TField;   
      begin   
          t   :=   TStringField.Create(Self);   
          t.FieldName   :=   'time';   
          AdoQuery1.Fields.Add(t);   
      end   
        
      TField查帮助查其他类型TDateTimeField 、TStringField等等
      

  6.   


        data.ADOQuery1.Close;
        data.ADOQuery1.Connection:=data.ADOConnection1;
        data.ADOQuery1.SQL.Clear;
        data.ADOQuery1.SQL.Add('select * from Tzhk_sjdy_dsf');
        data.ADOQuery1.Open;
        i:=data.ADOQuery1.FieldList.IndexOf('zt');
        if i<0 then
        begin
          data.ADOQuery1.Close;
          data.ADOQuery1.Connection:=data.ADOConnection1;
          data.ADOQuery1.SQL.Clear;
          data.ADOQuery1.SQL.Add('alter table Tzhk_sjdy_dsf add zt int null');
          data.ADOQuery1.ExecSQL;
        end;
      

  7.   

    多谢各位的热心,
    我知道打开数据集后,字段都会有,但是因为我用了cxfiltercontrol这个控件,如果没有添加字段进去,返回的filtertxt中就不会正确(只有条件没有条件前面的字段,如正确的应该是(ddate='2009-5-1')没有字段后就变成了(='2009-5-1')),要添加才会有正大正确的过滤条件结果。但我的这个ado查询是会变的。结果集字段不一样。所以我想动态添加再动态删除来实现。
      

  8.   

    我用了
              Field:=TField.Create(self);
            Field.FieldKind:=fkCalculated;
                    Field.FieldName:='hj';
            ADOQuery2.Fields.Add(field);
    为什么程序会报错?