Bonjour,
J'ai un petit probleme avec mon code :
Sub AllocateExperts()
Dim db As DAO.Database: Set db = CurrentDb
Dim rst As DAO.Recordset
Dim rst2 As DAO.Recordset
Set rst = db.OpenRecordset("SELECT PROP_NUM, PANEL_ID, RAPPORTEUR, EXPERT1,
EXPERT2 FROM T_FP6_PROPOSALS ", dbOpenDynaset)
Set rst2 = db.OpenRecordset("SELECT EXPERT_ID, EXPERTISE, ORGANISATION FROM
T_FP6_EXPERTS", dbOpenDynaset)
With rst
While rst.EOF = False
1
If rst.Fields(2).Value <> 0 Then
rst.MoveNext
GoTo 1
Else
End If
If rst2.EOF = True Then
rst2.MoveFirst
rst2.MoveNext
Else
rst2.MoveNext
End If
If rst.Fields(1).Value = rst2.Fields(1).Value Then
.Edit
!RAPPORTEUR = rst2.Fields(0).Value
.Update
rst.MoveNext
If rst2.EOF = True Then
rst2.MoveFirst
rst2.MoveNext
Else
rst2.MoveNext
End If
Else
GoTo 1
End If
Wend
End With
End Sub
Il me donne toujours un message que il n'y a plus de record ??
pourtant au début du code il y a la fonction eof pour qu'il se remet au
début, mais il me semble qu'il ne tient pas compte!!
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Gafish
Bonjour,
C'est pas facile de saisir l'identation dans ton code. Mais j'ai l'impression que sur la fin, il y a des cas ou tu peux faire deux rs2.MoveNext de suite sans tester pour le deuxième le EOF. Non ?
Arnaud
"Ado" a écrit dans le message de news:
Bonjour, J'ai un petit probleme avec mon code : Sub AllocateExperts() Dim db As DAO.Database: Set db = CurrentDb Dim rst As DAO.Recordset Dim rst2 As DAO.Recordset Set rst = db.OpenRecordset("SELECT PROP_NUM, PANEL_ID, RAPPORTEUR, EXPERT1, EXPERT2 FROM T_FP6_PROPOSALS ", dbOpenDynaset) Set rst2 = db.OpenRecordset("SELECT EXPERT_ID, EXPERTISE, ORGANISATION FROM T_FP6_EXPERTS", dbOpenDynaset)
With rst While rst.EOF = False 1 If rst.Fields(2).Value <> 0 Then rst.MoveNext GoTo 1 Else End If If rst2.EOF = True Then rst2.MoveFirst rst2.MoveNext Else rst2.MoveNext End If If rst.Fields(1).Value = rst2.Fields(1).Value Then
.Edit !RAPPORTEUR = rst2.Fields(0).Value .Update
rst.MoveNext If rst2.EOF = True Then rst2.MoveFirst rst2.MoveNext Else rst2.MoveNext End If Else GoTo 1 End If Wend End With End Sub
Il me donne toujours un message que il n'y a plus de record ?? pourtant au début du code il y a la fonction eof pour qu'il se remet au début, mais il me semble qu'il ne tient pas compte!!
Merci pour votre aide.
Bonjour,
C'est pas facile de saisir l'identation dans ton code.
Mais j'ai l'impression que sur la fin, il y a des cas ou tu peux faire deux
rs2.MoveNext de suite sans tester pour le deuxième le EOF. Non ?
Arnaud
"Ado" <Ado@discussions.microsoft.com> a écrit dans le message de news:
940DA25E-088D-49BE-8A39-D933E681C992@microsoft.com...
Bonjour,
J'ai un petit probleme avec mon code :
Sub AllocateExperts()
Dim db As DAO.Database: Set db = CurrentDb
Dim rst As DAO.Recordset
Dim rst2 As DAO.Recordset
Set rst = db.OpenRecordset("SELECT PROP_NUM, PANEL_ID, RAPPORTEUR,
EXPERT1,
EXPERT2 FROM T_FP6_PROPOSALS ", dbOpenDynaset)
Set rst2 = db.OpenRecordset("SELECT EXPERT_ID, EXPERTISE, ORGANISATION
FROM
T_FP6_EXPERTS", dbOpenDynaset)
With rst
While rst.EOF = False
1
If rst.Fields(2).Value <> 0 Then
rst.MoveNext
GoTo 1
Else
End If
If rst2.EOF = True Then
rst2.MoveFirst
rst2.MoveNext
Else
rst2.MoveNext
End If
If rst.Fields(1).Value = rst2.Fields(1).Value Then
.Edit
!RAPPORTEUR = rst2.Fields(0).Value
.Update
rst.MoveNext
If rst2.EOF = True Then
rst2.MoveFirst
rst2.MoveNext
Else
rst2.MoveNext
End If
Else
GoTo 1
End If
Wend
End With
End Sub
Il me donne toujours un message que il n'y a plus de record ??
pourtant au début du code il y a la fonction eof pour qu'il se remet au
début, mais il me semble qu'il ne tient pas compte!!
C'est pas facile de saisir l'identation dans ton code. Mais j'ai l'impression que sur la fin, il y a des cas ou tu peux faire deux rs2.MoveNext de suite sans tester pour le deuxième le EOF. Non ?
Arnaud
"Ado" a écrit dans le message de news:
Bonjour, J'ai un petit probleme avec mon code : Sub AllocateExperts() Dim db As DAO.Database: Set db = CurrentDb Dim rst As DAO.Recordset Dim rst2 As DAO.Recordset Set rst = db.OpenRecordset("SELECT PROP_NUM, PANEL_ID, RAPPORTEUR, EXPERT1, EXPERT2 FROM T_FP6_PROPOSALS ", dbOpenDynaset) Set rst2 = db.OpenRecordset("SELECT EXPERT_ID, EXPERTISE, ORGANISATION FROM T_FP6_EXPERTS", dbOpenDynaset)
With rst While rst.EOF = False 1 If rst.Fields(2).Value <> 0 Then rst.MoveNext GoTo 1 Else End If If rst2.EOF = True Then rst2.MoveFirst rst2.MoveNext Else rst2.MoveNext End If If rst.Fields(1).Value = rst2.Fields(1).Value Then
.Edit !RAPPORTEUR = rst2.Fields(0).Value .Update
rst.MoveNext If rst2.EOF = True Then rst2.MoveFirst rst2.MoveNext Else rst2.MoveNext End If Else GoTo 1 End If Wend End With End Sub
Il me donne toujours un message que il n'y a plus de record ?? pourtant au début du code il y a la fonction eof pour qu'il se remet au début, mais il me semble qu'il ne tient pas compte!!
Merci pour votre aide.
Ilan
Bonjour, essaie peut-etre ce code. A) J'ai ajoute des criteres de recherches dans les recordset 1) RAPPORTEUR = 0 puisque seul la valeur de ce champ t'interesse 2) Ordre de tri base sur la valeur de PANEL_ID pour rst et EXPERTISE pour rst2 B) Description du code : TANT QUE Fin rst2 n'est pas atteinte aller au premier enregistrement de rst chercher dans rst le 1er enregistrement (avec rst!PANEL_ID=rst2!EXPERTISE) SI l'enregistrement est trouve ALORS FAIRE TANT QUE Fin rst n'est pas atteinte SI rst!PANEL_ID est different de rst2!EXPERTISE ALORS sortir BOUCLE FAIRE TANT QUE FIN SI mettre a jour rst avec rst!RAPPORTEUR=rst2!EXPERT_ID aller a l'enregistrement suivant de rst BOUCLE FAIRE TANT QUE FIN SI aller a l'enregistrement suivant de rst2 FIN TANT QUE
Sub AllocateExperts() Dim db As DAO.Database: Set db = CurrentDb Dim rst As DAO.Recordset Dim rst2 As DAO.Recordset Set rst = db.OpenRecordset("SELECT PROP_NUM, PANEL_ID, RAPPORTEUR, EXPERT1," _ & "EXPERT2 FROM T_FP6_PROPOSALS WHERE RAPPORTEUR=0 ORDER BY PANEL_ID", dbOpenDynaset) Set rst2 = db.OpenRecordset("SELECT EXPERT_ID, EXPERTISE, ORGANISATION FROM" _ & "T_FP6_EXPERTS ORDER BY EXPERTISE", dbOpenDynaset)
If rst.BOF And rst.EOF Then MsgBox "La tableT_FP6_EXPERTS est vide !!": Exit Sub
While Not rst2.EOF rst.FindFirst ("PANEL_ID=" & rst2!EXPERTISE) If Not rst.NoMatch Then Do While Not rst.EOF If rst!PANEL_ID <> rst2!EXPERTISE Then Exit Do rst.Edit rst!RAPPORTEUR = rst2!EXPERT_ID rst.Update rst.MoveNext Loop End If rst.MoveFirst rst2.MoveNext Wend rst.Close rst2.Close End Sub
Bonjour,
C'est pas facile de saisir l'identation dans ton code. Mais j'ai l'impression que sur la fin, il y a des cas ou tu peux faire deux rs2.MoveNext de suite sans tester pour le deuxième le EOF. Non ?
Arnaud
"Ado" a écrit dans le message de news:
Bonjour, J'ai un petit probleme avec mon code : Sub AllocateExperts() Dim db As DAO.Database: Set db = CurrentDb Dim rst As DAO.Recordset Dim rst2 As DAO.Recordset Set rst = db.OpenRecordset("SELECT PROP_NUM, PANEL_ID, RAPPORTEUR, EXPERT1, EXPERT2 FROM T_FP6_PROPOSALS ", dbOpenDynaset) Set rst2 = db.OpenRecordset("SELECT EXPERT_ID, EXPERTISE, ORGANISATION FROM T_FP6_EXPERTS", dbOpenDynaset)
With rst While rst.EOF = False 1 If rst.Fields(2).Value <> 0 Then rst.MoveNext GoTo 1 Else End If If rst2.EOF = True Then rst2.MoveFirst rst2.MoveNext Else rst2.MoveNext End If If rst.Fields(1).Value = rst2.Fields(1).Value Then
.Edit !RAPPORTEUR = rst2.Fields(0).Value .Update
rst.MoveNext If rst2.EOF = True Then rst2.MoveFirst rst2.MoveNext Else rst2.MoveNext End If Else GoTo 1 End If Wend End With End Sub
Il me donne toujours un message que il n'y a plus de record ?? pourtant au début du code il y a la fonction eof pour qu'il se remet au début, mais il me semble qu'il ne tient pas compte!!
Merci pour votre aide.
Bonjour,
essaie peut-etre ce code.
A)
J'ai ajoute des criteres de recherches dans les recordset
1) RAPPORTEUR = 0 puisque seul la valeur de ce champ t'interesse
2) Ordre de tri base sur la valeur de PANEL_ID pour rst
et EXPERTISE pour rst2
B)
Description du code :
TANT QUE Fin rst2 n'est pas atteinte
aller au premier enregistrement de rst
chercher dans rst le 1er enregistrement
(avec rst!PANEL_ID=rst2!EXPERTISE)
SI l'enregistrement est trouve
ALORS
FAIRE TANT QUE Fin rst n'est pas atteinte
SI rst!PANEL_ID est different de rst2!EXPERTISE
ALORS sortir BOUCLE FAIRE TANT QUE
FIN SI
mettre a jour rst avec rst!RAPPORTEUR=rst2!EXPERT_ID
aller a l'enregistrement suivant de rst
BOUCLE FAIRE TANT QUE
FIN SI
aller a l'enregistrement suivant de rst2
FIN TANT QUE
Sub AllocateExperts()
Dim db As DAO.Database: Set db = CurrentDb
Dim rst As DAO.Recordset
Dim rst2 As DAO.Recordset
Set rst = db.OpenRecordset("SELECT PROP_NUM, PANEL_ID, RAPPORTEUR, EXPERT1," _
& "EXPERT2 FROM T_FP6_PROPOSALS WHERE RAPPORTEUR=0 ORDER BY PANEL_ID",
dbOpenDynaset)
Set rst2 = db.OpenRecordset("SELECT EXPERT_ID, EXPERTISE, ORGANISATION FROM" _
& "T_FP6_EXPERTS ORDER BY EXPERTISE", dbOpenDynaset)
If rst.BOF And rst.EOF Then MsgBox "La tableT_FP6_EXPERTS est vide !!": Exit
Sub
While Not rst2.EOF
rst.FindFirst ("PANEL_ID=" & rst2!EXPERTISE)
If Not rst.NoMatch Then
Do While Not rst.EOF
If rst!PANEL_ID <> rst2!EXPERTISE Then Exit Do
rst.Edit
rst!RAPPORTEUR = rst2!EXPERT_ID
rst.Update
rst.MoveNext
Loop
End If
rst.MoveFirst
rst2.MoveNext
Wend
rst.Close
rst2.Close
End Sub
Bonjour,
C'est pas facile de saisir l'identation dans ton code.
Mais j'ai l'impression que sur la fin, il y a des cas ou tu peux faire deux
rs2.MoveNext de suite sans tester pour le deuxième le EOF. Non ?
Arnaud
"Ado" <Ado@discussions.microsoft.com> a écrit dans le message de news:
940DA25E-088D-49BE-8A39-D933E681C992@microsoft.com...
Bonjour,
J'ai un petit probleme avec mon code :
Sub AllocateExperts()
Dim db As DAO.Database: Set db = CurrentDb
Dim rst As DAO.Recordset
Dim rst2 As DAO.Recordset
Set rst = db.OpenRecordset("SELECT PROP_NUM, PANEL_ID, RAPPORTEUR,
EXPERT1,
EXPERT2 FROM T_FP6_PROPOSALS ", dbOpenDynaset)
Set rst2 = db.OpenRecordset("SELECT EXPERT_ID, EXPERTISE, ORGANISATION
FROM
T_FP6_EXPERTS", dbOpenDynaset)
With rst
While rst.EOF = False
1
If rst.Fields(2).Value <> 0 Then
rst.MoveNext
GoTo 1
Else
End If
If rst2.EOF = True Then
rst2.MoveFirst
rst2.MoveNext
Else
rst2.MoveNext
End If
If rst.Fields(1).Value = rst2.Fields(1).Value Then
.Edit
!RAPPORTEUR = rst2.Fields(0).Value
.Update
rst.MoveNext
If rst2.EOF = True Then
rst2.MoveFirst
rst2.MoveNext
Else
rst2.MoveNext
End If
Else
GoTo 1
End If
Wend
End With
End Sub
Il me donne toujours un message que il n'y a plus de record ??
pourtant au début du code il y a la fonction eof pour qu'il se remet au
début, mais il me semble qu'il ne tient pas compte!!
Bonjour, essaie peut-etre ce code. A) J'ai ajoute des criteres de recherches dans les recordset 1) RAPPORTEUR = 0 puisque seul la valeur de ce champ t'interesse 2) Ordre de tri base sur la valeur de PANEL_ID pour rst et EXPERTISE pour rst2 B) Description du code : TANT QUE Fin rst2 n'est pas atteinte aller au premier enregistrement de rst chercher dans rst le 1er enregistrement (avec rst!PANEL_ID=rst2!EXPERTISE) SI l'enregistrement est trouve ALORS FAIRE TANT QUE Fin rst n'est pas atteinte SI rst!PANEL_ID est different de rst2!EXPERTISE ALORS sortir BOUCLE FAIRE TANT QUE FIN SI mettre a jour rst avec rst!RAPPORTEUR=rst2!EXPERT_ID aller a l'enregistrement suivant de rst BOUCLE FAIRE TANT QUE FIN SI aller a l'enregistrement suivant de rst2 FIN TANT QUE
Sub AllocateExperts() Dim db As DAO.Database: Set db = CurrentDb Dim rst As DAO.Recordset Dim rst2 As DAO.Recordset Set rst = db.OpenRecordset("SELECT PROP_NUM, PANEL_ID, RAPPORTEUR, EXPERT1," _ & "EXPERT2 FROM T_FP6_PROPOSALS WHERE RAPPORTEUR=0 ORDER BY PANEL_ID", dbOpenDynaset) Set rst2 = db.OpenRecordset("SELECT EXPERT_ID, EXPERTISE, ORGANISATION FROM" _ & "T_FP6_EXPERTS ORDER BY EXPERTISE", dbOpenDynaset)
If rst.BOF And rst.EOF Then MsgBox "La tableT_FP6_EXPERTS est vide !!": Exit Sub
While Not rst2.EOF rst.FindFirst ("PANEL_ID=" & rst2!EXPERTISE) If Not rst.NoMatch Then Do While Not rst.EOF If rst!PANEL_ID <> rst2!EXPERTISE Then Exit Do rst.Edit rst!RAPPORTEUR = rst2!EXPERT_ID rst.Update rst.MoveNext Loop End If rst.MoveFirst rst2.MoveNext Wend rst.Close rst2.Close End Sub
Bonjour,
C'est pas facile de saisir l'identation dans ton code. Mais j'ai l'impression que sur la fin, il y a des cas ou tu peux faire deux rs2.MoveNext de suite sans tester pour le deuxième le EOF. Non ?
Arnaud
"Ado" a écrit dans le message de news:
Bonjour, J'ai un petit probleme avec mon code : Sub AllocateExperts() Dim db As DAO.Database: Set db = CurrentDb Dim rst As DAO.Recordset Dim rst2 As DAO.Recordset Set rst = db.OpenRecordset("SELECT PROP_NUM, PANEL_ID, RAPPORTEUR, EXPERT1, EXPERT2 FROM T_FP6_PROPOSALS ", dbOpenDynaset) Set rst2 = db.OpenRecordset("SELECT EXPERT_ID, EXPERTISE, ORGANISATION FROM T_FP6_EXPERTS", dbOpenDynaset)
With rst While rst.EOF = False 1 If rst.Fields(2).Value <> 0 Then rst.MoveNext GoTo 1 Else End If If rst2.EOF = True Then rst2.MoveFirst rst2.MoveNext Else rst2.MoveNext End If If rst.Fields(1).Value = rst2.Fields(1).Value Then
.Edit !RAPPORTEUR = rst2.Fields(0).Value .Update
rst.MoveNext If rst2.EOF = True Then rst2.MoveFirst rst2.MoveNext Else rst2.MoveNext End If Else GoTo 1 End If Wend End With End Sub
Il me donne toujours un message que il n'y a plus de record ?? pourtant au début du code il y a la fonction eof pour qu'il se remet au début, mais il me semble qu'il ne tient pas compte!!
Merci pour votre aide.
3stone
Salut,
C'est ton horrible "goto 1" qui fou le bazard...
-- A+ Pierre (3stone) Access MVP ~~~~~~~~~~~~~~~~~~~~~~~ http://users.skynet.be/mpfa http://users.skynet.be/accesshome
"Ado" a écrit dans le message news:
Bonjour, J'ai un petit probleme avec mon code : Sub AllocateExperts() Dim db As DAO.Database: Set db = CurrentDb Dim rst As DAO.Recordset Dim rst2 As DAO.Recordset Set rst = db.OpenRecordset("SELECT PROP_NUM, PANEL_ID, RAPPORTEUR, EXPERT1, EXPERT2 FROM T_FP6_PROPOSALS ", dbOpenDynaset) Set rst2 = db.OpenRecordset("SELECT EXPERT_ID, EXPERTISE, ORGANISATION FROM T_FP6_EXPERTS", dbOpenDynaset)
With rst While rst.EOF = False 1 If rst.Fields(2).Value <> 0 Then rst.MoveNext GoTo 1 Else End If If rst2.EOF = True Then rst2.MoveFirst rst2.MoveNext Else rst2.MoveNext End If If rst.Fields(1).Value = rst2.Fields(1).Value Then
.Edit !RAPPORTEUR = rst2.Fields(0).Value .Update
rst.MoveNext If rst2.EOF = True Then rst2.MoveFirst rst2.MoveNext Else rst2.MoveNext End If Else GoTo 1 End If Wend End With End Sub
Il me donne toujours un message que il n'y a plus de record ?? pourtant au début du code il y a la fonction eof pour qu'il se remet au début, mais il me semble qu'il ne tient pas compte!!
Merci pour votre aide.
Salut,
C'est ton horrible "goto 1" qui fou le bazard...
--
A+
Pierre (3stone) Access MVP
~~~~~~~~~~~~~~~~~~~~~~~
http://users.skynet.be/mpfa
http://users.skynet.be/accesshome
"Ado" <Ado@discussions.microsoft.com> a écrit dans le message news:
940DA25E-088D-49BE-8A39-D933E681C992@microsoft.com...
Bonjour,
J'ai un petit probleme avec mon code :
Sub AllocateExperts()
Dim db As DAO.Database: Set db = CurrentDb
Dim rst As DAO.Recordset
Dim rst2 As DAO.Recordset
Set rst = db.OpenRecordset("SELECT PROP_NUM, PANEL_ID, RAPPORTEUR, EXPERT1,
EXPERT2 FROM T_FP6_PROPOSALS ", dbOpenDynaset)
Set rst2 = db.OpenRecordset("SELECT EXPERT_ID, EXPERTISE, ORGANISATION FROM
T_FP6_EXPERTS", dbOpenDynaset)
With rst
While rst.EOF = False
1
If rst.Fields(2).Value <> 0 Then
rst.MoveNext
GoTo 1
Else
End If
If rst2.EOF = True Then
rst2.MoveFirst
rst2.MoveNext
Else
rst2.MoveNext
End If
If rst.Fields(1).Value = rst2.Fields(1).Value Then
.Edit
!RAPPORTEUR = rst2.Fields(0).Value
.Update
rst.MoveNext
If rst2.EOF = True Then
rst2.MoveFirst
rst2.MoveNext
Else
rst2.MoveNext
End If
Else
GoTo 1
End If
Wend
End With
End Sub
Il me donne toujours un message que il n'y a plus de record ??
pourtant au début du code il y a la fonction eof pour qu'il se remet au
début, mais il me semble qu'il ne tient pas compte!!
-- A+ Pierre (3stone) Access MVP ~~~~~~~~~~~~~~~~~~~~~~~ http://users.skynet.be/mpfa http://users.skynet.be/accesshome
"Ado" a écrit dans le message news:
Bonjour, J'ai un petit probleme avec mon code : Sub AllocateExperts() Dim db As DAO.Database: Set db = CurrentDb Dim rst As DAO.Recordset Dim rst2 As DAO.Recordset Set rst = db.OpenRecordset("SELECT PROP_NUM, PANEL_ID, RAPPORTEUR, EXPERT1, EXPERT2 FROM T_FP6_PROPOSALS ", dbOpenDynaset) Set rst2 = db.OpenRecordset("SELECT EXPERT_ID, EXPERTISE, ORGANISATION FROM T_FP6_EXPERTS", dbOpenDynaset)
With rst While rst.EOF = False 1 If rst.Fields(2).Value <> 0 Then rst.MoveNext GoTo 1 Else End If If rst2.EOF = True Then rst2.MoveFirst rst2.MoveNext Else rst2.MoveNext End If If rst.Fields(1).Value = rst2.Fields(1).Value Then
.Edit !RAPPORTEUR = rst2.Fields(0).Value .Update
rst.MoveNext If rst2.EOF = True Then rst2.MoveFirst rst2.MoveNext Else rst2.MoveNext End If Else GoTo 1 End If Wend End With End Sub
Il me donne toujours un message que il n'y a plus de record ?? pourtant au début du code il y a la fonction eof pour qu'il se remet au début, mais il me semble qu'il ne tient pas compte!!