![]() |
Datenbank: Sqlite • Version: 3.3 • Zugriff über: Firedac
Firedac SQLite UserData
Es erschließt sich mir leider nicht wo und wie man var AUserData an folgende
Procedure übergibt:
Delphi-Quellcode:
Diese wird im OnCalulate-Event der SQLFunction aufgerufen, aber anscheindend nicht mit einem passenden Object versehen.
procedure FDSqlFunctionCalculate(AFunc: TSQLiteFunctionInstance;
AInputs: TSQLiteInputs; AOutput: TSQLiteOutput; var AUserData: TObject); Ich interpretiere die Variable mal dahingehend, das von außerhalb der Query hier Daten in die Funktion gelangen können. |
AW: Firedac SQLite UserData
Hallo,
das var sieht für mich eher dafür aus, dass in der OnCalculate ein Objekt erzeugt werden kann, was dann beim nächsten Aufruf des OnCalculate benutzt werden kann. Also sowas ähnliches wie eine lokale Variable. Aber zu finden ist überhaupt nichts dazu im Netz. ( ![]() ![]() PS: Vielleicht wird das sogar intern von SQLite benutzt? OK, es würde nicht Userdata heißen ... |
AW: Firedac SQLite UserData
Der Hinweis war extrem hiflreich:
Man kann in der Routine ein ensprechendes Object erzeugen. UND man kann auch ein vorher erzeugtes Object hinzufügen und auch von ausserhalb benutzten:
Delphi-Quellcode:
Ich hatte übrigens auch nichts gefunden, aber etliche Stellen wo andere Funktionalität über Eigenschaften von Außen hinzugefügt wird.
procedure TForm1.FDSqlFunctionCalculate(AFunc: TSQLiteFunctionInstance;
AInputs: TSQLiteInputs; AOutput: TSQLiteOutput; var AUserData: TObject); begin if not Assigned(AUserData) then begin AUserData := ATestClass; (AUserData as TestClass).MyZahl := 1; end; if Assigned(AUserData) then begin (AUserData as TestClass).MyZahl := (AUserData as TestClass).MyZahl +3; end; AOutput.AsString := SQLregEx(AInputs[0].AsString,AInputs[1].AsString); end; Aber so geht es ja. Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz