Bonjour,
Il y a quelques temps, je découvrais la possibilité d'ajouter des fonctions au moteur SQLite (voir ici).
Ajourd'hui j'ai voulu faire le malin pour éviter des champs calculés et![]()
J'espérai obtenir respectivement une colonne Currency, Date et Currency mais je me retrouve à chaque fois avec une string
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 procedure TDM.FDSQLiteFunction1Calculate(AFunc: TSQLiteFunctionInstance; AInputs: TSQLiteInputs; AOutput: TSQLiteOutput; var AUserData: TObject); begin // vient du sample de l'aide // nom de fonction mult 2 parametres currency, integer AOutput.AsCurrency := AInputs[0].AsCurrency * AInputs[1].AsInteger; end; procedure TDM.FDSQLiteFunctionAAAAMMJJ2DateCalculate( AFunc: TSQLiteFunctionInstance; AInputs: TSQLiteInputs; AOutput: TSQLiteOutput; var AUserData: TObject); var vSDate : String; vDate : TDate; begin // nom de la fonction AAAAMMJJ2DATE paramètre String sous la forme yyyymmdd (patrick reconnaitra son idée, dernière session twitch) vsDate:=AInputs[0].AsString; vDate:=EncodeDate(StrToInt(Copy(vsdate,1,4)), StrToInt(Copy(vsdate,5,2)), StrToInt(Copy(vsdate,7,2))); AOutput.AsDate:=vDate; end; procedure TDM.FDSQLiteFunctionMontantCalculate( AFunc: TSQLiteFunctionInstance; AInputs: TSQLiteInputs; AOutput: TSQLiteOutput; var AUserData: TObject); var vMontant : Currency; IMontant : String; begin // nom de la fonction montantreel paramètres numeric(10,2), char (patrick reconnaitra son idée, dernière session twitch) IMontant:=AInputs[0].AsString; Vmontant:=StrToFloat(IMontant); if Ainputs[1].AsString='-' then vMontant:=Vmontant * -1; AOutput.AsCurrency:=vMontant; end;
Je doit oublier quelque chose mais![]()
Partager