各位我用ADOQuery 如何获得其中一个字段的类型(如 : 日期形,整形.....)

解决方案 »

  1.   

    if DataType=ftInteger then
      edit1.text:='Integer'
    else if ... then
      edit1.text:='...'
    ...
      

  2.   

    借贴!!!!!呵呵,
    使用ADOTable,s是结果!
      for i:=0 to ADOTable.FieldDefs.Count-1 do
        begin
          s:='Field Index : '+IntToStr(i)+' -- <Name : '+ADOTable.FieldDefs.Items[i].Name+'>  '+
                   '<Size : '+IntToStr(ADOTable.FieldDefs.Items[i].Size)+'>';
          s:=s+'';
          Case ADOTable.FieldDefs.Items[i].DataType of
            ftUnknown     : dt:='Unknown or undetermined';
            ftString      : dt:='Character or string field';
            ftSmallint    : dt:='16-bit integer field';
            ftInteger     : dt:='32-bit integer field';
            ftWord       : dt:='16-bit unsigned integer field';
            ftBoolean     : dt:='Boolean field';
            ftFloat       : dt:='Floating-point numeric field';
            ftCurrency    : dt:='Money field';
            ftBCD         : dt:='Binary-Coded Decimal field that can be converted to Currency type without a loss of precision.';
            ftDate        : dt:='Date field';
            ftTime       : dt:='Time field';
            ftDateTime    : dt:='Date and time field';
            ftBytes       : dt:='Fixed number of bytes (binary storage)';
            ftVarBytes    : dt:='Variable number of bytes (binary storage)';
            ftAutoInc     : dt:='Auto-incrementing 32-bit integer counter field';
            ftBlob       : dt:='Binary Large Object field';
            ftMemo       : dt:='Text memo field';
            ftGraphic     : dt:='Bitmap field';
            ftFmtMemo     : dt:='Formatted text memo field';
            ftParadoxOle  : dt:='Paradox OLE field';
            ftDBaseOle    : dt:='dBASE OLE field';
            ftTypedBinary : dt:='Typed binary field';
            ftCursor      : dt:='Output cursor from an Oracle stored procedure (TParam only)';
            ftFixedChar   : dt:='Fixed character field';
            ftWideString  : dt:='Wide string field';
            ftLargeint    : dt:='Large integer field';
            ftADT       : dt:='Abstract Data Type field';
            ftArray       : dt:='Array field';
            ftReference   : dt:='REF field';
            ftDataSet     : dt:='DataSet field';
            ftOraBlob     : dt:='BLOB fields in Oracle 8 tables';
            ftOraClob     : dt:='CLOB fields in Oracle 8 tables';
            ftVariant     : dt:='Data of unknown or undetermined type';
            ftInterface   : dt:='References to interfaces (IUnknown)';
            ftIDispatch   : dt:='References to IDispatch interfaces';
            ftGuid       : dt:='globally unique identifier (GUID) values';
            ftTimeStamp   : dt:='Date and time field accessed through dbExpress';
            ftFMTBcd      : dt:='Binary-Coded Decimal field that is too large for ftBCD.';
          end;
          s:=s+'  <Type : '+dt+'>';
          info.add(s);
        end;
      

  3.   

    反正就是那几种类型,case一下好了,如上,呵呵
      

  4.   

    var
      i: integer;
      s: string;
    begin
      s := '';
      for i := 0 to query1.fieldcount-1 do
        s := s+'Name:' + query1.fields[i].FieldName+' Type:'+query1.Fields[i].datatype;//<好像也可用fieldtype>
      showmessage(s);
    end;
      

  5.   

    if Dataset.FieldDefs.Items[0].DataType=ftstring then
             Edit2.text:='ftString';
     或 if Dataset.FieldByName(FieldName').DataType=ftstring then
           edit2.text:='ftString';
    來判斷字段的字段类型並顯示.
    字段类型有如下:
    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);
      

  6.   

    if Data.y_ADOQuery.FieldByName('A0201').DataType=ftDateTime then
    出错信息为 没有发现 a0201字段
    但是a0201确实存在而且是DateTime类型,为什么会这样呢?