Einzelnen Beitrag anzeigen

Ducksoul

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

Re: TADOQuery Primary Key auslesen

  Alt 15. Feb 2010, 13:32
Hallo,
ich möchte nochmal eine überarbeitete Version der Funktionen einstellen, da oben genannte nicht zu 100% funktioniert haben.

Delphi-Quellcode:
(* Primärschlüssel auslesen                                                   *)
function Timport_form.GetPrimaryKeys : String;
var
  Filter: OLEVariant;
  DS: TADODataSet;
  Field: TField;
begin
  result := '';
  Filter := VarArrayOf([NULL, NULL, Table]);
  DS := TADODataSet.Create(nil);
  try
    DS.Connection := dbcon;
    dbcon.OpenSchema(siPrimaryKeys, Filter, EmptyParam, DS);

    Field := DS.FindField('COLUMN_NAME');
    DS.First;

    while not DS.EOF do
    begin
      result := result + '#' + Field.AsString + ', ';
      DS.Next;
    end;
    result := Copy(result, 0, Length(result)-2);
  finally
    DS.Free;
  end;
end;

Delphi-Quellcode:
(* Fremdschlüssel auslesen                                                    *)
function Timport_form.GetForeignKeys : String;
var
  Filter: OLEVariant;
  DS: TADODataSet;
  fTable1, fTable2, fColumn1, fFKName: TField;
  i: integer;
begin
  result := '';
  DS := TADODataSet.Create(nil);

  try
    DS.Connection := dbcon;
    dbcon.OpenSchema(siForeignKeys , EmptyParam, EmptyParam, DS);
    fTable1 := DS.FindField('PK_TABLE_NAME');
    fColumn1 := DS.FindField('PK_COLUMN_NAME');
    fTable2 := DS.FindField('FK_TABLE_NAME');
    fFKName := DS.FindField('FK_NAME');

    DS.First;
    while not DS.Eof do
    begin
      if SameText(fTable1.AsString, Table) then
      begin
        result := result + '~' + fFKName.AsString + ', ' +
          fColumn1.AsString + ', ' + fTable2.AsString + ', ';
      end;
      DS.Next;
    end;
      result := Copy(result, 0, Length(result)-2);
  finally
    DS.Free;
  end;
end;

Diese beiden Funktionen funktionieren bis auf eine Kleinigkeit ausgezeichnet: Mir werden nur die Fremdschlüssel angezeigt, von denen aus eine Beziehung referenziert wird. Durchsuche ich eine Tabelle, auf die referenziert wird, dann liefert die Funktion GetForeignKeys kein Ergebnis. Jemand ne Ahnung, wie ich auch die importierten Keys bekomme?


Gruß
Franz
  Mit Zitat antworten Zitat