spamito
Messages postés183Date d'inscriptionsamedi 24 mars 2007StatutMembreDernière intervention30 mars 2013
-
21 juin 2008 à 10:32
JPGVB
Messages postés96Date d'inscriptionmardi 29 mars 2005StatutMembreDernière intervention10 mars 2011
-
21 juin 2008 à 16:19
Bonjour,
J'ai créé un seul bouton capable d'enregistrer et de modifier les données. J'ai réalisé un code pour le faire mais cela ne marche pas.
Pouviez-vous m'aider ? Voici mon code :
Private Sub Command3_Click()If medic(1) "" Or medic(2) "" Or medic(3) = "" Then
MsgBox "Veuillez remplir tous les champs", vbCritical, "ATTENTION"
Exit Sub
End If
Set cn = New Connection
cn.Provider = "microsoft.jet.oledb.4.0"
cn.Mode = adModeReadWrite
cn.ConnectionString = "File name=" & App.Path & "\CONNECT.udl"
cn.Open
req = "SELECT * FROM t_medicament;"
Set rs = New Recordset
rs.Open req, cn, adOpenDynamic, adLockOptimistic
If medic(0).Text = rs!code_medicament Then
GoTo edit
End If
edit:
k = MsgBox("Voulez-vous vraiment modifier cet enregistrement ?", vbYesNo, "INFORMATION")
If k = 6 Then
rs!code_medicament = medic(0)
rs!libelle_medicament = medic(1)
rs!famille = medic(2)
rs!forme = medic(3)
rs.Update
rs.Requery
MsgBox "Modification effectuée avec succès", vbInformation, "OPERATION EFFECTUEE"
vider
End If
cn.Close
End Sub
JPGVB
Messages postés96Date d'inscriptionmardi 29 mars 2005StatutMembreDernière intervention10 mars 20112 21 juin 2008 à 16:19
Bonjour, à priori il me semble reperer deux pb:
quand tu fais req = "SELECT * FROM t_medicament;" tu extrais la liste de tous les médicaments, tu ne peux pas comparer une table à un enregistrement quand tu fais
If medic(0).Text = rs!code_medicament Then
il faut plutot faire qqchose du genrereq "SELECT * FROM t_medicament WHERE code_medicament" & medic(0)
(mettre medic(0) entre ' si il s'agit d'une zone de texte)
ensuite si le resultat de ta requete est vide, tu passes en mode ajout, si tu as un résultat positif (rs.recordcount=1) tu peux passer en mode modification.
Par ailleurs evite goto, c'est une source d'erreurs : dans ton exemple: si medic(0).Text <> rs!code_medicament alors tu effectues d'abord le code du bloc addnew, puis tu passes dans edit ? est-ce volontaire.
Il est plus simple d'utiliser une structure de type
if medic(0).Text = rs!code_medicament then
else
end if
Evite d'utiliser EDIT comme nom d'étiquette c'est un mot clé reservé.