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
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;
J'espérai obtenir respectivement une colonne Currency, Date et Currency mais je me retrouve à chaque fois avec une string
Nom : Capture.PNG
Affichages : 184
Taille : 12,0 Ko

Je doit oublier quelque chose mais