OVH Cloud OVH Cloud

Problème de recordset

3 réponses
Avatar
jacquizou
Bonjour ! Voici mon probl=E8me, j'ai trois tables et deux formulaires
:

Table tblAffectation (champs : num_=E9tudiant, num_formateur,
ztxAnnotation)
Table tblPROMOTION (champs : num_=E9tudiant, nom_=E9tudiant,
ztxCommentaire)
Table tblFormateurs (champs : num_formateur, nom_formateur)

Formulaire Promotion_for (champs : num_=E9tudiant, ztxCommentaire, zone
de liste modifiable : nom_formateur) + un bouton =AB Ajouter =BB qui
ouvre le formulaire Annotation.

Formulaire Annotation_for (champs : num_=E9tudiant, nom_formateur,
ztxAnnotation) + un bouton =AB Sortie =BB qui retourne au formulaire
Promotion_for..

Ce que j'essaie de faire, c'est que, dans le formulaire
Promotion_for, le champ ztxCommentaire affiche, pour chaque =E9tudiant,
l'ensemble des commentaires entr=E9s par les formateurs dans le champ
ztxAnnotation du formulaire Annotation_for..

J'ai donc rentr=E9 le code suivant dans les propri=E9t=E9s du bouton de
sortie du formulaire Annotation_for :

Private Sub Commande22_Click()
On Error GoTo Err_Commande22_Click
Dim connex As ADODB.Connection
Dim ztxCommentaire As String
Dim rdsan As New ADODB.Recordset

rdsan.Open "TblAffectation", CurrentProject.Connection
rdsan.MoveFirst
Do Until rdsan.EOF
ztxCommentaire =3D rdsan![ztxAnnotation]
rdsan.MoveNext
Loop
Set rdsan =3D Nothing
Set connex =3D Nothing

DoCmd.Close

Exit_Commande22_Click:
Exit Sub

Err_Commande22_Click:
MsgBox Err.Description
Resume Exit_Commande22_Click

End Sub

Le message d'erreur : =AB Impossible de trouver l'objet dans la
collection correspondant au nom ou =E0 la r=E9f=E9rence ordinale demand=E9
=BB s'affiche. Je ne comprends pas....

3 réponses

Avatar
Eric
Bonjour,

Remplaces rdsan![ztxAnnotation] par rdsan(2) ou encore par
rdsan.Fields(2).Value

PS: Tu parcours toute la table sans tenir compte du num_etudiant pour
remplir la ztxCommentaire ??? De plus comme tu ne concatènes pas , tu
afficheras uniquement le dernier commentaire.
Faire plutôt: ztxCommentaire = ztxCommentaire & rdsan(2) & vbCrLf pour
avoir tous les commentaires mais il faudrait réduire le recordset ax
seuls enregistrements correspndants à l'étudiant voulu.

Bonjour ! Voici mon problème, j'ai trois tables et deux formulaires
:

Table tblAffectation (champs : num_étudiant, num_formateur,
ztxAnnotation)
Table tblPROMOTION (champs : num_étudiant, nom_étudiant,
ztxCommentaire)
Table tblFormateurs (champs : num_formateur, nom_formateur)

Formulaire Promotion_for (champs : num_étudiant, ztxCommentaire, zone
de liste modifiable : nom_formateur) + un bouton « Ajouter » qui
ouvre le formulaire Annotation.

Formulaire Annotation_for (champs : num_étudiant, nom_formateur,
ztxAnnotation) + un bouton « Sortie » qui retourne au formulaire
Promotion_for..

Ce que j'essaie de faire, c'est que, dans le formulaire
Promotion_for, le champ ztxCommentaire affiche, pour chaque étudiant,
l'ensemble des commentaires entrés par les formateurs dans le champ
ztxAnnotation du formulaire Annotation_for..

J'ai donc rentré le code suivant dans les propriétés du bouton de
sortie du formulaire Annotation_for :

Private Sub Commande22_Click()
On Error GoTo Err_Commande22_Click
Dim connex As ADODB.Connection
Dim ztxCommentaire As String
Dim rdsan As New ADODB.Recordset

rdsan.Open "TblAffectation", CurrentProject.Connection
rdsan.MoveFirst
Do Until rdsan.EOF
ztxCommentaire = rdsan![ztxAnnotation]
rdsan.MoveNext
Loop
Set rdsan = Nothing
Set connex = Nothing

