用Delphi操作,
如何判断Access数据库的表中的字段是否存在索引?

解决方案 »

  1.   


    TCustomADODataSet.IndexFieldCount
    可以判有多少索引,然后用
    TCustomADODataSet.IndexFields 0..IndexFieldCount-1得到索引的字段
      

  2.   

    使用这个函数可以获得Access索引,原帖地址:http://hi.baidu.com/sqldebug/blog/item/a7a7a41acc98060d34fa4127.html,供你参考procedure GetIndexName(AIndexs: TStrings; const ATable: string; Connection: TADOConnection);
    var
    ADODataSet: TADODataSet;
    FieldTable, FieldIndex, FieldColumn, FieldPrimary, FieldUnique: TField;
    sText: string;
    begin
    ADODataSet := TADODataSet.Create(nil);
    try
        Connection.OpenSchema(siIndexes, EmptyParam, EmptyParam, ADODataSet);
        FieldTable := ADODataSet.FindField('TABLE_NAME');
        FieldIndex := ADODataSet.FindField('INDEX_NAME');
        FieldColumn := ADODataSet.FindField('COLUMN_NAME');
        FieldPrimary := ADODataSet.FindField('PRIMARY_KEY');
        FieldUnique := ADODataSet.FindField('UNIQUE');
        ADODataSet.First;
        while not ADODataSet.Eof do
        begin
          if SameText(FieldTable.AsString, ATable) then
          begin
            if FieldPrimary.AsBoolean then
              sText := 'PrimaryKey'
            else if FieldUnique.AsBoolean then
              sText := 'Unique'
            else
              sText := '';
            if sText <> '' then
              sText := Format('%s (%s, %s)', [FieldIndex.AsString, FieldColumn.AsString, sText])
            else
              sText := Format('%s (%s)', [FieldIndex.AsString, FieldColumn.AsString]);
            AIndexs.Add(sText);
          end;
          ADODataSet.Next;
        end;
    finally
        ADODataSet.Free;
    end;
    end;
      

  3.   

    UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP