Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Primärindex von Access Tabelle herausfinden? (https://www.delphipraxis.net/59438-primaerindex-von-access-tabelle-herausfinden.html)

dragi 22. Dez 2005 11:53

Datenbank: Access • Version: 2003 • Zugriff über: ADO

Primärindex von Access Tabelle herausfinden?
 
Hallo,

ist es irgendwie möglich, den Primärindex einer Access Tabelle per code herauszufinden? Gibt es evtl. sogar eine Möglichkeit dies per SQL Statement geliefert zu bekommen?

Vielen Dank

Dragi

marabu 22. Dez 2005 12:46

Re: Primärindex von Access Tabelle herausfinden?
 
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

dragi 22. Dez 2005 12:48

Re: Primärindex von Access Tabelle herausfinden?
 
Vielen Dank,

das werde ich direkt mal auprobieren! :)

Gruß

Dragi


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz