怎样获得ACCESS数据库中表的字段类型!解决后马上给分!

解决方案 »

  1.   

    不使用Table控件,我用的是Query,有办法吗?
      

  2.   

    这样也行:query1.fieldByName('x').DataType;
    TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord,
        ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime,
        ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo,
        ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString,
        ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob,
        ftVariant, ftInterface, ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd);
      

  3.   

    uses TypInfo;
    var
          vStr : String;
    begin
          vStr := GetEnumName(TypeInfo(TFieldType), Ord(ADOTable1.Fields[0].DataType));
          ShowMessage(vStr);
    end;
      

  4.   

    还有,啄木鸟和我说得其实是异曲同工,但是有几个问题需要指出:
    一:FieldByName和FieldByValue都是既可以表示简单字段,也可一表示一个对象字段确定的子字段,或者是AggFields属性中列出的Aggregated字段,应用比较广
    二:Fields属性只能获得非聚集类型。
      

  5.   

    一,wjsfr(令狐葱)大哥说的TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord,
        ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime,
        ftBytes, ftVarBytes, ftAutoInc, ftBlob, ftMemo, ftGraphic, ftFmtMemo,
        ftParadoxOle, ftDBaseOle, ftTypedBinary, ftCursor, ftFixedChar, ftWideString,
        ftLargeint, ftADT, ftArray, ftReference, ftDataSet, ftOraBlob, ftOraClob,
        ftVariant, ftInterface, ftIDispatch, ftGuid, ftTimeStamp, ftFMTBcd);
    是不是DELPHI自带的?
    二, foilsman(刀仔) 大哥说的uses TypInfo;其中TypInfo也是Delphi有的吧?
    三,如果是SQLServer数据库呢,我查找SQLServer数据库表的字段属性是从系统表中搜索出来的,这样和上面的方法得到的字段类型是一样的,但是字段类型名称不一样,例如:SQLServer中字段类型是Int,而用上面方法得到的就是ftInteger,是这样的吗?