BOF et EOF à true en DAO [Résolu]

marcod59 170 Messages postés vendredi 16 janvier 2004Date d'inscription 13 juin 2010 Dernière intervention - 28 juil. 2006 à 09:46 - Dernière réponse : marcod59 170 Messages postés vendredi 16 janvier 2004Date d'inscription 13 juin 2010 Dernière intervention
- 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
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
marcod59 170 Messages postés vendredi 16 janvier 2004Date d'inscription 13 juin 2010 Dernière intervention - 28 juil. 2006 à 19:12
3
Merci
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

Merci marcod59 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de marcod59
chaibat05 1884 Messages postés samedi 1 avril 2006Date d'inscription 20 novembre 2007 Dernière intervention - 28 juil. 2006 à 13:13
0
Merci
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+

 
Commenter la réponse de chaibat05
marcod59 170 Messages postés vendredi 16 janvier 2004Date d'inscription 13 juin 2010 Dernière intervention - 28 juil. 2006 à 16:50
0
Merci
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
Commenter la réponse de marcod59
chaibat05 1884 Messages postés samedi 1 avril 2006Date d'inscription 20 novembre 2007 Dernière intervention - 28 juil. 2006 à 17:55
0
Merci
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





 
Commenter la réponse de chaibat05

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.