BOF et EOF à true en DAO

Résolu
marcod59 Messages postés 170 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 13 juin 2010 - 28 juil. 2006 à 09:46
marcod59 Messages postés 170 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 13 juin 2010 - 28 juil. 2006 à 19:12
Bonjour,

J'ai un programme avec une base en DAO. Il fonctionne très bien sauf dans un cas. Lorsque je supprime le dernier enregistrement, je ne parviens plus à en ajouter un autre. Lorsque je contrôle le fonctionnement du programme je constate que les valeurs BOF et EOF sont à true au moment de l'ajout d'ou l'impossibilité de l'action. Comment puis-je résoudre ce problème SVP. Voici le code pour l'ajout :
Private Sub nouveau_Click()
On Error GoTo erreur_nouveau
   Me!adresse.Clear
a = Data1.Recordset.RecordCount
If a <> 0 Then
   Data1.Recordset.MoveFirst
End If
   Do While Not Data1.Recordset.EOF
      Me!adresse.AddItem Data1.Recordset("champ")
      Data1.Recordset.MoveNext
    Loop


   Data1.Recordset.AddNew
   Me!adresse = ""
   Me!Donnees.SetFocus
   Me!sup.Enabled = False
        
sortie_erreur_nouveau:
   Exit Sub
erreur_nouveau:
   Resume sortie_erreur_nouveau:
End Sub

Je vous remercie d'avance pour vos réponses
@+++
marcod59

4 réponses

marcod59 Messages postés 170 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 13 juin 2010
28 juil. 2006 à 19:12
Bonjour,

J'ai essayé, mais j'ai toujours le problème d'ajout. Par contre, j'ai ajouté Data1.EOFAction = 2 dans Private Sub nouveau_Click()
et maintenant ça me met l'enregistrement. Il me reste un problème de rafraîchissement du combobox, mais je pense que cela devrait aller.
Merci pour ton aide, et bonne prog

@+++
marcod59
3
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
28 juil. 2006 à 13:13
Bonjour,
 
 Après une suppression du dernier enregistrement le recordset ne pointe
 ni sur Bof ni sur Eof.Autrement dit il n' est pas actif.ça semble bizard mais c' est comme ça!
 Donc ce qu' il faut faire c' est l' activer en le dirriger vers
l' un ou l' autre.De préférence vers l' un PUIS vers l' autre. 
 
Voilà comment moi je contourne le problème
 Toujours après Rs.Delete
 On error resume next
 Rs.MoveFirst
 Rs.MoveLast
 
dans ce cas Bof et Eof sont vrais.
A+

 
0
marcod59 Messages postés 170 Date d'inscription vendredi 16 janvier 2004 Statut Membre Dernière intervention 13 juin 2010
28 juil. 2006 à 16:50
Bonjour,

Donc pour résoudre le problème il faut traiter dans la suppression ! J'ai suivi tes instructions, mais ça ne fonctionne pas. Voici le code modifié de la partie suppression qui elle fonctionne :
Private Sub sup_Click()
On Error Resume Next
   rép = InputBox("Etes vous sûr O/N?")
   If UCase(rép) = "O" Then
     Data1.Recordset.Delete
On Error Resume Next
     Data1.Recordset.MoveFirst
     Data1.Recordset.MoveLast
     Me!Donnees.SetFocus
     Me!adresse.Clear
     Do While Not Data1.Recordset.EOF
       Me!adresse.AddItem Data1.Recordset("champ")
       Data1.Recordset.MoveNext
     Loop
     Data1.Recordset.MoveFirst
   End If
End Sub

Et comme tu le dis Bof et Eof sont vrais, et si je suis ce qui est dit dans l'aide de VB. Lorsque les deux sont vrais, cela génère une erreur donc impossibilité de réécrire un enregistrement.

Merci pour ta réponse
@+++

marcod59
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
28 juil. 2006 à 17:55
Re bonjour,





Apès Data1.RecordSet.Delete il faut





If Not Data1.Recordset.Bof then Data1.recordset.MovePrevirew





Ou bien





If Not Data1.Recordset.Eof then Data1.recordset.MoveNext





Et avant de faire Do While Not Data1.Recordset.EOF il faut un Data1.RecordSet.MoveFirst





pour ce positionner au début du fichier





 
0
Rejoignez-nous