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