Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#1

XE7 FireDac TFDConnection.GetTableNames auf Firebird = abstract error

  Alt 30. Dez 2014, 07:24
Datenbank: Firebird • Version: 2.5 • Zugriff über: FireDac
Moin allerseits

Ich will mein IbDac zurück

Seit ein paar Tagen arbeite ich nun remote an einem Rechner im Ruhrgebiet, bis der Programmierer Mitte Januar aus'm Urlaub zurück ist. Im Verlauf des Projekts muß ich alle Tabellen zahlreicher Datenbanken verschiedenster DBMS auslesen, analysieren und die so gewonnenen Daten sichern, was ich im Falle einer Firebird-DB mit TFDConnection.GetTableNames versucht habe:

Delphi-Quellcode:
Function TInfoFireBird.Tabellen: Boolean;
Var
  Liste : TStrings;

begin
  Liste := TStrings.Create;
  Try
    Try
      FBCon.GetTableNames('','','',Liste,[osMy],[tkTable]);
Das liefert mir leider eine Fehlermeldung zurück, obwohl die Syntax korrekt zu sein scheint (kein Compilerfehler):
Im Projekt ****.exe ist eine Exception der Klasse EAbstractError mit der Meldung 'Abstrakter Fehler' aufgetreten.

Die drei leeren Strings sollen "normalerweise" beinhalten:
ACatalogName, ASchemaName beschränken Tabellennamen auf den Katalog und das Schema.
APattern ist das LIKE-Muster zum Filtern der Tabellennamen.


Wenn ich als APattern das Like-Zeichen % eintrage, kommt dieselbe Fehlermeldung:
FBCon.GetTableNames('','','%',Liste,[osMy],[tkTable]); Katalog- und Schemanamen gibt es ja bei Firebird nicht, das sind glaub ich Begriffe aus MySQL bzw. MsSQL

Falls ich den Rechner dort zum Absturz bringe, muß ich den Nachbarn anrufen, der die Kiste dann neu startet
Das muß ich natürlich unter allen Umständen vermeiden, ist ja quasi eine Bewährungsprobe


Die Verbindungsfunktion sieht so aus:
Delphi-Quellcode:
Function TInfoFireBird.Verbinden: Boolean;
begin
  Try
    FBCon.Connected := False;
    FBCon.Params.Clear;
    FBCon.Params.Append('DriverID=FB');
    FBCon.Params.Append('CharacterSet=UTF8');
    FBCon.Params.Append('Database=' + DateiName);
    FBCon.Params.Append('User_Name=' + DBI.DbUser);
    FBCon.Params.Append('Password=' + DBI.DbPass);
    FBCon.Params.Append('ExtendedMetadata=True');
    FBCon.DriverName := 'FB';
    FBCon.Connected := True;
    Result := True;
  Except
    on e:exception Do
    Begin
      Result := False;
      Fehlertext := 'Fehler bei Verbindung mit "' + DateiName + '": ' + e.Message;
    End;
  End;
end;
In der Hilfe ist ein Fehler: Die Syntax der Methode wird mit drei Strings als Parameter dargestellt, unten im Beispiel werden jedoch vier leere Strings als Parameter übergeben. Drei sind aber richtig, bei vieren kommt ein Compilerfehler.

Geändert von Perlsau (30. Dez 2014 um 07:31 Uhr)
  Mit Zitat antworten Zitat