Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Primärindex von Access Tabelle herausfinden?

  Alt 22. Dez 2005, 12:46
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
  Mit Zitat antworten Zitat