beegeezzz
Messages postés152Date d'inscriptionmardi 4 novembre 2008StatutMembreDernière intervention10 avril 2017
-
2 janv. 2009 à 20:13
beegeezzz
Messages postés152Date d'inscriptionmardi 4 novembre 2008StatutMembreDernière intervention10 avril 2017
-
3 janv. 2009 à 10:32
Bonjour tout le monde,
J'essaie d'ajouter une ligne à ma table Access en DAO (VB6).
Pour cela, j'utilise ce code simple :
Private Sub AjouterIngredientDansCompositionRecette(QuantiteDe As Integer, RecetteSelectionnee As Integer, IDDeLIngredient As Integer)
Dim sql As String sql "SELECT * FROM detail_recette WHERE detail_recette.ref_recette " & listRecettes(0).ItemData(listRecettes(0).ListIndex) & " AND detail_recette.ref_ingredient = " & IDDeLIngredient
Set rsAjoutIngredient = BDOuvrirTable(sql, False)
If rsAjoutIngredient.RecordCount > 0 Then 'si je trouve un enregistrement dans la table qui a comme référence de recette ET comme référence d'ingrédient les données passées en paramètre, alors j'ai au moins un recordset
rsAjoutIngredient.Edit
rsAjoutIngredient("quantite") = 0 'je remets à zéro la quantité de l'ingrédient pour cette recette
rsAjoutIngredient("quantite") = rsAjoutIngredient("quantite") + QuantiteDe 'je met ensuite comme quantité la quantité choisie par le user
rsAjoutIngredient.Update
Else 'si je n'ai aucun enreigstrement avec la référence de la recette ET la référence de l'ingrédient alors j'ajoute un nouvel enregistrement
rsAjoutIngredient.AddNew
rsAjoutIngredient("ref_recette") = RecetteSelectionnee
rsAjoutIngredient("ref_ingredient") = IDDeLIngredient
rsAjoutIngredient("quantite") = QuantiteDe
rsAjoutIngredient.Update
End If
End Sub
Le problème se passe ici :
Else 'si je n'ai aucun enreigstrement avec la référence de la recette
ET la référence de l'ingrédient alors j'ajoute un nouvel enregistrement
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 3 janv. 2009 à 02:34
Salut
Fais un test :
Place ton curseur de souris sur la ligne incriminée et appuies sur F9 pour créer un point d'arrêt.
Lance ton programme et attends qu'il s'arrête sur la ligne.
Survole avec ta souris tes variables pour en connaitre le contenu.
Eventuellement, continue à avancer avec F8 pour n'exécuter qu'une seule ligne à la fois; quelques fois, on est surpris de passer par ici ou par là ... (F5 pour continuer normalement)
Après ton Update, ajoute un DoEvents pour laisser le système respirer, on ne sait jamais.
Vérifie aussi que tu n'as pas de "On Error Resume Next" quelque part (à utiliser avec parcimonie)
Une de ces lignes est en trop ou surchargée :
Tu remets à zéro un champ et tu le réutilises derrière pour y ajouter quelque chose : bizarre et inutile
rsAjoutIngredient("quantite") = 0
rsAjoutIngredient("quantite") = rsAjoutIngredient("quantite") + QuantiteDe
Je pense que ceci doit suffire :
rsAjoutIngredient("quantite") = QuantiteDe
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)