Petit probleme avec BOF

tiguy21 Messages postés 15 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 22 juillet 2007 - 17 oct. 2005 à 22:12
tiguy21 Messages postés 15 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 22 juillet 2007 - 19 oct. 2005 à 18:50
Salut, jai un petit probleme avec mon application.


Voici mon code


Private Sub cmdPrev_Click()
If rs.BOF = True Then MsgBox ("debut de fichier")
rs.MovePrevious
Call UpdateTXT
End Sub


Jai 2 bouton, suivant et precendant qui fonctionne, je vois les valeurs changé. Mais lorsque je suis a la 1e valeur et que je fais precedant, on dirait que je ne suis pas a la position BOF donc mon mesage ne safficher pas, et le code continue.
Merci de bien maidée :)

11 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
17 oct. 2005 à 22:37
Salut, j'aurais plutôt fait comme ça


Private Sub cmdPrev_Click()
If rs.BOF = True Then
MsgBox ("debut de fichier")
else
rs.MovePrevious
Call UpdateTXT
end if
End Sub

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
tiguy21 Messages postés 15 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 22 juillet 2007
18 oct. 2005 à 04:33
salut
ok jai modifié comme tu me la suggeré, mais le probleme persite:

Runtime error 3021
BOF ou EOF est égale a True ou l'enregistrement actuel a été supprimé.
L'opération demandée necessite un enregistrement actuel.

Merci :)
0
codea Messages postés 94 Date d'inscription dimanche 9 mai 2004 Statut Membre Dernière intervention 6 août 2006
18 oct. 2005 à 06:02
C'est p-e un cas d'exception où il n'y a rien dans ton rs...
Si tu as encore un problème specifie dans quel contexte ... y a til des données ... ca fonctione 1 fois 2 fois ? ... pour régler un bug il faut des infos !! ...

essaie ca :

Private Sub cmdPrev_Click()
if rs.recordcount<>0 then
If rs.BOF = True Then
MsgBox ("debut de fichier")
else
rs.MovePrevious
Call UpdateTXT
end if
else
msgbox '"aucun enregistrement dans le rs"
end if
End Sub

Rien ne sert de courir, il faut partir à point.

&
0
P__ROMEO Messages postés 294 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 9 mars 2006 1
18 oct. 2005 à 12:54
moi, j'avais ce problème.je l'ai même posé sur le site. pcpt m'a proposé d'utilisé recorcunt, comme dans l'exemple de codea

moi même pour palier au problème, j'utilisais autre chose, je verifiais si le champ code (ou un champ quelconque qui ne peut pas être vide (null)) est = "" . donc, verifait ainsi:
if Rst!codeClie = "" then
MsgBox ("debut de fichier")
else
'le code.

d'ou, si le champ est vide, donc aucun enregistrement a été trouvé.

MAINTENANT, les raisons de ton erreur.
Moi personnelement après plusieur teste, j'ai conclu que lorsque je fais une somme , je ne peu plus utiliser rs.eof ou bof normalement.

donc, si dans ta requet tu a un truc du genre:
SELECT sum(note) as TotalNote , NomEle Frome Elève ......

tu ne poura pas vraiment utiliser rs.eof tout se mélange.

JE LE REDI, CELA EST LE CAS CHEZ MOI. JE NE PEUT PAS CONFIRMER POUR TOI. ESSAI et TU VERRAS
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tiguy21 Messages postés 15 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 22 juillet 2007
18 oct. 2005 à 21:15
Salut

Lerreur se produit a chaque fois que je suis au 1e enregistrement et que je fais precedant, ou bien au dernier et que je fais suivant. Ma base de donnée, est complete, il y a aucune espace vide. Ca commence de 3 a 820 pour un total de 818 enregistrement.

Codea, jai essyer ton code, jai toujours le meme probleme.

Je peux envoyé des fichier ici? Vous pourrez voir mon code et ma base de donnée

Meric
0
P__ROMEO Messages postés 294 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 9 mars 2006 1
18 oct. 2005 à 21:42
dresseur de puce t'a proposé un code, que je trouve valable, tout comme celui de codea. toi, tu as une erreur lorsque tu es en début de table. (erreur 3021) donc, pour quoi ne pas pour le moment, en attendant de trouver d'ou vient l'erreur, (vraiment si c'est urgent, et que tu as besoin du code fonctionel rapidement), pourquoi tu ne gère pas l'erreur elle même.

tu sais que l'erreur 3021 est causé lorsque tu est en début de table, et veut revenir en arrière.

le code de dresseur de puce, en plus de la gestion de l'erreur:

Private Sub cmdPrev_Click()

On Error goto Erreur

If rs.BOF = True Then
MsgBox ("debut de fichier")
else
rs.MovePrevious
Call UpdateTXT
end if

Erreur:

If Err.number = 3021 then
msgbox "Vous êtes en début de table"
else
MsgBox "Une erreur inconu c'est produite. Erreur N° " & Err.Number, vbCritical
end if

End Sub


'MAINTENANT, reste a tester. et, assure toi que l'erreur est bien 3021.
si ca ne marche pas, fais signe.

dis nous, que fait CallUpdateTxt?? (par ou il passe....)
0
P__ROMEO Messages postés 294 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 9 mars 2006 1
18 oct. 2005 à 21:46
Attention, entre End if et Erreur: il faut mettre exit sub.
Donc:

End if
Exit Sub

Erreur:

'(erreur de précipitation)
0
tiguy21 Messages postés 15 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 22 juillet 2007
18 oct. 2005 à 21:47
salut

P__romeo, cest vraiment bine de pouvoir interecepté les erreur ocmme ca, ca reglé un partie du probleme.
Jai decouvert que... lorsque je fais precendant, quand je suis au 1e enregistrement jai le message derreur intercepté, et lorsque je refais precedant, jarrive au BOF. Ma base de donnée est comme decallé de 1.

P-e que ca peut vous donnez un idée?

updateTXT ne met a jour que mes champ txt
0
P__ROMEO Messages postés 294 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 9 mars 2006 1
18 oct. 2005 à 22:18
j'ai réféchi, et ne voix pas ou peut être le problème. je continue à chercher. si quelquechose, je te fait signe.
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 18
19 oct. 2005 à 18:47
Tu peux montrer ta requete qui génère le rs ?

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
tiguy21 Messages postés 15 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 22 juillet 2007
19 oct. 2005 à 18:50
salut
voila ma request qui est dans le form load

conn.Open ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + App.Path + "\liste.mdb;Persist Security Info=False")

rs.Open "select * from liste order by titrefrancais", conn, adOpenKeyset, adLockOptimistic
rs.MoveFirst

jai egalement declaré 2 variable:
Dim conn As New ADODB.Connection
Dim rs As New Recordset

Merci :)
0