OVH Cloud OVH Cloud

Critère basé sur plusieurs enregistrements dans un formulaire basé sur plusieurs tables

3 réponses
Avatar
fredonnon
Bonjour,

J'ai besoin de vos lumières car j'erre dans l'ombre pour trouver
comment régler mon problème...

J'ai un formulaire qui contient des boutons bascule et un bouton
valider. Le bouton bascule permet de choisir le mois d'un reporting
GSM basé sur des tables attachées qui sera affiché. Le formulaire qui
s'ouvrira sera donc dépendant de tables différentes. De plus, il
n'affichera qu'un "compte facturant" GSM (chaqus compte ayant
plusieurs GSM) sur tous ceux disponibles dans la table choisie. On a
donc en plus un filtre qui s'appuie sur un contrôle dans un formulaire
précédent contenant le compte GSM à afficher de la table choisie.

Plus bas le code de mon bouton de validation mais pour les variables :

* stSource une chaîne de caractère appelant le nom de la table à
visualiser, par exemple stSource = "T_ToutGSM200409"
* [Forms]![F_AfficheDétailCompteSélectionné]![CompteGSM] pour le
filtre du compte GSM (contrôle sur un autre formulaire)

Ma question est la suivante : si je souhaite visualiser plusieurs
comptes plutôt qu'un seul dans le formulaire, et que ces comptes se
trouvent dans un champs [T_Temporaire].[CompteGSM] d'une table,
comment dois-je procéder ?

J'espère avoir été assez clair... En bref, impossible de faire une
requête de correspondance entre la table contenant les comptes à
visualiser et le formulaire qui affiche le résultat puisque le
formulaire n'est jamais bqsé sur la même table...

Merci pour votre aide...

Private Sub B_Valider_Click()
On Error GoTo test_erreur

Dim stDocName As String
Dim stLinkCriteria As String
Dim stSource As String

Select Case ChoixMois
Case 1
stSource = "T_ToutGSM200310"
Case 2
stSource = "T_ToutGSM200311"
Case 3
stSource = "T_ToutGSM200312"
Case 4
stSource = "T_ToutGSM200401"
Case 5
stSource = "T_ToutGSM200402"
Case 6
stSource = "T_ToutGSM200403"
Case 7
stSource = "T_ToutGSM200404"
End Select

stLinkCriteria = "[CompteGSM]=" & "'" &
[Forms]![F_AfficheDétailCompteSélectionné]![CompteGSM] & "'"
stDocName = "F_DétailGSMparListe"
DoCmd.OpenForm stDocName, , , , , acHidden
Forms.F_DétailGSMparListe.RecordSource = stSource
DoCmd.OpenForm stDocName, , , stLinkCriteria
DoCmd.Maximize
Exit Sub

test_erreur:
MsgBox Err
MsgBox Err.Description
End Sub

3 réponses

Avatar
Gafish
Bonjour,

Si tu veux plusieurs comptes, tu dis qu'ils se trouvent dans un seul champ.
Comment sont ils présentés dans ce champ?
Ne serait il pas plus simple déja de faire une liste avec choix multiple sur
les comptes dans le formulaire appelant qui pour l'instant contient un
compte ?
Ensuite tu parles de plusieurs tables différentes. Effectivement tu as coupé
tes tables par mois d'après ce que j'ai compris. N'aurais-tu pas eu meilleur
compte à avoir une seule table et un champ date ? Tes difficultés viennent
de là car tu ne sais du coup jamais sur quelle table tu es.
Quand tu veux visualiser plusieurs comptes, tu es basé en revanche toujours
sur une seule table mois ?
Comme je vois que tu fais du vba, tu peux avoir une solution en construisant
ta requête à la main.
Tu boucles sur les éléments sélectionnées de ta liste de comptes du premier
formulaire en mettant dans un string tous tes comptes séparés par des
virgules. Appelons lstCpt ce string. Tu récupéres aussi dans un string le
nom de la table à appeler en fonction du mois choisi. Soit NomDeLaTable ce
string.
Ensuite tu crées ta requete comme suit
MaReq = "SELECT * FROM [" & NomDeLaTable & "] WHERE [NumCompte] IN (" &
lstCpt & ");"

Tu mets ensuite cette requête en controlsource de ton form.

Arnaud

"Fredonnon" a écrit dans le message de news:

Bonjour,

J'ai besoin de vos lumières car j'erre dans l'ombre pour trouver
comment régler mon problème...

J'ai un formulaire qui contient des boutons bascule et un bouton
valider. Le bouton bascule permet de choisir le mois d'un reporting
GSM basé sur des tables attachées qui sera affiché. Le formulaire qui
s'ouvrira sera donc dépendant de tables différentes. De plus, il
n'affichera qu'un "compte facturant" GSM (chaqus compte ayant
plusieurs GSM) sur tous ceux disponibles dans la table choisie. On a
donc en plus un filtre qui s'appuie sur un contrôle dans un formulaire
précédent contenant le compte GSM à afficher de la table choisie.

