Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/06/2011, 13h42   #1
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Par défaut requete et listbox

Bonjour,

Je possède un formulaire avec 1 liste déroulante (contenant des références) et une listebox. Je veux intégrer des données manuellement avec al souris de la liste déroulante vers la listebox. Ca j'y arrive avec additem ou removeitem pour en enlever.

Ce que je veux faire et ou je galère.

Avec un bouton OK, je veux ouvrir un état. Cet état fait appel à une requete qui as en paramètre les valeurs de la liste (plusieurs valeurs de reference).

Pour le moment j'arrive à faire appel à ma requete avec la valeur de la liste deroulante (1 seul valeur de reference)

Merci
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/06/2011, 21h36   #2
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Bonjour,

Accéder à plusieurs valeurs de la même ligne.

où x represente l'indice de la colonne en partant de 0.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 09h59   #3
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Je vais essayer d'être plus clair :

Dans la liste modifiable par référence, j'ai une liste d'élément.

A l'heure actuel, je sélectionne un élément dans ma liste modifiable.En cliquant sur le bouton OK, j'éxécute un Docmd.report qui fait appel à une requete avec comme paramètre le champs modifiable de mon formulaire et affiche l'état. Ceci fonctionne.

Mon évolution que je souhaiterais :
En sélectionnant mon élément dans la liste modifiable, je voudrais en appuyant sur le bouton commande10 l'ajouter à la suite de ma listbox (tout à droite). Ceci fonctionne.
Ensuite en cliquant sur le bouton OK, je voudrais toujours ouvrir mon état (qui fait appel à une requete parameétré) mais cette fois ci pas avec l'élément de la liste modifiable mais les éléments de ma listbox.

Je n'arrive pas à dire à ma requete de prendre les x éléments de la list box comme paramètre (du même champ de ma requete).

Merci
Images attachées
Type de fichier : jpg vu.jpg (83,5 Ko, 12 affichages)
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 18h38   #4
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Dans la requete tu dois utiliser l'opérateur IN(liste d'items).

Coté formulaire il faut parcourir la listbox et créer une chaine pour la transmettre à la requete.

Dans la faq tu as ce genre de code.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 09h27   #5
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Bonjour,

J'arrive a récupérer ceci mai je n'arrive pas à mettre la valeur dans la requete :

Code :
1
2
3
4
5
6
7
8
9
10
Dim i As Integer
Dim val As String
 
Dim strMsg As String, strTitre As String
Dim intStyle As Integer
 
For i = 0 To Liste9.ListCount - 1
val = Liste9.ItemData(i)
 
Next i
Dans la faq la seule chose que j'ai trouvé c'est ceci :

Comment utiliser la valeur d'une variable vba dans une requête Access ? (cette requete existe deja puis est utilise dans un état). C'est l'état qui m'intéresse.

Le probleme c'est qu'il renvoie a cette page :

http://access.developpez.com/faq/?pa...DATA#VarGlobal

et je ne touve plus rien.
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 11h49   #6
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Bonjour,

Avant de se lancer dans le code il faut analyser comment le IN() fonctionne.
Code :
WHERE Champ IN (valeur1,valeur2)
Il va donc falloir fournir l'expression [valeur1,valeur2]. Si Champ est numérique il n'y a pas de séparateur.

Code :
1
2
3
4
5
6
7
8
9
10
 
Function NumInItem(lst As ListBox) As String
Dim i As Integer
Dim strList As String
  For i = 0 To lst.ListCount - 1
      strList = strList & "," & lst.ItemData(i)
  Next i
strList = Right(strList, Len(strList) - 1) ' enlève la , du début.
NumInItem = strList
End Function
Sinon il faut un séparateur :
Code :
1
2
3
4
5
6
7
8
9
10
Function StrInItem(lst As ListBox) As String
Dim i As Integer
Dim strList As String
For i = 0 To lst.ListCount - 1
  strList = strList & "','" & lst.ItemData(i)
Next i
strList = strList & "'"   ' la simple cote de fin
strList = Right(strList, Len(strList) - 2) ' enlève le ,' du début.
StrInItem = strList
End Function
Tu appelles la fonction comme ceci. Inutile de créer une requete avec critère puisque tu le donnes dans l'option de la commande.

Code :
DoCmd.OpenReport "Table1", acViewPreview, , "Table1.N° In (" & NumInItem(Me.Liste0) & ")"
Ps : Le copier coller de code ne fonctionne que pour des fonctions ou précédure générique. Pour le reste il faut adapter.

Val en nom de variable c'est la chose à ne pas faire. Val est un mot réservé.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2011, 15h25   #7
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Bon j'ai réussi a adapter mais j'ai une question :

Voici la ligne de code (la function est identique a celle en string que tu m'as fourni qui concatenne les différente valeur de liste). Je récupère bien les data sous forme 'data1','data2','data3':

Code :
DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous", acViewPreview, , "[Graphe Evolution tous].Référence In (" & StrInItem(Me.Liste9) & ")"
Cependant je ne voit pas comment après tu lui dit que chaque référence est à prendre individuellement dans l'état. Je ne comprend pas non plus la structure du IN et son intéret.

"TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous" est mon état
[Graphe Evolution tous] est ma requete ou existe mon champs reference

liste9 est ma zone de liste

Dans ton exemple :

Code :
DoCmd.OpenReport "Table1", acViewPreview, , "Table1.N° In (" & NumInItem(Me.Liste0) & ")"
Le premier Table1 est l'état ?

Le deuxième Table1 est l'état ou la requete ?

Dans mon cas, si c'est l'état, il me demande lors de l'appui sur le bouton de renseigné le champs. Si c'est la requete (ou même la table) il ne m'affiche rien comme si rien ne correspondait à ma référence.
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 14h52   #8
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Bonjour Sylv20,

Que cherches-tu à obtenir dans ta requête ?

Je vais essayer de te donner un exemple :

Si tu utilise la requête IN que t'a communiqué Loufab, le résultat de
Code :
where [Graphe Evolution tous].Référence IN (data1, data2, data3)
, il te retournera tous les éléments de la table dont le champ référence sera égal à data1 ou data2 ou data3 (OU inclusif -> OR)

Si tu souhaite ouvrir un état, il suffit de mettre cette requête en recordsource de cet état.
A toi maintenant de savoir comment tu veux trier tes données si tu veut faire des ruptures, regroupements, ou autres traitements
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
si tout est OK, n'oubliez pas de cliquer sur
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 19h49   #9
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Et bien je veux executer un état (basé sur une requete) avec comme parametre les x éléments d'une zone de liste.

J'ai essayer de remplacer la variable entre paraenthse (" & StrInItem(Me.Liste9) & ") par une valeur connue entre cote (référence '4306592F1') . et ca marche. Il faut que je vérifie la ponctuation et que je réessaye. Cela DOIT MARCHER !!!!!
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 22h47   #10
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Alors je te propose la solution suivante :
- Tu constitues la requête de manière dynamique, tel que te l'a expliqué Loufab
- tu stockes cette variable dans une variable de type string
- tu mets cette variable en recordsource de ton état
- tu ouvres ton état

Je l'ai fait de nombreuses fois, et ça marche très bien

Voici un squelette de code sur lequel tu pourras t'appuyer (extrait de proc, donc à compléter ) :

Code :
1
2
3
4
5
6
7
8
sub ...
dim monsql as string
...
monsql = "select * from [Graphe Evolution tous] where [Graphe Evolution tous].Référence In (" & StrInItem(Me.Liste9) & ")"
Forms!["TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous"].RecordSource = monsql
DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous", acViewPreview 
...
end sub
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
si tout est OK, n'oubliez pas de cliquer sur
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 12h33   #11
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Peut-on voir le résultat de l'expression ?

Code :
"[Graphe Evolution tous].Référence In (" & StrInItem(Me.Liste9) & ")"
Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/06/2011, 17h12   #12
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Tout d'abord : MERCI.

Ca fonctionne !!!!! En fait j'ai mis l'expression StrInItem(Me.Liste9) dans une variable string.

Code :
liste_reference = StrInItem_reference(Me.Liste9)
Code :
DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous", acViewPreview, , "[Graphe Evolution tous].Référence In (" & liste_reference & ")"
Il me sort bien l'état correspondant au numéro de référence dans la liste.

Maintenant, ca se corse encore :

une référence est monté, on dit que c'est la première monte de cette reference. il peut y avoir jusqu'a 10 montes grand max.

Ma zone de liste contient maintenant deux colonnes (référence, n° monte).

l'ajout à la zone de liste (2 colonnes se fait comme ceci) : lors de l'appui sur ajouter

Code :
1
2
3
Dim ess As String
 
ess = ajouter_item(cbo_par_reference.Value, cbo_num_monte_reference.Value)
Je créer ensuite deux listes string (avec la méthode de loufab), une avec les références (string) et une avec les montes string aussi). (cela choisi via deux listes déroulantes) ex liste_référence = '4306592F1','3014221X1' et liste_monte = '1','1'

