AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi TADOQuery Primary Key auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

TADOQuery Primary Key auslesen

Ein Thema von Ducksoul · begonnen am 9. Feb 2010 · letzter Beitrag vom 21. Mär 2010
 
Ducksoul

Registriert seit: 19. Apr 2006
Ort: Ilmenau
87 Beiträge
 
RAD-Studio 2009 Pro
 
#10

Re: TADOQuery Primary Key auslesen

  Alt 11. Feb 2010, 11:36
Hallo,

deine Hilfe hat mich schon um einiges weitergebracht.
Inzwischen habe ich folgende zwei Funktionen:

Delphi-Quellcode:
function Timport_form.RetrievePrimaryKeys : String;
var
  Filter: OLEVariant;
  DS: TADODataSet;
  i: Integer;
begin
  result := '';
  Filter := VarArrayCreate([0, 2], varVariant);
  Filter[2] := 'Stammdata'; // Tabellenname der zu prüfenden Tabelle

  try
    DS := TADODataSet.Create(nil);
    DS.Connection := adocon_ex;
    adocon_ex.OpenSchema(siPrimaryKeys, Filter, EmptyParam, DS);
    DS.Active := True;

    with DS do
      for i := 0 to Pred(Fields.Count) do
      begin
          if (Fields[i].DisplayName = 'COLUMN_NAME')
          and (Fields[i].DisplayText <> '') then
          result := '#' + Fields[i].DisplayText; // übergibt PrimaryKey
      end;
  finally
    DS.Free;
  end;
end;

Delphi-Quellcode:
function Timport_form.RetrieveForeignKeys : String;
var
  Filter: OLEVariant;
  DS: TADODataSet;
  i: Integer;
begin
  result := '';
  Filter := VarArrayCreate([0, 2], varVariant);
  Filter[2] := 'Stammdata'; // Tabellenname der zu prüfenden Tabelle

  try
    DS := TADODataSet.Create(nil);
    DS.Connection := adocon_ex;
    adocon_ex.OpenSchema(siForeignKeys, Filter, EmptyParam, DS);
    DS.Active := True;

    with DS do
      for i := 0 to Pred(Fields.Count) do
      begin
          if (Fields[i].DisplayName = 'PK_COLUMN_NAME')
          and (Fields[i].DisplayText <> '') then
            result := '#' + Fields[i].DisplayText + ', '; // übergibt PrimaryKey, falls gleichzeit FK
          if (Fields[i].DisplayName = 'FK_TABLE_NAME')
          and (Fields[i].DisplayText <> '') then
            result := result + Fields[i].DisplayText + ', '; // übergibt Tabellennamen FK
          if (Fields[i].DisplayName = 'FK_COLUMN_NAME')
          and (Fields[i].DisplayText <> '') then
            result := result + Fields[i].DisplayText + ', '; // übergibt Spalte FK
          end;
      result := Copy(result, 0, Length(result)-2);
  finally
    DS.Free;
  end;
end;

Ich hoffe dass das jetzt alles soweit klappt.

Gruß
Franz
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:53 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-2025 by Thomas Breitkreuz