Hit-Parade .VB Research Center . Compteur
Accueil ~  Code ~  Programmes ~  Api ~  Forum ~  Cours ~  Livres ~  Quiz ~  Annuaire
VB Research Center > Code >
BOF ou EOF = true
[S'enregistrer] [Profil] [Préférences] [Se déconnecter] [Rechercher]
[Répondre]
Auteur Message
serger
Junior

BOF ou EOF = true

Je cherche à savoir comment éviter ce message d'erreur:BOF ou EOF = true

J'ai mis en gras l'endroit où mon message s'affiche

existe-t-il une syntaxe pour fermer le recordset , si le recordset à atteint le dernier enregistrement,

If Not rsregistretemp.EOF Then rsregistretemp.MoveFirst
If Not rsregistretemp2.EOF Then rsregistretemp2.MoveFirst

With rsregistre
For i = 0 To rsregistretemp.RecordCount
LabelPtfus(3) = rsregistretemp.Fields("PtFusion")
Labeltrunk(4) = rsregistretemp.Fields("Troncon#1")
Labelcompte(2) = rsregistretemp.Fields("Compte")
Labelcable3(3) = rsregistretemp.Fields("NumCable")
Labeltube3(0) = rsregistretemp.Fields("CouleurTube")
Labelfibre3(1) = rsregistretemp.Fields("CouleurFibre")
Labelposition3(0) = rsregistretemp.Fields("position1")
Do While Not rsregistretemp2.EOF

SQLstmt6 = "SELECT * FROM registretemp where Troncon#1<>'" & rsregistretemp2.Fields("Troncon#2") & "'"
LabelPtfus(4) = rsregistretemp2.Fields("PtFusion")
Labeltrunk(2) = rsregistretemp2.Fields("Troncon#2")
Labelcompte(3) = rsregistretemp2.Fields("Compte2")
Labelcable3(0) = rsregistretemp2.Fields("NumCable2")
Labeltube3(1) = rsregistretemp2.Fields("CouleurTube2")
Labelfibre3(0) = rsregistretemp2.Fields("CouleurFibre2")
Labelposition3(1) = rsregistretemp2.Fields("position2")
If Labeltrunk(4) <> Labeltrunk(2) And Labelcable3(3) = Labelcable3(0) Then

rsregistre.AddNew
rsregistre.Fields("PtFusion") = LabelPtfus(3)
rsregistre.Fields("Troncon#1") = Labeltrunk(4)
rsregistre.Fields("Compte") = Labelcompte(2)
rsregistre.Fields("NumCable") = Labelcable3(3)
rsregistre.Fields("CouleurTube") = Labeltube3(0)
rsregistre.Fields("CouleurFibre") = Labelfibre3(1)
rsregistre.Fields("position1") = Labelposition3(0)
rsregistre.Fields("Troncon#2") = Labeltrunk(2)
rsregistre.Fields("Compte2") = Labelcompte(3)
rsregistre.Fields("NumCable2") = Labelcable3(0)
rsregistre.Fields("CouleurTube2") = Labeltube3(1)
rsregistre.Fields("CouleurFibre2") = Labelfibre3(0)
rsregistre.Fields("position2") = Labelposition3(1)
rsregistretemp2.MoveNext
End If

rsregistretemp.MoveNext

LabelPtfus(3) = rsregistretemp.Fields("PtFusion")
Labeltrunk(4) = rsregistretemp.Fields("Troncon#1")
Labelcompte(2) = rsregistretemp.Fields("Compte")
Labelcable3(3) = rsregistretemp.Fields("NumCable")
Labeltube3(0) = rsregistretemp.Fields("CouleurTube")
Labelfibre3(1) = rsregistretemp.Fields("CouleurFibre")
Labelposition3(0) = rsregistretemp.Fields("position1")

Loop
Next i
End With
End Sub
13 Mar 2006 @ 22:00 Voir le profil de serger   Envoyer un message à serger Modifier ce message
Doc VB
Admin

Re:BOF ou EOF = true

Salut,

Apparement le gras s'est perdu en cours de route.
Je vais supposer que l'erreur apparait après le "MoveNext". De mon point de vue, il y a de fortes chances pour qu'elle se produise là.
Après un "MoveNext" il est très imprudent de lire la valeur d'un champ sans avoir testé au préalable le recordset.
Donc pour éviter ton erreur, je te suggère de tester le EOF juste après ton MoveNext et de ne pas chercher à lire ton recordset si tu es arrivé à la fin.
Maintenant, je ne dis pas que ça va résoudre complètement tous tes problèmes, tu as beaucoup d'imbrications, avec tes deux boucles, et la logique m'échappe un peu. Par exemple, il me semble aussi que ton instruction "If Not rsregistretemp2.EOF Then rsregistretemp2.MoveFirst" devrait être placée juste avant ton "Do While Not rsregistretemp2.EOF".

Ca va un peu mieux comme ça ?

----------------------
-~[ Doc VB ~ webmaster ]~-
Visual Basic Research Center

13 Mar 2006 @ 22:51 Voir le profil de Doc VB   Envoyer un message à Doc VB Modifier ce message
nejia
Junior

Re:BOF ou EOF = true

vous ajoutez un Data au niveau de votre formulaire, ensuite dans propriété de Data et plus précisemment Databasename vous mettez le chemin de votre base de données et dans Recourdsource vous choisissez le nom de la table.
et vous ajoutez a votre code :
while not Data.recordset.EOF
Votre code
wend
03 Jul 2006 @ 08:55 Voir le profil de nejia   Envoyer un message à nejia Modifier ce message
Heure GMT
[Répondre]
Administration: Ouvrir / Fermer / Supprimer / Déplacer
Accès rapide :
Visual Basic Research Center - (c) 2000/2002 -  Webmaster : docvb (chez) free (point) fr