puis j'écrit ceci

Code :
DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous", acViewPreview, , "[Graphe Evolution tous].Référence In (" & liste_reference & ")" And "[Graphe Evolution tous].[N° monte] In (" & liste_monte & ")"
Mais j'ai une erreur incompatibilité type. Au début la monte était une numérique, je l'ai passé en string mais ca fait pareil.

Tout ca pour avoir le nombre d'heure réalisée avec cette référence en monte 1 (sur x produit), le nombre d'heure réalisé avec cette même référence en monte 3 (sur x produit) puis 301422X1 en monte 1 sur x produit (enfin bref tout ce que l'utilisateur choisi dans la liste des deux colonnes).

En gros c'est comme si je créais un tableau, que pour chaque référence et en telle monte choisi par l'utilisateur la requete me donne le nombre d'heure.
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 09h47   #13
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Quand j'ai des erreurs de ce type j'applique la solution décrite dans le Tuto Debogage des requetes sous VBA disponible dans la rubrique Tutoriels.
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 14h22   #14
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Je necomprend pas ce tuto.

Je met debug.print puis j'ouvre la fenetre mais somment y faire afficher quelque chose ?
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 14h29   #15
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
regarde bien l'aide access a ce sujet

tu inscrit debug.print <nom_de_ma_variable> et tu la visualise dans la fenêtre d'exécution en tapant CTRL+G
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
si tout est OK, n'oubliez pas de cliquer sur
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 14h31   #16
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
autre possibilité :

mettre un point d'arrêt puis exécuter la procédure
lorsque le point d'arrêt est atteint, ouvrir la fenêtre exécution et taper debug.print <nom_de_ma_variable> puis entrée
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
si tout est OK, n'oubliez pas de cliquer sur
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 14h54   #17
Rédacteur/Modérateur

 
Avatar de loufab
 
Homme Fabrice CONSTANS
Ingénieur développement logiciels
Inscription : avril 2005
Messages : 7 085
Détails du profil
Informations personnelles :
Nom : Homme Fabrice CONSTANS
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : avril 2005
Messages : 7 085
Points : 11 622
Points : 11 622
Bonjour,

C'est un tuto simple et totalement incontournable.

Le chapitre III du tuto est exactement ce dont tu as besoin qui est la même chose que ce que commente Jean-yves.

Si tu le suis pas-à-pas, en positionnant le debug.print suivant ton cas, tu arriveras au même résultat : voir ce que génère ton code.

Tu passe au chapitre V pour faire le test.

Cordialement,
__________________
Classe MELA(CRUD) Opérateur IN et zone de liste
MsGraph et VBA - 1e Partie 2e partie
Entête d'états-Opérateur LIKE-Evénements formulaires-Cours 2010
Complément :Générateur de msgbox
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas l'extispicine
loufab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 15h49   #18
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
J'ai mis un point d'arrêt sur ma ligne pour voir mes variables. :

Code :
DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous", acViewPreview, , "[Graphe Evolution tous].Référence In (" & liste_reference & ")" And "[Graphe Evolution tous].[N° monte] In (" & liste_monte & ")"
Quand je met ma souris dessus (et espion) :

liste_reference = '4306592F1' string
liste_monte='1' string

Tout est bon.

Pourtant après je refais lecture puis erreur incompatibilité type. Ca ne me donen rien.

pourtant les deux liste sont string, les liens vers les tables sont string aussi. Ou peut être l'incompatibilité ?
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 16h12   #19
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
As tu exécuté la requete simulant ton openreport ?

exécute
Code :
SELECT * from <nom de la table rowsource de ton report> WHERE [Graphe Evolution tous].Référence In (<contenu de liste_reference> ) And [Graphe Evolution tous].[N° monte] In (<contenu de liste_monte> )
Pour faciliter le débugage, stocke ton expression [Graphe Evolution tous].Référence In (" & liste_reference & ")" And "[Graphe Evolution tous].[N° monte] In (" & liste_monte & ")" dans une variable de type string et fait un debug.print de cette variable.

Tu peut aussi la mettre dans ton expression docmd.openreport

ex :

Code :
1
2
3
4
5
dim mon_filtre as string
...
 
mon_filtre = "[Graphe Evolution tous].Référence In (" & liste_reference & ")" And "[Graphe Evolution tous].[N° monte] In (" & liste_monte & ")"
DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous", acViewPreview, , mon_filtre
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
si tout est OK, n'oubliez pas de cliquer sur
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 17h11   #20
Nouveau Membre du Club
 
Homme
ingénieur essais électronique
Inscription : mai 2011
Messages : 128
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : ingénieur essais électronique
Secteur : Industrie

Informations forums :
Inscription : mai 2011
Messages : 128
Points : 37
Points : 37
Bon changement de programme, le sql ca me gave!!!!!

De plus, la méthode actuelle n'est peut être pas la bonne car :

si je veux :
'4306592F1' en monte 1
'3014221X1' en monte 2

J'aurait deux listes :
liste reference :
'4306592F1','301422X1'

liste monte :
'1','2'

Je pense que la méthode (avec les IN dans chaque colonne) me sortira a la fois
'4306592' en monte 1 et 2
et
'3014221X1 en monte 1 et 2 également

Alors que ce n'est pas ce que je veux. Pouvez vous me confirmer ce que je pense ?

Du coup, est ce qu'il n'y a pas moyen de faire la même chose avec un tableau. Je m'explique :
Stocké les valeurs (références et monte) de liste dans un tableau (à deux colonnes) et y faire appel dans mon openreport. Voir même peut être sans tableau, en appelant directement la bonne cellule de liste (via Liste9.Column(0, ligne) par exemple).

Voila ce que j'ai déjà fait.

Code :
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Private Sub bouton_go_Click()
 
Dim tableau_reference() As String
Dim tableau_monte() As Integer
Dim ligne, colonne As Integer
Dim nbr_ligne_liste As Integer
 
Dim val_reference As String
'Dim val_monte As Integer
Dim strMsg As String, strTitre As String
Dim intStyle As Integer
 
nbr_ligne_liste = Liste9.ListCount - 1
 
ReDim tableau_reference(nbr_ligne_liste) As String
'Dim tableau_monte(2) As Integer
 
 
For ligne = 0 To nbr_ligne_liste
    'For colonne = 0 To lst.ColumnCount - 1
        tableau_reference(ligne) = Liste9.Column(0, ligne)
        'tableau_monte(ligne) = Liste9.Column(1, ligne)
 
 
 
Next ligne
 
    'pour faire un essai d'affichage
    strMsg = tableau_reference(0) & "   " & tableau_reference(1)
    intStyle = vbOKOnly + vbInformation
    strTitre = "ATTENTION"
    MsgBox strMsg, intStyle, strTitre
 
 
For ligne = 0 To nbr_ligne_liste
 
val_reference = tableau_reference(ligne)
'val_monte = tableau_monte(ligne)
 
 DoCmd.OpenReport "TRAVAUX PAR ELEMENTS TESTES DOC GE 10 016 tous", acViewPreview, , "([Graphe Evolution tous].Référence= " & val_reference & ")" 'And "([Graphe Evolution tous].[N° monte]="&val_monte&")"
 
 
Next ligne
 
 
 
End Sub
Je sait on peut toput mettre dans le même for...next mais pour le moment je décortique.

J'ai un problème de ponctuation au moment de l'utilisation de la variable.

Croyez vous que l'on puisse faire comme cela et que ca marchera?

Peux t on ouvrir 10 fois(par exemple) le même état (sur des pages séparé bien sure) ?
sylv20 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h09.


 
 
 
 
Partenaires

Hébergement Web