GNT sans publicité, site mobile, fonctionnalitées exclusives...

Aidez-moi !

Le
James
Bonjour,

J'ai déjà questionné ce forum, le grenier enfin pas mal
de ressource mais j'ai une difficulté que je n'arrive pas
à franchir.
J'ai créer un formulaire sur lequel j'ai 16 listes
déroulante : qui me permettent de définir les critères
d'une requête. Le résultat de tout ça s'affichant dans
une zone de liste.
C'est donc un filtre multi-critère.
C'est super ça marche, par contre maintenant je
souhaiterai imprimer les résultats avec l'aide d'un état.

J'ai pourtant essayé de rentrer
DocmdOpenReport,stdocname,acPreview, SQL (le nom de mon
filtre) mais y a toujours pas moyen que ça marche.

Que faire? Il y a surement un truc. J'ai besoin des
conseils d'experts avisés pour faire avancés cette
histoire.

Voici le code de mon formulaire en question, j'ai
volontairement simplifié le code pour vous éviter de
grosse lecture.
Attention dans mon code j'ai défini des cases à cocher
pour activer la saisie d'un critère :


Option Compare Database

Private Sub chkLotEb_Click()
If Me.chkLotEb Then
Me.cmbLotEb.Visible = False
Else
Me.cmbLotEb.Visible = True
End If
RefreshQuery
End Sub

Private Sub chkOutillageEb_Click()
If Me.chkOutillageEb Then
Me.cmbOutillageEb.Visible = False
Else
Me.cmbOutillageEb.Visible = True
End If
RefreshQuery
End Sub

Private Sub cmbLotEb_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub

Private Sub cmbOutillageEb_BeforeUpdate(Cancel As Integer)
RefreshQuery
End Sub


Private Sub Form_Load()
Dim ctl As Control

For Each ctl In Me.Controls
Select Case Left(ctl.Name, 3)
Case "chk"
ctl.Value = -1
Case "lbl"
ctl.Caption = "-*-*-"
Case "txt"
ctl.Visible = False
ctl.Value = ""
Case "cmb"
ctl.Visible = False
End Select

Next ctl

Me.lstResults.RowSource = "SELECT Ebaucheur.[Code SOM
Eb],Ebaucheur.[Code article],[Libellé art],Ebaucheur.
[Indice de série],Ebaucheur.[Circuit Fab],Ebaucheur.
[Procédé],Ebaucheur.[code qual fonte],Ebaucheur.[Qualité
fds Eb], Ebaucheur.[Emboitement MdB],Ebaucheur.[Qté
Moules Eb],Ebaucheur.[Qté Fonds Eb],Ebaucheur.[Code
usine], Ebaucheur.[Code stat serie],Ebaucheur.[Etat de la
série],Ebaucheur.[Lieu de stockage Eb], Ebaucheur.
[Potentiel départ Eb],Ebaucheur.[Potentiel Eb],Ebaucheur.
[Cumul Cps battus Eb] FROM [Filtre Eb]Where Ebaucheur.
[Code article]<>0;"
Me.lstResults.Requery

End Sub

Private Sub RefreshQuery()

Dim SQL As String

SQL = "SELECT Ebaucheur.[Code SOM Eb],Ebaucheur.[Code
article],[Libellé art],Ebaucheur.[Indice de
série],Ebaucheur.[Circuit Fab],Ebaucheur.
[Procédé],Ebaucheur.[code qual fonte],Ebaucheur.[Qualité
fds Eb], Ebaucheur.[Emboitement MdB],Ebaucheur.[Qté
Moules Eb],Ebaucheur.[Qté Fonds Eb],Ebaucheur.[Code
usine], Ebaucheur.[Code stat serie],Ebaucheur.[Etat de la
série],Ebaucheur.[Lieu de stockage Eb], Ebaucheur.
[Potentiel départ Eb],Ebaucheur.[Potentiel Eb],Ebaucheur.
[Cumul Cps battus Eb] FROM [Filtre Eb]Where Ebaucheur.
[Code article]<>0"

If Not Me.chkLotEb Then
SQL = SQL & " And [Code SOM Eb]='" & Me.cmbLotEb & "'"
End If

If Not Me.chkOutillageEb Then
SQL = SQL & " And [Code article]=" &
Me.cmbOutillageEb & ""
End If

SQL = SQL & ";"

Me.lstResults.RowSource = SQL
Me.lstResults.Requery
End Sub


Private Sub Commande56_Click()
On Error GoTo Err_Commande56_Click

Dim stDocName As String

stDocName = "FiltreEb"
DoCmd.OpenReport stDocName, acPreview, SQL

Exit_Commande56_Click:
Exit Sub

Err_Commande56_Click:
MsgBox Err.Description
Resume Exit_Commande56_Click

End Sub


Je vous serai vraiment reconnaissant de m'aider sur ce
problème.
Comme je suis pas une expert, essayé de m'expliqué
simplement la soltution.
Merci
Lire les 3 réponses

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #5167361
Salut,

"James"

J'ai créer un formulaire sur lequel j'ai 16 listes
déroulante : qui me permettent de définir les critères
d'une requête. Le résultat de tout ça s'affichant dans
une zone de liste.
C'est donc un filtre multi-critère.

Non... ce n'est pas un "filtre" dans le sens Access.

Tu construit en fait la "chaîne SQL" pour alimenter... une source!




