Problème d'insertion d'un champs numérique avec delphi interbase
Bonsoir a tous
voila, depuis maintenant une semaine je n'arrive pas a résoudre ce problème. je me dirige vers vous tous puisque je suis sur que c'est la que je trouverai la solution.
mon problème est le suivant:
je développe une petite application delphi, la base de données est créée avec interbase, j'ai écrit aussi une procédure stockée pour la mise à jour de la table famille article
le code est le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| CREATE PROCEDURE FAM_MAJ(
ID_FAM INTEGER,
LIB_FAM VARCHAR(20),
TVA NUMERIC(9,3))
AS
begin
if (exists(select id_fam from famille where (id_fam =:id_fam))) then
update famille
set lib_fam =:lib_fam,
tva=:tva
where (id_fam = :id_fam);
else insert into famille (id_fam,lib_fam,tva ) values(GEN_ID(GEN_FAMILLE_ID,1),:Lib_Fam,:tva);
end |
En ce qui concerne delphi j'ai utilisé dbExpress pour se connecter a la base, et dans le module de données j'ai créer un SQLStoredProc que j'ai appelé psfamille qui fait référence à la procédure stockée créée avec interbase.
Dans l'évènement beforepost du ClientDataSet j'ai mis le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10
| procedure TDM.cdsfamilleBeforePost(DataSet: TDataSet);
begin
with psfamille do
begin
params[0].AsInteger:=dm.cdsfamilleID_FAM.AsInteger;
params[1].AsString:=dm.cdsfamilleLIB_FAM.AsString;
params[2].AsBCD:=dm.cdsfamilleTVA.AsCurrency;
ExecProc;
end;
end; |
Bref dans le code du bouton Enregistrer j'ai écrit le code cdsFamille.post.
Normalement je n'ai rien oublié, même les paramètres de la psFamille j'ai vérifié leurs types.
Mon problème est alors que lorsque j'insère un nouveau enregistrement dans la table famille dans le champs TVA j'aurai toujours la valeur 1056,000 quelque soit la valeur que je tape;bizarre!!!! (ce champs est de type NUMERIC(9,3)
malgré ça les autres champs de type varchar contiennent les valeurs saisies sans problème.
pouvez vous m'expliquer ce que je dois faire pour résoudre ce problème et merci beaucoup d'avance.
dans le beforepost l'enregistrement n'est pas encore dans la base
bonjour
Par conséquent ta procédure stockée ne le connais pas encore
cordialement
André