Prob DAO et ses méthodes BOF et EOF ( j'en ai trop marre :cry: ) [VB] - Programmation
Marsh Posté le 19-12-2001 à 20:27:11
Tu n'utilises pas bien .BOF
En fait la propriété BOF "est l'enregistrement" qui précède le premier de la table.
En gros quand tu fais :
if not enr.bof then
enr.moveprevious
call Affectation_champ_texte
...
tu vérifies que tu es sur un enreg, puis tu vas au précédent, c'est à dire: si tu es sur le premier enreg de la table, .BOF renvoie False, puis tu vas au précédent (BOF=True) et tu enchaines sur Affectation_champ_texte alors que enr n'est plus synchro sur un enreg !!
Il faut faire d'abord le enr.moveprevious, puis ton test enr.bof
J'espère que c'est clair ?
A+
Marsh Posté le 19-12-2001 à 21:30:11
ahhhhhhhhhhhhhhhhhhhhh, z'ai compris oui
le prob c'est que si je met "Enr.MovePrevious" avant "if not Enr.BOF", cela crée une erreur puisque lorsque BOF = True il ne peut pas faire Enr.MovePrevious puisque pas d'enregistrement
donc c'est moin clair
Marsh Posté le 19-12-2001 à 22:02:28
Bon je vient de trouver un truc
j'utilise la méthode .RecordCount pour connaitre le nombre d'enregistrement dans mon objet recordset ou je pourrai mettre sa valeur dans une variable que je décremente
ce qui donne dans la structure de décision
Private Sub cmdSuivant_Click()
If Enr.EOF = False And nombre_de_record <= 0 Then
Enr.MoveNext
Call Affectation_champ_texte
End If
End Sub
à moin qu'il y ai une méthode pour retourner la valeur de l'enregistrement sur lequel on est comme ca je la mets direct dans la structure de décision
Voila
Help me please
Marsh Posté le 19-12-2001 à 22:51:53
Monologueeeeeeeeeeeeeeeeeeeeee
bon j'ai trouve, chui vraiment une pov tâche moi c'est grave
en fait j'ai fait une structure double décisions imbriquées ... 50 Hit Combo
ca donen ca tout simplement:
Private Sub cmdPrecedent_Click()
If Enr.BOF = False Then Enr.MovePrevious
If Enr.BOF = False Then
Call Affectation_champ_texte
End If
End If
End Sub
enfin ze v pouvoir avance
Monologueeeeeeeeeeeeeeeeeeeeee
Marsh Posté le 20-12-2001 à 09:11:27
Désolé pour le monologue
Pour ton premier test if enr.bof = false, c'est vrai qu'en général je n'en ai pas besoin parce que je me suis assuré avant que des enregs existent et que je suis synchro avec.
Là ça dépend plus de la structure de ton prog.
A+
Marsh Posté le 20-12-2001 à 10:20:28
sylderon a écrit a écrit : Désolé pour le monologue Pour ton premier test if enr.bof = false, c'est vrai qu'en général je n'en ai pas besoin parce que je me suis assuré avant que des enregs existent et que je suis synchro avec. Là ça dépend plus de la structure de ton prog. A+ |
Tu peut detaille pour "les enregistrement existe et s'ils sont synchro" ?
Autre question qui n'as rien à voir, ecque tu as une méthode pour gèrer les valeurs NULL quand tu les affectes à des zones de texte ?
Marsh Posté le 19-12-2001 à 19:49:33
bouhouhou
Voila je vous montre mon code qui marche pas
Private Sub Form_Load()
Call main
Set Enr = BDD.OpenRecordset("Acteurs" )
Enr.MoveFirst
Call Affectation_champ_texte
End Sub
Private Sub cmdPrecedent_Click()
If Enr.BOF = False Then
Enr.MovePrevious
Call Affectation_champ_texte
End If
End Sub
Ca fait trop chier, la procédure Affectation_champ_texte permet la gestion des valeurs NULL quand j'affecte des champs aux zones de texte
Le prob c'est que lorsque je lance l'exécution la méthode BOF fait tout plante cela parcque qu'il à la valeur False (donc exécute la procedure Affectation_champ_texte), comprend pas normallement il devrait savoir qu'il est au BOF
moi j'en peux plus help please je commence a
[edtdd]--Message édité par Liquid--[/edtdd]