Bonjour,
Comment ouvrir plusieurs états (dans une boucle for ...next) avec condition where différente et les afficher ?
Bonjour,
Comment ouvrir plusieurs états (dans une boucle for ...next) avec condition where différente et les afficher ?
hello
si tes noms de formulaire et tes conditions sont "générables" à partir du compteur de boucle, c'est facile
sinon, tu peux balayer les objets état décrits dans la table système MSysObjects
tu peux aussi avoir une liste de "openReport" sans boucle For Next si la liste d'états est fixe
m'enfin, je pense que le besoin d'afficher une grand quantité d'états est la marque d'un problème d'analyse initial
il me semble plus judicieux d'avoir un formulaire de choix multicritères et un seul état pour afficher le contenu délectionné
J'ai un formulaire avec deux zone de liste modifiable (référence de piece et numero de la monte).
Un bouton Add qui ajoute la sélection de la liste modifiable dans la zone de liste (2 colonnes, une pour la référence et l'autre pour la monte)
Ensuite un bouton OK qui ouvre un état (basée sur une requete) avec un critère (les différentes valeurs de zone de liste). Je récupère ces valeurs dans un tableau puis je les utilise dans le filtre de requete. Ensuite j'ouvre l'état.
Tout fonctionne bien avec une seule valeur de liste. Mais dès que je met deux valeurs dans la liste, il ne m'ouvre qu'un seul état pourtant je suis dans une boucle FOR ... NEXT.
Pour info voici mon filtre et l'ouverture de la requete :
Voila l'erreur que je ne comprend car je n'utilise pas d'imprimante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 my_filtre = "[Graphe Evolution tous].Référence ='" & val_reference & "' And [Graphe Evolution tous].[N° monte] ='" & val_monte & "'" DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous", acViewPreview, , my_filtre
Un problème s'est produit lors de l'extraction des informations de l'imprimante pour cet objet. L'objet a pu être envoyé à une imprimante qui n'est pas disponible.
Moi je voudrai soit x état en fonction du nombre de ligne de ma liste (un état par référence et monte de piece)
ou les uns en dessous des autres (mais là je croit que c'est chaud).
Le nombre de ligne dans la liste n'est pas fixe donc impossible de faire plusieurs openreport.
Ps : utilise si possible des solutions simples car j'ai pas tout compris dans ta reponse
De toute manière il n'yaura jamais plus de 10 états demandé ouvert
Bon j'ai réussi comme ceci : J'ai l'impression que tout résidait dans la déclaration de essai() tout en haut du form
Ce code m'ouvre plusieurs instance du même état, comment mettre tout à la suite (en dessous des uns des autres).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Option Compare Database Dim essai() As [Report_TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous] Option Explicit 'dans le private sub ReDim essai(nbr_ligne_liste) As [Report_TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous] For ligne = 0 To nbr_ligne_liste val_reference = tableau_reference(ligne) val_monte = tableau_monte(ligne) Set essai(ligne) = New [Report_TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous] essai(ligne).Filter = "[Graphe Evolution tous].Référence ='" & val_reference & "' And [Graphe Evolution tous].[N° monte] ='" & val_monte & "'" essai(ligne).FilterOn = True essai(ligne).Visible = True Next ligne
hello
à la vue de ta réponse précédente, et confirmation avec la dernière, laisse vite tomber les boucles et la programmation!!!!!
tu as juste besoin d'alimenter ta requête avec le contenu de ta liste
et ensuite de faire un seul état avec un trier-regrouper judicieux qui t'imprimera autant de pages que tu en auras besoin
ton seul code VB devrait être:
Code : Sélectionner tout - Visualiser dans une fenêtre à part DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous", acViewPreview
C'est bon probleme résolu, j'ai créer moi meme ma chaine de caratere filtre pour mon état (avec des and et or).
Je crée ma chaine filtre dans une boucle for puis je la met dans la clause where de mon docmd.openreport
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 Private Sub cmd_OK_par_element_teste_Click() Dim ligne As Integer Dim val_element_teste As String Dim val_monte As Integer Dim my_filtre As String Dim strList As String strList = "" For ligne = 0 To lst_element_teste_monte.ListCount - 1 val_element_teste = lst_element_teste_monte.Column(0, ligne) val_monte = lst_element_teste_monte.Column(1, ligne) strList = strList & "or(([Graphe Evolution par element teste].[Elément testé]= '" & val_element_teste & "') and ([Graphe Evolution par element teste].[N° monte]=" & val_monte & "))" Next ligne strList = Right(strList, Len(strList) - 2) ' enlève le or du début. my_filtre = strList DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 par element teste", acViewPreview, , my_filtre End Sub
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager