AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird: Simple Abfrage per IBX... O_o
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird: Simple Abfrage per IBX... O_o

Ein Thema von Robert_G · begonnen am 18. Mär 2005 · letzter Beitrag vom 19. Mär 2005
Antwort Antwort
Robert_G
(Gast)

n/a Beiträge
 
#1

Firebird: Simple Abfrage per IBX... O_o

  Alt 18. Mär 2005, 12: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
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Firebird: Simple Abfrage per IBX... O_o

  Alt 19. Mär 2005, 11:31
Hi Robert,

versuch mal folgendes:

Delphi-Quellcode:
procedure TMetaTable.FetchColumns;
var
   ColumnId : Int64;
begin
   fColumns.Clear();

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

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

      ParamByName('MetaTable').AsInt64:=Id;

      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;
IBQuery und IBTable sind nur aus kompatibilitätsgründen implementiert worden!!!!! Die sollen bei einr Umstellung von BDE->IBX zum Einsatz kommen, bis der entsprechende Co
  Mit Zitat antworten Zitat
Lord_Stifterl

Registriert seit: 13. Dez 2002
Ort: Wien
175 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Firebird: Simple Abfrage per IBX... O_o

  Alt 19. Mär 2005, 13:03
Hi,

mir ist schon öfter zu Ohren gekommen, dass man IBX und FB nicht zusammen benutzen soll, da FB und IB schon zu unterschiedlich sind und die IBX sich eher an IB als an FB orientieren. Vielleicht liegt hier einfach das Problem.

LG
Alex
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#4

Re: Firebird: Simple Abfrage per IBX... O_o

  Alt 19. Mär 2005, 13:17
@Lemmy
thx Das war's.
Ich nehme normalerweise die simpelste Zugriffsklasse um unnötigen Overhead zu vermeiden. (Deshalb die Query )
IBX, scheint da wohl anderer Meinung zu sein.
Gibt es da auch eine Klasse, die nicht von TCustomDataSet ableitet?
OOP und DB Awareness passen eh nicht zusammen, da wären diese ganzen Funktionen einfach überflüssig...
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#5

Re: Firebird: Simple Abfrage per IBX... O_o

  Alt 19. Mär 2005, 13:22
Zitat von Robert_G:
...
Ich nehme normalerweise die simpelste Zugriffsklasse um unnötigen Overhead zu vermeiden. (Deshalb die Query )...
Warum willst du dann unbedingt den Kompatibilitäts-Kram für die BDE mitschleppen ? Na ja, siehst ja selber, was dabei rauskommt.
Gruß
Hansa
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#6

Re: Firebird: Simple Abfrage per IBX... O_o

  Alt 19. Mär 2005, 14:01
Komplett OT:
@Hansa
Hast du dir überhaupt durchgelesen, was ich geschrieben habe?
Man, man.... wenn du auch nur halb soviel Ahnung hättest wie du behauptest... Dann könnte man mit deinen Aussagen vielleicht sogar was anfangen.

Ich sage nur abstract. *ROFL*
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.381 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Firebird: Simple Abfrage per IBX... O_o

  Alt 19. Mär 2005, 18:02
Hi Robert,

wenn Du so wenig Overhead wie möglich verwenden willst, dann versuch mal TIBSQL. Das funzt solange Du nur Insert/Delete/Update oder ein Select mit genau einem Rückgabewert ausführen willst. Ansonsten aber immer TIBDataSet. Das verwende ich selbst bei StoredProcedures.

Grüße
Lemmy
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#8

Re: Firebird: Simple Abfrage per IBX... O_o

  Alt 19. Mär 2005, 19:50
Zitat von Robert_G:
Ich sage nur abstract. *ROFL*
ja, so ist das eben. 8) Meine Programme werden in der Praxis gebraucht und müssen stabil laufen. Abstrakte Theorie ist da eben eher wenig gefragt.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz