[VB] Prob DAO et ses méthodes BOF et EOF ( j'en ai trop marre :cry: )

Prob DAO et ses méthodes BOF et EOF ( j'en ai trop marre :cry: ) [VB] - Programmation

Marsh Posté le 19-12-2001 à 19:49:33    

bouhouhou
Voila je vous montre mon code qui marche pas :cry:
 
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 :fou:  :gun:  :gun:

 

[edtdd]--Message édité par Liquid--[/edtdd]

Reply

Marsh Posté le 19-12-2001 à 19:49:33   

Reply

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+

Reply

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 :D
:cry:

Reply

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 :sweat:
:jap:

Reply

Marsh Posté le 19-12-2001 à 22:51:53    

Monologueeeeeeeeeeeeeeeeeeeeee :D
 
bon j'ai trouve, chui vraiment une pov tâche moi c'est grave :sweat:
en fait j'ai fait une structure double décisions imbriquées ... 50 Hit Combo :D
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  :wahoo:  :)  :love:  :o  :jap:
 
Monologueeeeeeeeeeeeeeeeeeeeee :D

Reply

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+

Reply

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 ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed