Bonjour à toutes et à tous.
Lazarus 2.0.6; FPC 3.0.4; Windows 10 Famille 20H2.
Contexte : dans une application comportant 3 fiches
  • une fiche "Accueil",
  • un DataModule (pour la connexion à Postgresql avec un TZConnection)
  • Une fiche "Transaction",

À la clôture de la fiche "Transaction", les données doivent être insérées dans la base de données. Voici le code :
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
procedure TFiche_Ajouter_Transaction.Btn_EnregistrerClick(Sender: TObject);
var
  V_Valeur, V_Taxe, V_Sens : variant;
  I_Valeur, I_Taxe, I_Sens : integer;
begin
  V_Valeur := DBLCB_Valeur.KeyValue; V_Taxe := DBLCB_Taxe.KeyValue; V_Sens := DBLCB_Sens.KeyValue;
  I_Valeur := V_valeur; I_Taxe := V_Taxe; I_Sens := V_Sens;
  Requete_Enregistrer.Close;
  Requete_Enregistrer.SQL.Text := 'INSERT INTO s_ent_t_e_transaction_tra ';
  Requete_Enregistrer.SQL.Add('(act_id,tax_id,sns_id,cpt_id,tra_date,tra_cours_brut,tra_nombre,tra_montant_brut),tra_montant_net )');
  Requete_Enregistrer.SQL.Add('VALUES (:IDACTION,:IDTAXE,:IDSENS,:IDCOMPTE,:DATE,:COURSBRUT,:NOMBRE,:MONTANBRUT,:MONTANT_NET;');
  Requete_Enregistrer.Params.ParamByName('IDACTION').AsInteger := I_Valeur;
  Requete_Enregistrer.Params.ParamByName('IDTAXE').AsInteger := I_Taxe;
  Requete_Enregistrer.Params.ParamByName('IDSENS').AsInteger := I_Sens;
  Requete_Enregistrer.Params.ParamByName('IDCOMPTE').AsInteger := Fiche_Accueil.Compte;
  Requete_Enregistrer.Params.ParamByName('DATE').AsDate := StrToDate(Edition_Date.Text);
  Requete_Enregistrer.Params.ParamByName('COURSBRUT').AsCurrency := StrToCurr(Edition_Cours_brut.text);
  Requete_Enregistrer.Params.ParamByName('NOMBRE').AsInteger := StrToInt(Edition_Nombre.text);
  *Requete_Enregistrer.Params.ParamByName('MONTANTBRUT').AsCurrency := StrToCurr(Edition_Montant_Brut.text);
  Requete_Enregistrer.Params.ParamByName('MONTANTNET').AsCurrency := StrToCurr(Edition_Montant_Net.text);
  Requete_Enregistrer.ExecSQL;
  Close;
end;
La ligne qui pose problème est celle marquée d'un astérisque. En fonctionnement en pas à pas, le point d'arrêt étant positionné sur la première ligne après begin , le programme s'arrête et la fenêtre de l'assembleur s'ouvre. Je ne suis pas capable d'analyser son contenu.

Nom : assembleur.jpg
Affichages : 135
Taille : 113,7 Ko

Je ne comprends pas pourquoi la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Requete_Enregistrer.Params.ParamByName('COURSBRUT').AsCurrency := StrToCurr(Edition_Cours_brut.text);
s'exécute correctement et pas celle marquée de l'astérisque!
J'ai essayé de changer le AsCurrency en AsFloat et rien n'y fait. La ligne marquée ne s'exécute toujours pas.
J'espère que vous allez me dépanner et vous remercie à l'avance pour le temps que vous allez passer à rechercher la solution à mon problème.
Michel.