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.