bonjour a tous,
alors voila, je voudrais arriver a afficher dans mon etat uniquement les donnees de mon formulaire.
Ca semble tout bete mais je n y parvient pas...
J ai mon etat qui fait appel a une requete (differente de celle du formulaire, est ce comme ca que l on doit proceder?)
et dans ce dernier tous mes enregistrements apparaissent :(
sur certains forums je lis que tout ce passes dans le bouton qui ouvre l etat, d autre disent que c est dans les criteres de la requete, dautres dns le \"source\"
de l etat...
Si vous avez une idee pour eclairer ma lanterne, je serais ravie :)
Exemple :
Une table--->tblEmploye
Un champ-->Num_Employe-->Numérique
Un champ-->Nom------------->Texte
Une requête-->qry_Employe
SELECT tblEmploye.Num_Employe, tblEmploye.Nom
FROM tblEmploye;
Un état-->rpt_Employe
dont la source est notre table-->tblEmploye
Un formulaire-->frm_Employe
Dont la source est notre table-->tblEmploye
Dans la section EntêteFormulaire on place un bouton-->cmd_RptEmploye
Sur click l'assistant peut créer :
Private Sub cmd_RptEmploye_Click()
On Error GoTo Err_cmd_RptEmploye_Click
Jusqu'à présent on a aucun trie.On ne fait qu'ouvrir l'état.
On va faire le trie suivant le nom, c'est à dire un champ texte : Private Sub cmd_RptEmploye_Click()
On Error GoTo Err_cmd_RptEmploye_Click
Dim stDocName As String
Dim stFiltre As String
' Vérifier si le nom est renseigné
If IsNull(Me.Nom) Then
MsgBox "Placez-vous au préalable sur un nom d'employé renseigné !", _
vbInformation, "FrancisHop"
Exit Sub
End If
' Nom de l'état
stDocName = "rpt_Employe"
' Filtrer l'état sur le nom d'employé
stFiltre = "[Nom]=""" & [Nom] & """"
DoCmd.OpenReport stDocName, acPreview, , stFiltre
Exit_cmd_RptEmploye_Click:
Exit Sub
Err_cmd_RptEmploye_Click:
MsgBox Err.Description
Resume Exit_cmd_RptEmploye_Click
End Sub
Si nous désirons éffectuer ce trie selon Num_Employe-->Numérique : Private Sub cmd_RptEmploye_Click()
On Error GoTo Err_cmd_RptEmploye_Click
Dim stDocName As String
Dim stFiltre As String
' Vérifier si le numéro est renseigné
If IsNull(Me.Num_Employe) Then
MsgBox "Placez-vous au préalable sur un numéro d'employé renseigné !", _
vbInformation, "FrancisHop"
Exit Sub
End If
' Nom de l'état
stDocName = "rpt_Employe"
' Filtrer l'état sur le numéro d'employé
stFiltre = "[Num_Employe]=" & [Num_Employe]
DoCmd.OpenReport stDocName, acPreview, , stFiltre
Exit_cmd_RptEmploye_Click:
Exit Sub
Err_cmd_RptEmploye_Click:
MsgBox Err.Description
Resume Exit_cmd_RptEmploye_Click
End Sub
*********************************************************
Maintenant, deuxième solution, on va regarder pour faire ce trie depuis
notre requête-->qry_Employe.
On copie notre état-->rpt_Employe et baptisons cette copie-->RptEmployes qui va avoir pour source notre requête-->qry_Employe légèrement modifiée pour un trie selon le numéro de notre formulaire : SELECT tblEmploye.Num_Employe, tblEmploye.Nom
FROM tblEmploye
WHERE (((tblEmploye.Num_Employe)=
[Formulaires]![frm_Employe]![Num_Employe]));
Si nous préférons un trie selon le nom : SELECT tblEmploye.Num_Employe, tblEmploye.Nom
FROM tblEmploye
WHERE (((tblEmploye.Nom)=
[Formulaires]![frm_Employe]![Nom]));
Il est préférable d'éffectuer ce trie selon le numéro, surtout si ce dernier est NuméroAuto-->Incrément-->Clef primaire.
Dans ce cas pas de risques de doublons ou homonymes.
Cordialement.
__________________________
Le peu que je sais, c'est à mon ignorance que je le dois. Sacha Guitry