1 pièce(s) jointe(s)
Requête paramétrée avec AsCurrency
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:
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.
Pièce jointe 616901
Je ne comprends pas pourquoi la ligne
Code:
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.