Probleme de calcul dans ma bdd

Résolu
Signaler
Messages postés
106
Date d'inscription
mardi 4 mars 2008
Statut
Membre
Dernière intervention
2 mai 2012
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
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)
Private Sub Command3_Click()
On Error GoTo err
'Instanciation de variable
Set rst = New ADODB.Recordset
Set cnx = New ADODB.Connection
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.Closerst.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<!-- / message -->

1 réponse

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Salut
Parce que la requète SQL précédente ne tient pas compte du "mat_cpt" et qu'il te renvoie toutes les fiches.
Tel que tu utilises "rst!solde" juste après, tu fais le calcul avec le premier (ou le dernier, je ne sais pas) compte : coup de bol si tu étais tombé sur le bon !
--> Ajoute une clause Where dans le "Select *From Compte" pour qu'il n'apppelle QUE la fiche "mat_cpt"

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)