怎样返回一个空表的字段类型
我用FieldByName('Name').DataType
由于是基于Field的方法,所以如果没有记录就不能反回Field也就不能反回DataType
我该怎么解决??谢谢!!

解决方案 »

  1.   

    if table1.Fields[3].DataType=ftinteger then showmessage('123');
                                 ftstring
    更多类型参照D6的HELP
      

  2.   

    var
      strDataType: string;
    begin
      for i := 1 to ClientDataset.Fields.Count 
      begin
        strDataType := ClientDataSet.Fields[i].DataType
        //DoYourSelf
      end;
    end;
      

  3.   

    try
        with Dm.ADOQry do
        begin
          close;
          sql.Clear;
          sql.Add('sp_columns ' + cbTName.Text);
          Open;
          lvFields.Clear;
          while not eof do
          begin
            lTmp := lvFields.Items.Add;
            lTmp.Caption := FieldByName('Column_name').AsString;
            lTmp.SubItems.Add(FieldByName('Type_Name').AsString);
            Next;
          end;
        end;
      except
      end;
      

  4.   

    http://expert.csdn.net/Expert/topic/2106/2106106.xml?temp=.3473169
    帮帮忙
      

  5.   

    procedure TFDemo.Button2Click(Sender: TObject);
    var
      YourFieldType:string;
      ATableName:string;
    begin
          ATableName:='T_B_Unit';
          adoquery1.SQL.text := 'select FieldName=left(a.name,255) ,'
          +'       DataTypeName=left(b.name,255),'
          +'       DataLen=a.length,'
          +'       CanNull=columnproperty(object_id("'+ATableName+'"),a.name,"AllowsNull"),'
          +'       DefaultValue=(select left(text,20) from syscomments where  id= a.cdefault) '
          +'    from syscolumns a,systypes b '
          +'    where a.id=object_id("'+ATableName+'") '
          +'      and a.xtype=b.xtype'
          +'    order by a.colid';
          showmessage(adoquery1.sql.Text);
        adoquery1.open ;
        YourFieldType:= trim(adoquery1.fieldbyname('DataTypeName').asstring) ;