Plus bas le code de mon bouton de validation mais pour les variables :

* stSource une chaîne de caractère appelant le nom de la table à
visualiser, par exemple stSource = "T_ToutGSM200409"
* [Forms]![F_AfficheDétailCompteSélectionné]![CompteGSM] pour le
filtre du compte GSM (contrôle sur un autre formulaire)

Ma question est la suivante : si je souhaite visualiser plusieurs
comptes plutôt qu'un seul dans le formulaire, et que ces comptes se
trouvent dans un champs [T_Temporaire].[CompteGSM] d'une table,
comment dois-je procéder ?

J'espère avoir été assez clair... En bref, impossible de faire une
requête de correspondance entre la table contenant les comptes à
visualiser et le formulaire qui affiche le résultat puisque le
formulaire n'est jamais bqsé sur la même table...

Merci pour votre aide...

Private Sub B_Valider_Click()
On Error GoTo test_erreur

Dim stDocName As String
Dim stLinkCriteria As String
Dim stSource As String

Select Case ChoixMois
Case 1
stSource = "T_ToutGSM200310"
Case 2
stSource = "T_ToutGSM200311"
Case 3
stSource = "T_ToutGSM200312"
Case 4
stSource = "T_ToutGSM200401"
Case 5
stSource = "T_ToutGSM200402"
Case 6
stSource = "T_ToutGSM200403"
Case 7
stSource = "T_ToutGSM200404"
End Select

stLinkCriteria = "[CompteGSM]=" & "'" &
[Forms]![F_AfficheDétailCompteSélectionné]![CompteGSM] & "'"
stDocName = "F_DétailGSMparListe"
DoCmd.OpenForm stDocName, , , , , acHidden
Forms.F_DétailGSMparListe.RecordSource = stSource
DoCmd.OpenForm stDocName, , , stLinkCriteria
DoCmd.Maximize
Exit Sub

test_erreur:
MsgBox Err
MsgBox Err.Description
End Sub


Avatar
fredonnon
Bonjour,

Je relance mon message avec une question plus simple :oP

Comment faire un filtre basé sur un champ d'une table (donc contenant
plusieurs valeurs à rechercher) si la table sur laquelle rechercher
n'est jamais la même ?

* Le champ contenant les valeurs à rechercher est
[T_Temporaire2]![CompteGSM]
* La variable de la table sur laquelle rechercher est stSource
* La zone de texte du formulaire où afficher les données filtrées
(affichant la table stSource) s'appelle
[F_DétailGSMparListeTotal]![CompteGSM]

Merci pour votre aide.

(Fredonnon) wrote in message news:...
Bonjour,

J'ai besoin de vos lumières car j'erre dans l'ombre pour trouver
comment régler mon problème...

J'ai un formulaire qui contient des boutons bascule et un bouton
valider. Le bouton bascule permet de choisir le mois d'un reporting
GSM basé sur des tables attachées qui sera affiché. Le formulaire qui
s'ouvrira sera donc dépendant de tables différentes. De plus, il
n'affichera qu'un "compte facturant" GSM (chaqus compte ayant
plusieurs GSM) sur tous ceux disponibles dans la table choisie. On a
donc en plus un filtre qui s'appuie sur un contrôle dans un formulaire
précédent contenant le compte GSM à afficher de la table choisie.

Plus bas le code de mon bouton de validation mais pour les variables :

* stSource une chaîne de caractère appelant le nom de la table à
visualiser, par exemple stSource = "T_ToutGSM200409"
* [Forms]![F_AfficheDétailCompteSélectionné]![CompteGSM] pour le
filtre du compte GSM (contrôle sur un autre formulaire)

Ma question est la suivante : si je souhaite visualiser plusieurs
comptes plutôt qu'un seul dans le formulaire, et que ces comptes se
trouvent dans un champs [T_Temporaire].[CompteGSM] d'une table,
comment dois-je procéder ?

J'espère avoir été assez clair... En bref, impossible de faire une
requête de correspondance entre la table contenant les comptes à
visualiser et le formulaire qui affiche le résultat puisque le
formulaire n'est jamais bqsé sur la même table...

Merci pour votre aide...

Private Sub B_Valider_Click()
On Error GoTo test_erreur

Dim stDocName As String
Dim stLinkCriteria As String
Dim stSource As String

Select Case ChoixMois
Case 1
stSource = "T_ToutGSM200310"
Case 2
stSource = "T_ToutGSM200311"
Case 3
stSource = "T_ToutGSM200312"
Case 4
stSource = "T_ToutGSM200401"
Case 5
stSource = "T_ToutGSM200402"
Case 6
stSource = "T_ToutGSM200403"
Case 7
stSource = "T_ToutGSM200404"
End Select

