Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Primärschlüssel per BDE bestimmen (https://www.delphipraxis.net/62353-primaerschluessel-per-bde-bestimmen.html)

Foo316 3. Feb 2006 11:15

Datenbank: Firebird • Version: 1.5 • Zugriff über: BDE

Primärschlüssel per BDE bestimmen
 
Hallo,
ich bestimme mit der unteren Funktion den Primärschlüssel von Tabellen in einer Firebird-Datenbank.

Delphi-Quellcode:
procedure GetPrimaryKey();
begin
   Check(DbiOpenIndexList(FDatabase.Handle,PChar(TableName),nil,hCur));
   try
      while (DbiGetNextRecord(hCur,dbiNoLock,@idx,nil) = DBIERR_NONE) do begin
         if idx.bPrimary then begin
            // mache was mit dem Primärindex
         end;
      end;
   finally
      Check( DbiCloseCursor(hCur) );
   end;
end;

Es funktioniert auch grundsätzlich aber nicht bei allen Tabellen.
Hat jemand einen Tipp woran es liegen könnte?

[edit=alcaeus]Delphi-Tags eingefuegt. Bitte in Zukunft selbst machen. Danke :) Mfg, alcaeus[/edit]

Foo316 3. Feb 2006 15:09

Re: Primärschlüssel per BDE bestimmen
 
[edit=alcaeus]Delphi-Tags eingefuegt. Bitte in Zukunft selbst machen. Danke :) Mfg, alcaeus[/edit][/quote]

Sorry und Danke.

hab selbst was rausgefunden.
Sieht nach einem BDE-Problem aus :-(

Scheinbar liegt es daran, das die BDE die Primärschlüssel daran erkennt, dass der Indexname, den der Primärschlüssel nutzt (nicht der Name des Primärschlüssel), mit
SQL-Code:
RDB$PRIMARY...
beginnt.
Dieser ist in der Systemtabelle
SQL-Code:
RDB$RELATION_CONSTRAINTS
in der Spalte
SQL-Code:
RDB$INDEX_NAME
zu finden.

Bei den Tabellen zu den ich keinen Primärschlüssel bekomme, ist nämlich der Indexname gleich dem Primärschlüsselnamen!

Schade. Muß ich wohl die Systemtabellen bemühen, um den Primärschlüssel zu bestimmen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:11 Uhr.

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