Probleme de calcul dans ma bdd

Résolu
bruce207 Messages postés 106 Date d'inscription mardi 4 mars 2008 Statut Membre Dernière intervention 2 mai 2012 - 8 avril 2008 à 16:48
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 9 avril 2008 à 00:11
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

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
9 avril 2008 à 00:11
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)
3
Rejoignez-nous