IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Problème d'insertion d'un champs numérique avec delphi interbase


Sujet :

Bases de données Delphi

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut 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 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.

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Et quand tu utilises une interface autre que Delphi tu as le même problème ?

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci pour votre aide philnext
    je n'ai pas tester un autre interface, mais en executant la procédure stocké sous IBExpert(version gratuite), logiciel avec lequel j'ai créer la base de données, j'arrive à remplir les données de cette table sans soucis.

  4. #4
    Membre confirmé
    Avatar de alheuredudejeuner
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2005
    Messages : 376
    Points : 632
    Points
    632
    Billets dans le blog
    4
    Par défaut 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é

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2010
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    bonjour
    merci à tous pour vos réponses
    hier soir j'ai tester la meme procedure stockée (j'ai meme copier coller tous le code source) dans un autre projet, mais en utilisant cette fois le pilote Interbase(IBDataBase,IBtransaction,IBStoredProc et IBClientDataSet) au lieu de DBExpress ca a fonctionner impécable,
    je crois que le problème est un probleme de codage ou conversion de avec DBExpress et interbase données.
    Ce que je veux savoir maintenent svp est ce qu'en utilisant le pilote Interbase(IBDataBase,IBtransaction,IBStoredProc et IBClientDataSet...), je peut réaliser une application dont la base de données peut etre stockée dans un serveur distant ou non? et je me connecte a la base a partir d'une machine dans le réseau via le serveur interbase est ce que je peux avoir ce résultat en utilisant les composants du pilote interbase sous delphi ou non?
    merci encore et bonne journée a tous
    coordinalement
    mourad

  6. #6
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Points : 1 181
    Points
    1 181
    Par défaut
    Bien sur.
    Si tu as l'adresse IP du serveur Interbase, que se soit en LAN ou distant.
    Il faut juste penser au niveau architecture et design de ton application client par rapport à ta bande passante.
    On progresse .....

Discussions similaires

  1. Problème de taille d'un champ numérique
    Par loic20h28 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/01/2008, 09h20
  2. [RegEx] Tester la saisie d'un champ numérique avec virgule
    Par p_m_g dans le forum Langage
    Réponses: 1
    Dernier message: 30/12/2007, 22h36
  3. Pb d'insertion dans un champ primaire avec auto_increment
    Par jiper6f dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/09/2007, 09h11
  4. [SQL] Problème d'insertion du à un champ auto_increment ?
    Par toma03 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 11/06/2007, 16h29
  5. remplir un champ numérique avec 0
    Par 18Marie dans le forum SQL
    Réponses: 4
    Dernier message: 16/02/2007, 11h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo