Hi zusammen
Das hier ist eine der Proceduren, die ablaufen, wenn ein Bild in meine
DB aufgenommen werden soll. Eingeführt wurde sie unter DBExpress; Jetzt, unter Firedac, hab ich bis auf das beteiligte
Query nichts geändert. Auch in den andern Proceduren nicht. Und es tut genau, was es soll.
In den letzten Tagen habe ich wohl beinahe "jeden Stein umgedreht" nach der Suche, wie Firedac mit Abfrageparametern umgeht. Die entsprechenden Codebeispiele von Embarcadero arbeiten alle mit "ParamsByName.(..).add." ohne die Parameter (oder wenigstens die Parameter-Collection) vorher zu erzeugen.
Auch in den Sourcen habe ich keinen Hinweis darauf gefunden, dass und wo die Params-Collection erzeugt werden. Und da selbst Delphi es nicht schafft, mit nichterzeugten Objekten zu arbeiten (
):
- Wieso das untenstehende funktioniert, kannn ich mir mit gutem Willen ja noch vorstellen
- Wenn unter Firedac die Parameter-Items (CollectionItems) nur hinzugefügt werden müssen,
- warum funktioniert meinn Zeugs, obwohl ich 3 zusätzliche Parameter erzeuge?
Delphi-Quellcode:
procedure TFDMySQLDml.kategorien_bildDescribeTabelleInsert(BildDescribeLastID: Integer;bildtabelle_idbild: Integer);
var kategorien_tabelle_Kath_ID, BildDescribeTabelle_BilddesribeID,
BildDescribeTabelle_Bildtabelle_idBild: Integer;
SQLString: String;
begin
kategorien_tabelle_Kath_ID := ApplicationManager.CategoryKey;
BildDescribeTabelle_BilddesribeID := BildDescribeLastID;
BildDescribeTabelle_Bildtabelle_idBild := bildtabelle_idbild;
SQLString := 'Insert Into kategorien_tabelle_has_bildDescribeTabelle'+
'(kategorien_tabelle_Kath_ID,'+
'BildDescribeTabelle_BilddesribeID,' +
'BildDescribeTabelle_Bildtabelle_idBild) ' +
'Values (:kategorien_tabelle_Kath_ID,' +
':BildDescribeTabelle_BilddesribeID,' +
':BildDescribeTabelle_Bildtabelle_idBild)';
if (FDQueryMain.Active) then
FDQueryMain.Active := False;
FDQueryMain.SQL.Text := SQLString;
FDQueryMain.Params.CreateParam(ftinteger, 'kategorien_tabelle_Kath_ID', ptInput);
FDQueryMain.Params.CreateParam(ftInteger, 'BildDescribeTabelle_BilddesribeID', ptInput);
FDQueryMain.Params.CreateParam(ftInteger, 'BildDescribeTabelle_Bildtabelle_idBild', ptInput);
FDQueryMain.Params[0].AsInteger := kategorien_tabelle_Kath_ID;
FDQueryMain.Params[1].AsInteger := BildDescribeTabelle_BilddesribeID;
FDQueryMain.Params[2].AsInteger := BildDescribeTabelle_Bildtabelle_idBild;
FDQueryMain.ExecSQL(false);
FReportList.Add(' -TPicAdmin.kategorien_bildDescribeTabelleInsert');
end;
Gruss
Delbor