cs_serge99
Messages postés78Date d'inscriptionlundi 29 août 2005StatutMembreDernière intervention14 octobre 2006
-
13 mars 2006 à 16:00
cs_serge99
Messages postés78Date d'inscriptionlundi 29 août 2005StatutMembreDernière intervention14 octobre 2006
-
13 mars 2006 à 18:34
J'ai besoin d'aide
J'ai un message d'erreur lors que j'exécute mon appli. et je ne sais où placer ce code:
If rsregistretemp.EOF = True Then
rsregistre.MoveLast
Peut-être devrais-je utiliser une autre méthode... suggestions sont les bienvenues
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 13 mars 2006 à 17:15
Personnelement, pour parcourir les éléments d'un recordset, j'utilise la boucle Do comme ceci.
....
If Not rs.EOF Then
rs.MoveFirst
Do
...Code d'exploitation des enregistrements du recordset
rs.MoveNext
Loop Until rs.EOF
End If
rs.Close
....
Avec ce système, il n'y a pas de tentative d'accès à l'enregistrement suivant EOF.
Bon courage!...
cs_serge99
Messages postés78Date d'inscriptionlundi 29 août 2005StatutMembreDernière intervention14 octobre 2006 13 mars 2006 à 17:50
Excellent :-) Cependant, j'obtiens toujours le même message d'erreur et je n'obtiens pas les valeurs du dernier recordset lorsque j'utilise ce code: (P.S. J'utilise des labels intermédiaires pour visualisées avec F8 (temporairement) ce que je fais): If Not rsregistretemp.EOF Then rsregistretemp.MoveFirstIf Not rsregistretemp2.EOF Then rsregistretemp2.MoveFirst
With rsregistreFor i = 0 To rsregistretemp.RecordCountLabelPtfus(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.EOFSQLstmt6 = "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")
LoopNext iEnd WithLorsque j'utilise intégralement ton code, rsregistretemp me donne toujours le même recordset... ce n'est pas ce que je veux. Rsregistretemp2 me donne exactement ce que je veux.
Voici un exemple de ce que je veux obtenir
PtFusion
Troncon#1
Position1
NumCable
Compte
CouleurTube
CouleurFibre
Troncon#2
Position2
NumCable2
Compte2
CouleurTube2
Fibre#2
CouleurFibre2
PHD2-23
T4000-29-105
1
CAD,29
1
0
Bleu
0
Bleu
T4000-105-25
1
CAD,29
1
Bleu
0
Bleu
C'est exactement ce que je veux obtenir. Cependant, je devrais avoir (dans mon exemple) 12 enregistrements mais j'en n'obtiens que 11 et j'ai le message d'erreur "BOF ou EOF est égal à true..."Voici un exemple de ce que j'obtiens avec ton code
PtFusion
Troncon#1
Position1
NumCable
Compte
CouleurTube
CouleurFibre
Troncon#2
Position2
NumCable2
Compte2
CouleurTube2
Fibre#2
CouleurFibre2
PHD2-23
T4000-105-25
1
CAD,29
1
0
Bleu
0
Bleu
T4000-105-25
1
CAD,29
1
Bleu
0
BleuComme tu peux le voir, j'obtiens 2 fois T4000-105-25... ce que je ne veux pasComment faire ??????
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 13 mars 2006 à 17:59
Dans le dernier code fourni, il y a une séquence d'ajout de données avec
rregistre.AddNew
...
...
...
...
il manque rregistre.Update avant rregistre.MoveNext!...
Est ce un oubli, ou est ce que le code est tel quel?...
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_jperre
Messages postés268Date d'inscriptionlundi 9 janvier 2006StatutMembreDernière intervention19 janvier 20172 13 mars 2006 à 18:23
Autre erreur de code repérée :
For i=0 To rsregistretemp.RecordCount
- Le premier enregistrement d'un recordset commence à 1 (ce n'est pas comme la collection des champs qui va de 0 à Fields.Count-1)
- D'autre part, pour certains recordsets, il faut avoir fait la manoeuvre .MoveLast pour obtenir la valeur correcte de RecordCount.
Enfin, il y a moyen de simplifier grandement l'écriture du code :
rsregistretemp.Fields("PtFusion") peut s'écrire rsregistretemp("PtFusion") tout simplement.