omartt
Messages postés83Date d'inscriptionlundi 17 août 2009StatutMembreDernière intervention 3 août 2013
-
29 juin 2010 à 10:29
omartt
Messages postés83Date d'inscriptionlundi 17 août 2009StatutMembreDernière intervention 3 août 2013
-
29 juin 2010 à 15:22
Bonjour à tous,
En dépit du fait que je suis débutant en matiére de programmation,je suis sur le point de développer une petite application. Mais malheureusement je rencontre pour l'instant un petit problème.
Mon application est lier à une base de donnée access.
Sur ma feuille j'ai un 'cmd-ajouter' dont le code est le suivant:
Private Sub ajouter_Click()Set Rs = New ADODB.Recordset
If Text1 <> "" Then
Rs.Open "select * from patient ", DB, adOpenDynamic, adLockOptimistic
Rs.AddNew
Rs!Nom = Text1.Text
Rs!Prenom = Text2.Text
Rs!somme = Text3.Text
Rs!verse1 = Text4.Text
Rs!verse2 = Text5.Text
Rs!verse3 = Text6.Text
Rs!reste = Text7.Text
Rs.Update
End If
End Sub
Et j'ai aussi un 'cmd-update' dont le code est le suivant:
Private Sub update_Click()
If Text1.Text <> "" Then
Set Rs = New ADODB.Recordset
Rs.Open "select * from patient where nom='" _
& Text1.Text & "'", DB, adOpenDynamic, adLockOptimistic
If Not Rs.BOF Then
Rs!Nom = Text1.Text
Rs!Prenom = Text2.Text
Rs!somme = Text3.Text
Rs!verse1 = Text4.Text
Rs!verse2 = Text5.Text
Rs!verse3 = Text6.Text
Rs!reste = Text7.Text
Rs.Update
Else
Rs.AddNew
Rs!Nom = Text1.Text
Rs!Prenom = Text2.Text
Rs!somme = Text3.Text
Rs!verse1 = Text4.Text
Rs!verse2 = Text5.Text
Rs!verse3 = Text6.Text
Rs!reste = Text7.Text
Rs.Update
Exit Sub
End If
Rs.MoveNext
End If
End Sub
Tout va bien avec ces deux codes sauf s'il sagit de deux noms qui se ressemble.
Si par exemple j'ajoute un nom 'x' avec prénom 'y'et puis j'ajoute un autre nom 'x' avec prénom 'z' tous se pase bien avec le 'cmd-ajouter'. Mais lorsque je voudrais entrer des nouvelle donnés et je me sert du 'cmd-update' pour enregistrer les nouvelle données le prénom 'z' devient 'y'.
Je vous serais trés reconnaissant et trés heureux si vous m'aidiez à résoudre ce problème.
Merci à tous
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 29 juin 2010 à 13:03
Salut
En effet : Quand tu fais le update_Click, tu charges les fiches dont le nom est 'x', mais tu ne précises pas le prénom, donc normal qu'il écrase la fiche avec le prénom 'y' existant par le prénom 'z'.
Il faut compléter ta requète de chargement :
Rs.Open "select * from patient " & _
" where nom = '" & Text1.Text & "' " & _
" and prenom = '" & TextBoxPrenom.Text & "'", _
DB, adOpenDynamic, adLockOptimistic
Pour l'insertion d'une nouvelle fiche avec ajouter_Click, il faut aussi charger les fiches portant ce nom et prénom.
S'il trouve (au moins) une fiche, tu ne devras pas pouvoir créer de nouvelle fiche avec ces mêmes noms et prénoms :
' même requete que si dessus
Rs.Open "select * from patient " & _
" where nom = '" & Text1.Text & "' " & _
" and prenom = '" & TextBoxPrenom.Text & "'", _
DB, adOpenDynamic, adLockOptimistic
If Rs.RecordCount > 0 Then
MsgBox "Fiche existante. Impossible de créer."
Else
Rs.Close
' Charge toute la table
Rs.Open "select * from patient ", _
DB, adOpenDynamic, adLockOptimistic
Rs.AddNew
Rs!Nom = Text1.Text
Rs!Prenom = Text2.Text
Rs!somme = Text3.Text
Rs!verse1 = Text4.Text
Rs!verse2 = Text5.Text
Rs!verse3 = Text6.Text
Rs!reste = Text7.Text
Rs.Update
End If
D'autre part : Dans ta DB, quels sont les champs primaires = les clés ?
Que va t-il se passer si tu as deux patients portant les mêmes noms et prénoms ?
Précaution : Dans ta requète, tu écris (exemple) :
" where nom = '" & Text1.Text & "' " & _
Si ta TextBox contient Toto, la chaine équivalente ressemblera à ceci :
where nom = 'Toto' " & _
Problème auquel il faut faire attention :
Si le nom comporte lui même une apostrophe ', comme par exemple N'Guyen, la chaine équivalente va ressembler à ceci :
where nom = 'N'Guyen' " & _
Et ça, ça va provoquer une erreur car le nombre d'apostrophe ' est impair.
Pour y remédier, il suffit de doubler le nombre d'apostrophe :
Dim sNom As String
sNom = Replace(TextBox1.Text, "'", "''")
et remplacer la TextBox1.Text par sNom dans la requète :
where nom = '" & sNom & "' " & _
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
omartt
Messages postés83Date d'inscriptionlundi 17 août 2009StatutMembreDernière intervention 3 août 2013 29 juin 2010 à 15:22
Je ne sais vraiment comment te remercier jack
Je suis maintenant lhomme le plus heureux du monde aprés avoir résolu ce problème et c'ést grace à toi jack
Que Dieu te benisse.
Grand merci