Registriert seit: 19. Apr 2006
Ort: Ilmenau
87 Beiträge
RAD-Studio 2009 Pro
|
Re: TADOQuery Primary Key auslesen
11. Feb 2010, 12: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
|
|
Zitat
|