J'ai pourtant essayé de rentrer
DocmdOpenReport,stdocname,acPreview, SQL (le nom de mon
filtre) mais y a toujours pas moyen que ça marche.


Justement, à cet endroit, c'est un filtre que tu peux
renseigner, du style "[NomClient]='toto'"

Or, tu souhaite transmettre le recordsource à ton état.
Comme tu as demandé 'simple', tu peux faire ceci:

Crée sur ton formulaire une petite zone de texte "txtSQL"
dont tu peux mettre la propriété visible à Non.

Lorsque tu alimente ta liste par :

Me.lstResults.RowSource = SQL

Me.lstResults.Requery NB: ce Requery est inutile...

tu place également ta chaîne dans la zone de texte:

Me!txtSQL = SQL

Cela fait, tu peux maintenant lancer ton état en mettant
d'abord dans son événement "Sur ouverture" la ligne suivante:

Me.RecordSource = Froms!TonFormulaire!txtSQL

Ainsi, l'état ira chercher sa chaîne dans le textbox du formulaire.
Bien sûr, il faut que les textbox de l'état aient leurs sources renseignées.


Ca te vas ?


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------
James
Le #5167281
Merci pour la solution, mais j'ai trouvé encore mieux!

-----Message d'origine-----
Salut,

"James"

J'ai créer un formulaire sur lequel j'ai 16 listes
déroulante : qui me permettent de définir les critères
d'une requête. Le résultat de tout ça s'affichant dans
une zone de liste.
C'est donc un filtre multi-critère.

Non... ce n'est pas un "filtre" dans le sens Access.

Tu construit en fait la "chaîne SQL" pour
alimenter... une source!





J'ai pourtant essayé de rentrer
DocmdOpenReport,stdocname,acPreview, SQL (le nom de mon
filtre) mais y a toujours pas moyen que ça marche.


Justement, à cet endroit, c'est un filtre que tu peux
renseigner, du style "[NomClient]='toto'"

Or, tu souhaite transmettre le recordsource à ton
état.

Comme tu as demandé 'simple', tu peux faire ceci:

Crée sur ton formulaire une petite zone de
texte "txtSQL"

dont tu peux mettre la propriété visible à Non.

Lorsque tu alimente ta liste par :

Me.lstResults.RowSource = SQL

Me.lstResults.Requery NB: ce Requery est
inutile...


tu place également ta chaîne dans la zone de texte:

Me!txtSQL = SQL

Cela fait, tu peux maintenant lancer ton état en
mettant

d'abord dans son événement "Sur ouverture" la ligne
suivante:


Me.RecordSource = Froms!TonFormulaire!txtSQL

Ainsi, l'état ira chercher sa chaîne dans le textbox
du formulaire.

Bien sûr, il faut que les textbox de l'état aient
leurs sources renseignées.



Ca te vas ?


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------






.



Arnaud [lwa]
Le #5167261
Bonjour James,

Et peut-on savoir ce qui est "mieux" ?

Le principe des newsgroups est de partager les solutions....

--
Arnaud
-----------------------------------
http://users.skynet.be/mpfa/
http://memoaccess.free.fr
-----------------------------------


Dans sa missive, James | Merci pour la solution, mais j'ai trouvé encore mieux!
|
|| -----Message d'origine-----
|| Salut,
||
|| "James"
||
|| J'ai créer un formulaire sur lequel j'ai 16 listes
|| déroulante : qui me permettent de définir les critères
|| d'une requête. Le résultat de tout ça s'affichant dans
|| une zone de liste.
|| C'est donc un filtre multi-critère.
||
|| Non... ce n'est pas un "filtre" dans le sens Access.
||
|| Tu construit en fait la "chaîne SQL" pour alimenter... une
|| source!
||
||
||
||
|| J'ai pourtant essayé de rentrer
|| DocmdOpenReport,stdocname,acPreview, SQL (le nom de mon
|| filtre) mais y a toujours pas moyen que ça marche.
||
||
|| Justement, à cet endroit, c'est un filtre que tu peux
|| renseigner, du style "[NomClient]='toto'"
||
|| Or, tu souhaite transmettre le recordsource à ton état.
|| Comme tu as demandé 'simple', tu peux faire ceci:
||
|| Crée sur ton formulaire une petite zone de
| texte "txtSQL"
|| dont tu peux mettre la propriété visible à Non.
||
|| Lorsque tu alimente ta liste par :
||
|| Me.lstResults.RowSource = SQL
||
|| Me.lstResults.Requery NB: ce Requery est inutile...
||
|| tu place également ta chaîne dans la zone de texte:
||
|| Me!txtSQL = SQL
||
|| Cela fait, tu peux maintenant lancer ton état en mettant
|| d'abord dans son événement "Sur ouverture" la ligne suivante:
||
|| Me.RecordSource = Froms!TonFormulaire!txtSQL
||
|| Ainsi, l'état ira chercher sa chaîne dans le textbox du
|| formulaire. Bien sûr, il faut que les textbox de l'état aient
|| leurs sources renseignées.
||
||
|| Ca te vas ?
||
||
|| --
|| A+
|| Pierre (3stone) Access MVP
|| -----------------------------
|| http://users.skynet.be/mpfa
|| -----------------------------
||
||
||
||
||
||
|| .
Publicité
Suivre les réponses
Poster une réponse
Anonyme