DoCmd.Close

Exit_Commande22_Click:
Exit Sub

Err_Commande22_Click:
MsgBox Err.Description
Resume Exit_Commande22_Click

End Sub

Le message d'erreur : « Impossible de trouver l'objet dans la
collection correspondant au nom ou à la référence ordinale demandé
» s'affiche. Je ne comprends pas....



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Eric
.../...

Je suppose que le formulaire est en mode simple.
Donc plutot qu'ouvrir la table, ouvres une requête pour l'étudiant voulu.
Ca donnerait :
rdsan.Open "Select * from TblAffectation where num_etudiant=" &
me.num_etudiant, CurrentProject.Connection

Puisque tu utilises la connexion de CurrentProject, la déclaration Dim
connex as adodb.connection ne sert à rien.

Bonjour,

Remplaces rdsan![ztxAnnotation] par rdsan(2) ou encore par
rdsan.Fields(2).Value

PS: Tu parcours toute la table sans tenir compte du num_etudiant pour
remplir la ztxCommentaire ??? De plus comme tu ne concatènes pas , tu
afficheras uniquement le dernier commentaire.
Faire plutôt: ztxCommentaire = ztxCommentaire & rdsan(2) & vbCrLf pour
avoir tous les commentaires mais il faudrait réduire le recordset ax
seuls enregistrements correspndants à l'étudiant voulu.


Bonjour ! Voici mon problème, j'ai trois tables et deux formulaires
:

Table tblAffectation (champs : num_étudiant, num_formateur,
ztxAnnotation)
Table tblPROMOTION (champs : num_étudiant, nom_étudiant,
ztxCommentaire)
Table tblFormateurs (champs : num_formateur, nom_formateur)

Formulaire Promotion_for (champs : num_étudiant, ztxCommentaire, zone
de liste modifiable : nom_formateur) + un bouton « Ajouter » qui
ouvre le formulaire Annotation.

Formulaire Annotation_for (champs : num_étudiant, nom_formateur,
ztxAnnotation) + un bouton « Sortie » qui retourne au formulaire
Promotion_for..

Ce que j'essaie de faire, c'est que, dans le formulaire
Promotion_for, le champ ztxCommentaire affiche, pour chaque étudiant,
l'ensemble des commentaires entrés par les formateurs dans le champ
ztxAnnotation du formulaire Annotation_for..

J'ai donc rentré le code suivant dans les propriétés du bouton de
sortie du formulaire Annotation_for :

Private Sub Commande22_Click()
On Error GoTo Err_Commande22_Click
Dim connex As ADODB.Connection
Dim ztxCommentaire As String
Dim rdsan As New ADODB.Recordset

rdsan.Open "TblAffectation", CurrentProject.Connection
rdsan.MoveFirst
Do Until rdsan.EOF
ztxCommentaire = rdsan![ztxAnnotation]
rdsan.MoveNext
Loop
Set rdsan = Nothing
Set connex = Nothing

DoCmd.Close

Exit_Commande22_Click:
Exit Sub

Err_Commande22_Click:
MsgBox Err.Description
Resume Exit_Commande22_Click

End Sub

Le message d'erreur : « Impossible de trouver l'objet dans la
collection correspondant au nom ou à la référence ordinale demandé
» s'affiche. Je ne comprends pas....





--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr


Avatar
jacquizou
Bonjour,

Voici mon nouveau code :

Private Sub Commande22_Click()
On Error GoTo Err_Commande22_Click

Dim ztxCommentaire As String
Dim ztxAnnotation As String
Dim rdsan As New ADODB.Recordset

rdsan.Open "SELECT * from TblAffectation where num_étudiant='" &
Me.Num_étudiant & "'", CurrentProject.Connection
rdsan.MoveFirst
Do Until rdsan.EOF
ztxCommentaire = ztxCommentaire & rdsan(2) & vbCrLf
rdsan.MoveNext
Loop
Set rdsan = Nothing
DoCmd.Close

Exit_Commande22_Click:
Exit Sub

Err_Commande22_Click:
MsgBox Err.Description
Resume Exit_Commande22_Click

End Sub

Cette fois-ci, dès l'instant où je complète mes champs, je retourne
bien à mon 1er formulaire, mais rien ne se passe. mes données ne
s'inscrivent pas dans mon champs "ztxCommentaire".
Je ne comprends toujours pas...