'--- Test sur NoMatch If rsFormaListe.NoMatch Then '--- Pas trouvé : ajout rsFormaListe.AddNew Else '--- Trouvé NoMatch on met à jours rsFormaListe.Edit End If '--- Renseigne fiche insérée ou trouvée rsFormaListe("réfActivitéListe") = Me.txtRéfActivitéListe rsFormaListe("réfActivitéOption") = Val(Me.cmbOption) rsFormaListe("réfFormationListe") = Val(Me.cmbFormation) lngCodeRéf = rsFormaListe("RéfFormationActivitéListe") rsFormaListe.Update
ta boule de cristal me ditfonctionne très bien puisque je suis sous Access 2003.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question'--- Trouvé NoMatch on met à jours rsFormaListe.Edit End If rsFormaListe("réfActivitéListe") = Me.txtRéfActivitéListe rsFormaListe("réfActivitéOption") = Val(Me.cmbOption) rsFormaListe("réfFormationListe") = Val(Me.cmbFormation) lngCodeRéf = rsFormaListe("RéfFormationActivitéListe") rsFormaListe.Update strSignet = rsFormaListe.Bookmark Debug.Print strSignet
Do While Not rs.EOF mémo = rs.Bookmark utilisation de rs.FindFirst rs.Bookmark = mémo rs.MoveNext Loop
Private Sub BtnValider_Click() On Error GoTo GestionErreur Dim varSignet As Variant Set db = CurrentDb() '--- Intérogation de rsFormaListe Set rsFormaListe = db.OpenRecordset("tbl Formations-Activités-Liste", dbOpenDynaset) '--- Intérogation de rsFormation Set rsFormation = db.OpenRecordset("tbl Formations", dbOpenDynaset) '--- Test sur base vide If rsFormaListe.RecordCount = 0 Then rsFormaListe.AddNew rsFormaListe("réfActivitéListe") = Me.txtRéfActivitéListe rsFormaListe("réfActivitéOption") = Val(Me.cmbOption) rsFormaListe("réfFormationListe") = Val(Me.cmbFormation) lngCodeRéf = rsFormaListe("RéfFormationActivitéListe") rsFormation.AddNew rsFormation("réfAnimateur") = Nz(TxtRéfAnimateur.Value, 0) rsFormation("DatesDu") = Nz(txtDateDu.Value) rsFormation("DatesAu") = Nz(txtDateAu.Value) rsFormation("réfFormationActivitéListe") = lngCodeRéf rsFormaListe.Update rsFormation.Update End If '--- Boucle sur la table rsFormaliste Do While Not rsFormaListe.EOF '--- Définition du signet varSignet = rsFormaListe.Bookmark '--- Recherche si l'enregistrement est trouvé strCritereA = "[RéfActivitéListe]=" & Val(Me.txtRéfActivitéListe) & " And " & _ "[RéfActivitéOption]=" & Val(Me.cmbOption) & " And " & _ "[RéfFormationListe]=" & Val(Me.cmbFormation) rsFormaListe.FindFirst strCritereA '--- Test sur NoMatch If rsFormaListe.NoMatch Then rsFormaListe.AddNew Else '--- Trouvé NoMatch on met à jours rsFormaListe.Edit End If rsFormaListe("réfActivitéListe") = Me.txtRéfActivitéListe rsFormaListe("réfActivitéOption") = Val(Me.cmbOption) rsFormaListe("réfFormationListe") = Val(Me.cmbFormation) lngCodeRéf = rsFormaListe("RéfFormationActivitéListe") rsFormaListe.Update '--- Maj et Ajout dans la tbl rsFormation '--- Recherche si l'enregistrement est trouvé strCritereB = "[RéfFormationActivitéListe]=" & rsFormaListe![RéfFormationActivitéListe] rsFormation.FindFirst strCritereB '--- Non trouvé NoMatch on ajoute If rsFormation.NoMatch Then rsFormation.AddNew Else '--- Trouvé NoMatch vau on met à jours rsFormation.Edit End If rsFormation("réfAnimateur") = Nz(TxtRéfAnimateur.Value, 0) rsFormation("DatesDu") = Nz(txtDateDu.Value) rsFormation("DatesAu") = Nz(txtDateAu.Value) rsFormation("réfFormationActivitéListe") = lngCodeRéf rsFormation.Update 'Maintien du Signet varSignet = rsFormaListe.Bookmark rsFormaListe.MoveNext Loop '--- Màj du sous formulaire Forms![frm Màj Formations]![frm Màj Formations-sfm].Requery '--- Ferme les objet rsFormaListe.Close: Set rsFormaListe = Nothing rsFormation.Close: Set rsFormation = Nothing db.Close: Set db = Nothing GestionErreur: End Sub
'Maintien du Signet varSignet = rsFormaListe.Bookmark ' NON ! ' Tu ne veux pas mémoriser le bookmark mais le repositionner : rsFormaListe.Bookmark = varSignet ' Il va falloir que tu apprennes à lire ce qu'on écrit !! rsFormaListe.MoveNext Loop
strCritereB = "[RéfFormationActivitéListe]=" & rsFormaListe![RéfFormationActivitéListe]
rsFormation.FindFirst "[RéfFormationActivitéListe]=" & rsFormaListe![RéfFormationActivitéListe] & " and " & _ rsFormation("réfAnimateur") = Nz(TxtRéfAnimateur.Value, 0)
La section "Test sur base vide" ne sert à rien puisque
Do While Not rsFormaListe.EOF : Faux
[RéfActivitéListe]=5 And [RéfActivitéOption]=1 And [RéfFormationListe]=1
If rsFormaListe.NoMatch Then Vrai
rsFormaListe.AddNew
Debug.Print lngCodeRéf : 99
Debug.Print strCritereB : [RéfFormationActivitéListe]=89
If rsFormation.NoMatch Then Faux
rsFormation.Edit
If rsFormaListe.RecordCount = 0 Then ' Tes AddNew Else Do While Not rsFormaListe.EOF ' Tes recherches Loop End If
Est-ce que, par hasard, il ne serait pas plus judicieux de faire la recherche