如何判断Access数据库的表中的字段是否存在索引 用Delphi操作,如何判断Access数据库的表中的字段是否存在索引? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用TCustomADODataSet.IndexFieldCount可以判有多少索引,然后用TCustomADODataSet.IndexFields 0..IndexFieldCount-1得到索引的字段 使用这个函数可以获得Access索引,原帖地址:http://hi.baidu.com/sqldebug/blog/item/a7a7a41acc98060d34fa4127.html,供你参考procedure GetIndexName(AIndexs: TStrings; const ATable: string; Connection: TADOConnection);varADODataSet: TADODataSet;FieldTable, FieldIndex, FieldColumn, FieldPrimary, FieldUnique: TField;sText: string;beginADODataSet := 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; UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP xe 中如何定义过程或函数参数的类型为真正的pchar? 同一个事件,如何控制其是否可用? 如何将几个应用程序的报表合并成一个文件? 这个问题如何实现啊?? toolbutton如何得到焦点 如何自动获取本机端口号,使端口显示在一个Combobox中! dbgrid问题,答对后立即给分,决不赊欠 一个关于事件共享的问题 delphi编写软件注册问题 如何将字符转换成ascii 猴王问题的公式分析 as如何使用
TCustomADODataSet.IndexFieldCount
可以判有多少索引,然后用
TCustomADODataSet.IndexFields 0..IndexFieldCount-1得到索引的字段
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;