Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#1

Firebird: Simple Abfrage per IBX... O_o

  Alt 18. Mär 2005, 11:10
Datenbank: FireBird • Version: 1.5 • Zugriff über: IBX :(
Ich muss gerade eine kleine App in Delphi32 bauen (einem 200 Jahre alten NT4 Server sei Dank. ).
Da ich dort nur in einer Cytrix session laufe dachte ich, ich nehme mir eine kleine Firebird und eine Echse mit, die anhand der kleinen DB und der darin enthaltenen Meta Daten SQL Statements absetzt, usw...

Schön und gut... Nur scheitere ich schon bei den simpelsten Dingen.

Mit dem Firebird Data provider für .Net funktioniert zum BLeistift das problemlos:
Code:
...
   IDbCommand someCommand = someConnection.CreateCommand();
   someCommand.Connection   = someConnection;
   someCommand.CommandType = CommandType.Text;
   someCommand.CommandText = "SELECT Id FROM MetaColumns WHERE MetaTable = @MetaTable";

   IDbDataParameter metaTable = someCommand.CreateParameter();
   metaTable.ParameterName = "@MetaTable";
   metaTable.DbType= DbType.Int64;
   metaTable.Value = Id;

   someCommand.Parameters.Add(metaTable);
   IDbDataReader = someCommand .ExecuteReader();
...
Das Äquvalent unter Delphi sollte eigentlich so aussehen (ich habe hier das drumrum mitgepostet...):
Delphi-Quellcode:
procedure TMetaTable.FetchColumns;
var
   ColumnId : Int64;
begin
   fColumns.Clear();

   with TIBQuery.Create(nil) do
   try
      Database := TMetaDatabase.Instance;
      Transaction := TIBTransaction.Create(nil);
      Transaction.DefaultDatabase := Database;

      with Sql do
      begin
         Add('SELECT Id');
         Add('FROM MetaColumns');
         Add('WHERE MetaTable = :MetaTable');
      end;

      ParamCheck := True;

      with ParamByName('MetaTable') do
      begin
         DataType := ftLargeInt;
         Value := Id;
      end;

      if not Prepared then
         Prepare();

      Open(); // <--- Hier zickt er rum

      while not Eof do
      begin
         ColumnId:= Fields[0].AsInteger;
         fColumns.Add(TMetaColumn.Create(ColumnId));
         Next();
      end;

   finally
      Free();
   end;
end;
Er sagt mir dabei aber nur "unsupported feature".
Das ganze funktioniert problemlos, wenn ich es im Designer in eine Query packen würde!
Aber eine olle Query auf eine Form ist natürlich nicht drin.

Ich habe es auch schon mit einer selectable procedure probiert -> ebenfalls Fehlanzeige.
Bin ich mittlerweile zu blöd für Delphi32?
Ist euch das schonmal untergekommen?
Ist das ein Kompatibilitätsproblem IBX <> FB?

Ich hoffe mal, dass ich einfach zu blöd bin.
  Mit Zitat antworten Zitat