Hallo Dragi,
du kannst den Primärindex einer Tabelle über die
ADO Extensions (ADOX) ermitteln. Du erhältst dabei den Namen, die beteiligten Attribute und einiges mehr. Die
ADO Extensions musst du natürlich vorher importieren (Komponente |
ActiveX importieren...).
Delphi-Quellcode:
uses
ADOX;
// getippt und nicht ungetestet
function GetTable(cat: TADOCatalog; tbl: string): _Table;
var
i: integer;
a: Tables;
begin
a := cat.DefaultInterface.Tables;
for i := 0 to Pred(a.Count) do
if CompareText(a.item[i].Name, tbl) = 0 then
begin
Result := a.item[i];
Exit;
end;
Result := nil;
end;
function GetIndex(t: _Table; idx: string): _Index;
var
i: integer;
a: Indexes;
begin
a := t.Indexes;
for i := 0 to Pred(a.Count) do
if CompareText(a.item[i].Name, idx) = 0 then
begin
Result := a.item[i];
Exit;
end;
Result := nil;
end;
procedure TDemoForm.QueryIndex(tbl, idx: string);
var
t: _Table;
x: _Index;
begin
t := GetTable(AdoCatalog, tblName);
if Assigned(t) then
begin
x := GetIndex(t, idx);
if Assigned(x) then
if x.PrimaryIndex
then ShowMessage('is primary index')
else ShowMessage('is secondary index');
end;
end;
Grüße vom marabu