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 19/08/2011, 21h01   #1
Invité de passage
 
Femme
Étudiant
Inscription : juillet 2011
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 25
Points : 4
Points : 4
Par défaut Requetes SQL et VBA

Bonsoir à tous,

J'ai un état, appellons-le MonEtat.
A l'ouverture de l'état, je fais ma requete en sql dans le code vba, avec SELECT... FROM... WHERE... ORDER BY

Le problème c'est que mon critère passé dans le WHERE ne semble pas être pris en compte.
En effet, en mode déboggage, tout va bien, si je mets le résultat SQL dans une requete, il me sort bien tous les enregistrements que j'ai sélectionné.
En revanche, lorsque je laisse mon code s'exécuter je récupère dans mon etat tous les enregistrements (et non pas que ceux sélectionnés), ce qui me m'intéresse pas.

J'ai lu une réponse sur le forum où vous conseillez de passer par un Critère et de le rappeler dans l'instruction d'ouverture lors du Do.CommandRun.
Mais dans mon cas, j'ai deux critères dans le WHERE, je ne vois donc pas comment je peux mettre ça en oeuvre.
Avez-vous une idée ?

Merci pour votre aide
c.breizh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 22h19   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Si la partie Select de ton SQL est toujours la même une solution très simple est la suivante : Ne pas mettre de condition Where dans ton SQL la mettre dans l'appel de l'état.

Ex :

Code sql :
SELECT [taTable].* FROM [taTable] WHERE [tonChamp1]="ABC" AND [tonChamp2]="DEF";
devient
Code sql :
SELECT [taTable].* FROM [taTable];
comme source de ton état
et
Code :
docmd.OpenReport "NomTonEtat",,,"[tonChamp1]=""ABC"" and [tonChamp2]=""DEF"""
dans le VBA qui ouvre le rapport.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 20/08/2011, 16h41   #3
Invité de passage
 
Femme
Étudiant
Inscription : juillet 2011
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 25
Points : 4
Points : 4
Merci beaucoup, j'essaye ça et je vous tiens au courant.
++
c.breizh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 12h36   #4
Invité de passage
 
Femme
Étudiant
Inscription : juillet 2011
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 25
Points : 4
Points : 4
Bonjour,
J'ai essayé le code suivant :

Code :
DoCmd.OpenReport MonEtat, acViewReport, , , , "MaTable.[MonChamp1]= " & Chr(34) & Forms!MonFormulaire.OpenArgs & Chr(34) & " And MaTable.[MonChamp2] = " & MonParametre & ""
En mode déboggage, les valeurs sont bien trouvées. Néanmoins, je vois toujours tous mes enregistrements dans mon état et non pas uniquement ceux qui correspondent aux valeurs de mes critères.
Est-ce normal ?

Si je ne lui spécifie pas le nom de la table avec le champ, il est perdu, à cause des relations (plusieurs champs avec le même nom dans des tables différentes).

Merci
Bonne journée
c.breizh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 13h27   #5
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Code :
Forms!MonFormulaire.OpenArgs
Tu prends les paramêtres passés à ton formulaire qui appèle l'état ?

Habituellement c'est un champ du formulaire, quelque chose comme :

Code :
Forms![NomTonForm]![NomUnChampDuForm]
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 22h56   #6
Invité de passage
 
Femme
Étudiant
Inscription : juillet 2011
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 25
Points : 4
Points : 4
Oui je veux dans mon état les enregistrements qui ont été triés dans mon formulaire et uniquement ceux là. C'est pour ça que j'avais gardé le Form!MonFormulaire.OpenArgs (c'était comme ça que j'avais construit mon critère dans la requete de mon formulaire, qui lui tourne bien)

J'ai essayé de passer la valeur qui est conservée dans mon OpenArgs, dans une variable ensuite de mettre en critere cette valeur.

Cela ne semble pas concluant.

Lorsque je fais appel directement aux champs du formulaire, il semble ne pas savoir de quoi je parle.
La syntaxe suivante est-elle correcte ?
Code :
DoCmd.OpenReport MonEtat, acViewReport, , , , "Forms![MonFormulaire].[MonChamp1]= " & MonParametre1 & " And Forms![MonFormulaire].[MonChamp2] = " & MonParametre2 & ""
Ou MonParametre1 et MonParametre2 sont des valeurs numériques

A bientôt
c.breizh est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 15h04   #7
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 470
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 470
Points : 7 552
Points : 7 552
Peux-tu poster le contenu de OpenArgs ?

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 17h48   #8
Invité de passage
 
Femme
Étudiant
Inscription : juillet 2011
Messages : 25
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2011
Messages : 25
Points : 4
Points : 4
Bonjour,

Alors je rempli mon OpenArgs, à l'ouverture (dans le _load) de mon premier formulaire, avant celui qui me sert à générer mon état lors de la requête SQL.
Mon OpenArgs contient un numéro, qui me sert pour trier tous mes enregistrement.

Voici en gros la hierarchie :
Formulaire1 avec Bouton1
Clic sur Bouton1 => Ouverture Formulaire2 (que l'on peut modifier) avec Bouton2
Clic sur Bouton2 => Ouverture Etat (pour que je puisse faire un pdf avec les documents voulus)
L'OpenArgs est défini lors de l'ouverture de Formulaire1 et je veux que ce soit le même qui est conservé lors du passage d'un formulaire l'autre.

J'ai réussi à filtrer mon Etat, avec l'instruction Me.Filter.
1) dans le _load de l'Etat, je défini MonFiltre, avec 2 paramètres et j'ai enlevé les paramètres dans le WHERE de ma requete SQL
2) lors du clic sur un bouton pour ouvrir mon formulaire, je mets en argumets mon filtre
Code :
DoCmd.OpenReport MonEtat, acViewReport, , , , MonFiltre
Je ne suis pas entièrement satisfaite, mais ça rempli sa fonction.
Pour l'instant, je n'ai pas mieux.
A bientôt
c.breizh 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 11h32.


 
 
 
 
Partenaires

Hébergement Web