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 |
|
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 |
|
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 |
| Heure GMT |
[Répondre] |
|
Administration:
Ouvrir / Fermer / Supprimer /
Déplacer
|
|