stLinkCriteria = "[CompteGSM]=" & "'" &
[Forms]![F_AfficheDétailCompteSélectionné]![CompteGSM] & "'"
stDocName = "F_DétailGSMparListe"
DoCmd.OpenForm stDocName, , , , , acHidden
Forms.F_DétailGSMparListe.RecordSource = stSource
DoCmd.OpenForm stDocName, , , stLinkCriteria
DoCmd.Maximize
Exit Sub

test_erreur:
MsgBox Err
MsgBox Err.Description
End Sub


Avatar
Gafish
Re,

En fait la requête que tu veux faire est la suivante pour schématiser :
SELECT * FROM [NomADefinirEnFonctionDuMois] WHERE [Compte] IN
(ListeDeValeurs);
C'est bien ca ?

Si c'est bien ça, vois ma réponse plus haut, que je vais peut etre
reformuler.
Pour batir ta ListeDeValeurs, tu peux mettre une liste avec choix multiples.
Tu récupères ensuite tous tes choix. Et pour le nom de ta table, tu la
constuis avec le mois choisi.
Comme je t'ai dit, l'idéal aurait été d'avoir une seule table avec un champ
date, au moins tu n'aurais pas eu de soucis.
Y a-t-il une raison particulière qui fait que tu as cette structure ?
Je ne sais pas où en est ta base dans son évolution, mais si tu peux le
faire, rassemble tout en une seule table, tu résoudras ton problème présent
ainsi que des problèmes à venir.

Arnaud


"Fredonnon" a écrit dans le message de
news:
Bonjour,

Je relance mon message avec une question plus simple :oP

Comment faire un filtre basé sur un champ d'une table (donc contenant
plusieurs valeurs à rechercher) si la table sur laquelle rechercher
n'est jamais la même ?

* Le champ contenant les valeurs à rechercher est
[T_Temporaire2]![CompteGSM]
* La variable de la table sur laquelle rechercher est stSource
* La zone de texte du formulaire où afficher les données filtrées
(affichant la table stSource) s'appelle
[F_DétailGSMparListeTotal]![CompteGSM]

Merci pour votre aide.

(Fredonnon) wrote in message
news:...

Bonjour,

J'ai besoin de vos lumières car j'erre dans l'ombre pour trouver
comment régler mon problème...

J'ai un formulaire qui contient des boutons bascule et un bouton
valider. Le bouton bascule permet de choisir le mois d'un reporting
GSM basé sur des tables attachées qui sera affiché. Le formulaire qui
s'ouvrira sera donc dépendant de tables différentes. De plus, il
n'affichera qu'un "compte facturant" GSM (chaqus compte ayant
plusieurs GSM) sur tous ceux disponibles dans la table choisie. On a
donc en plus un filtre qui s'appuie sur un contrôle dans un formulaire
précédent contenant le compte GSM à afficher de la table choisie.

Plus bas le code de mon bouton de validation mais pour les variables :

* stSource une chaîne de caractère appelant le nom de la table à
visualiser, par exemple stSource = "T_ToutGSM200409"
* [Forms]![F_AfficheDétailCompteSélectionné]![CompteGSM] pour le
filtre du compte GSM (contrôle sur un autre formulaire)

Ma question est la suivante : si je souhaite visualiser plusieurs
comptes plutôt qu'un seul dans le formulaire, et que ces comptes se
trouvent dans un champs [T_Temporaire].[CompteGSM] d'une table,
comment dois-je procéder ?

J'espère avoir été assez clair... En bref, impossible de faire une
requête de correspondance entre la table contenant les comptes à
visualiser et le formulaire qui affiche le résultat puisque le
formulaire n'est jamais bqsé sur la même table...

Merci pour votre aide...

Private Sub B_Valider_Click()
On Error GoTo test_erreur

Dim stDocName As String
Dim stLinkCriteria As String
Dim stSource As String

Select Case ChoixMois
Case 1
stSource = "T_ToutGSM200310"
Case 2
stSource = "T_ToutGSM200311"
Case 3
stSource = "T_ToutGSM200312"
Case 4
stSource = "T_ToutGSM200401"
Case 5
stSource = "T_ToutGSM200402"
Case 6
stSource = "T_ToutGSM200403"
Case 7
stSource = "T_ToutGSM200404"
End Select

stLinkCriteria = "[CompteGSM]=" & "'" &
[Forms]![F_AfficheDétailCompteSélectionné]![CompteGSM] & "'"
stDocName = "F_DétailGSMparListe"
DoCmd.OpenForm stDocName, , , , , acHidden
Forms.F_DétailGSMparListe.RecordSource = stSource
DoCmd.OpenForm stDocName, , , stLinkCriteria
DoCmd.Maximize
Exit Sub

test_erreur:
MsgBox Err
MsgBox Err.Description
End Sub