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

VB 6 et antérieur Discussion :

Probleme de calcul dans ma bdd


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de bruce207
    Inscrit en
    Novembre 2007
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 319
    Par défaut Probleme de calcul dans ma bdd
    Bonjour,
    mon probleme est que je ne comprends pas pourquoi j'ai des resultats erronés et meme négatifs dans ma base apres avoir definit le calcul dans le code (voir ligne rouge)
    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
    24
    25
    26
    27
    28
    Private Sub Command3_Click()
    Trans As Double
    On Error GoTo err
    'Instanciation de variable
    Set rst = New ADODB.Recordset
    Set cnx = New ADODB.Connection
    'Procedure de connexion
    Call Connexion(cnx)
    rst.Open "INSERT INTO retrait(mat_ret, num_ret, type_ret, montant, date_ret, mat_mem, mat_cpt) VALUES ('" & Text8.Text & "', '" & Text9.Text & "', '" & Combo8.Text & "', '" & txtret(0).Text & "', '" & txtret(1).Text & "', '" & txtret(2).Text & "', '" & txtret(3).Text & "') ", cnx, adOpenKeyset, adLockOptimistic, adCmdText
    If Combo8.Text = "Retrait Ordinaire" Then
    rst.Open "SELECT * FROM compte", cnx, adOpenKeyset, adLockOptimistic, adCmdText
    Trans = rst!solde - Val(txtret(0).Text)
    rst.Close
    'Met à jour solde apres calcul du nouveau solde
    rst.Open "UPDATE compte SET solde = '" & Trans & "' WHERE mat_cpt = '" & txtret(3).Text & "' ", cnx, adOpenKeyset, adLockOptimistic, adCmdText
    End If
    'Ferme la connexion
    cnx.Close
    If MsgBox("Faire un autre Retrait ?", vbYesNo + vbExclamation, " NOUVEAU COMPTE !") = vbYes Then
    RetForm.Show
    Else
    'Ferme la feuille courante
    Unload Me
    BonForm.Show
    End If
    err:
    MsgBox "N° erreur:" & err.Number & vbLf & err.Description
    End Sub
    Le champ solde est numérique et réel simple dans une base access
    Merci pour votre éclairage

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 58
    Par défaut
    Salut, déjà tu mets un texte dans du numérique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE compte SET solde = '" & Trans & "'
    Tu dois mettre ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE compte SET solde = " & Trans & "
    et vérifier que ton Trans est un "." au lieu d'une "," si s'est un réel.

    @+

  3. #3
    Membre éclairé Avatar de bruce207
    Inscrit en
    Novembre 2007
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 319
    Par défaut
    Bonjour,
    et rebelotte, j'ai enlevé les cotes mais il n'effectue que la 1ere modification apres plus rien, et ainsi pour toutes les tables où sur certains il donne encore des resultats erronés.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 58
    Par défaut
    Salut,

    Je ne comprend pas exactement ce que tu dis, mais le code suivant modifie juste les élements contenu dans ton where.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rst.Open "UPDATE compte SET solde = " & Trans & " WHERE mat_cpt = '" & txtret(3).Text & "' ", cnx, adOpenKeyset, adLockOptimistic, adCmdText
    de plus y a pas un souci entre les deux requêtes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    'Plusieurs ligne
    SELECT * FROM compte
     
    'Ligne contenu dans le where
    UPDATE compte SET solde = " & Trans & " WHERE mat_cpt = '" & txtret(3).Text & "' "
    Autre chose, fait une transaction lorsque tu fait plusieurs mise à jours.

    @+

  5. #5
    Membre éprouvé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Par défaut
    Citation Envoyé par bruce207 Voir le message
    Bonjour,
    et rebelotte, j'ai enlevé les cotes mais il n'effectue que la 1ere modification apres plus rien, et ainsi pour toutes les tables où sur certains il donne encore des resultats erronés.
    Tu as quoi comme type de données ? Si tu as des virgules (,) à la place des point (.) ou des soldes vides ça peut donner des erreurs.

  6. #6
    Membre éclairé Avatar de bruce207
    Inscrit en
    Novembre 2007
    Messages
    319
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 319
    Par défaut
    Bonjour,
    en fait mon probleme venait du fait que je ne précisait pas quel solde il fallait mettre à jour. Apres l'avoir spécifié avec la clause where tout est rentré dans l'ordre.
    Merci
    Au fait InfoSteph peux tu me donné la syntaxe pour cette transaction.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    58
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 58
    Par défaut
    Salut,

    Citation Envoyé par bruce207 Voir le message
    Au fait InfoSteph peux tu me donné la syntaxe pour cette transaction.
    Voila ce que tu demandes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    'Procedure de connexion
    Call Connexion(cnx)
     
    cnx .BeginTrans
     
    'Les requêtes
     
    cnx .CommitTrans
     
    'Ferme la connexion
    cnx.Close
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme d'insertion dans une BDD Access
    Par bellak dans le forum Windows Forms
    Réponses: 15
    Dernier message: 17/09/2008, 14h54
  2. Probleme de calcule dans une fonction
    Par nuFox dans le forum C
    Réponses: 22
    Dernier message: 13/03/2008, 15h14
  3. [Velocity] probleme de calcul dans XSL
    Par Soupape dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 11/05/2007, 14h16
  4. [Access 2003] Problème de calcul dans champ
    Par jacquesprogram dans le forum Access
    Réponses: 2
    Dernier message: 10/09/2006, 14h39

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