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 sql : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.