OVH Cloud OVH Cloud

Requête VBA ...

3 réponses
Avatar
MissAccess
Bonsoir,

Dans MonForm, j'ai une procédure VBA qui me génère une requête :

Dim MaRequete As QueryDefs, chSQL as String

chSQL = "SELECT ..... WHERE (((MonChampDeRequete) Like
Forms![MonForm].Form![MonChamp]));"

CurrentDb.QueryDefs!MaRequete.SQL = chSQL
CurrentDb.QueryDefs!MaRequete.Close

Donc, quand j'ouvre MaRequete en mode création, j'ai bien, comme critère de
MonChampDeRequête, le critère
'Comme Forms![MonForm].Form![MonChamp]'

Ceci implique que MonForm soit ouvert pour pouvoir exécuter la requête sans
me demander la valeur de MonChamp

Pour les besoins de mon application, je veux fermer MonForm puis me servir
ultérieurement de cette requête ainsi générée.
Mais pour éviter que Access me demande la valeur de MonChamp à l'exécution
de MaRequete, j'aimerais que la valeur de Forms![MonForm].Form![MonChamp]
soit passée "en dur" comme paramètre de MaRequete, c'est-à-dire que, quand
j'ouvre ma requête en mode création, j'aimerais que le critère de MonChamp
ne soit pas Forms![MonForm].Form![MonChamp], mais, par exemple, "41454" (ça
peut être une chaîne de caractère ou un entier long ou une date ou autre),
c'est à dire la valeur même de ce critère, et de surcroît correctement
convertie dans le bon format de données.

Je voudrais donc savoir comment faire dans ma procédure VBA pour transformer
ce critère de requête dynamique en valeur "en dur" dans MaRequete (ainsi le
cas échéant des méthodes de conversion des données)

Merci d'avance pour votre aide précieuse !

3 réponses

Avatar
Rv
Bonjour,

Apparement le champs 'MonChampDeRequete' est de type texte donc:

Dim MaRequete As QueryDefs, chSQL as String

chSQL = "SELECT ..... WHERE (((MonChampDeRequete) Like '" &
Forms![MonForm].Form![MonChamp])) & "';"

CurrentDb.QueryDefs!MaRequete.SQL = chSQL
CurrentDb.QueryDefs!MaRequete.Close

A+

Rv




"MissAccess" <2.2.2.2> a écrit dans le message news:
40abfd57$0$13936$
Bonsoir,

Dans MonForm, j'ai une procédure VBA qui me génère une requête :

Dim MaRequete As QueryDefs, chSQL as String

chSQL = "SELECT ..... WHERE (((MonChampDeRequete) Like
Forms![MonForm].Form![MonChamp]));"

CurrentDb.QueryDefs!MaRequete.SQL = chSQL
CurrentDb.QueryDefs!MaRequete.Close

Donc, quand j'ouvre MaRequete en mode création, j'ai bien, comme critère
de

MonChampDeRequête, le critère
'Comme Forms![MonForm].Form![MonChamp]'

Ceci implique que MonForm soit ouvert pour pouvoir exécuter la requête
sans

me demander la valeur de MonChamp

Pour les besoins de mon application, je veux fermer MonForm puis me servir
ultérieurement de cette requête ainsi générée.
Mais pour éviter que Access me demande la valeur de MonChamp à l'exécution
de MaRequete, j'aimerais que la valeur de Forms![MonForm].Form![MonChamp]
soit passée "en dur" comme paramètre de MaRequete, c'est-à-dire que, quand
j'ouvre ma requête en mode création, j'aimerais que le critère de MonChamp
ne soit pas Forms![MonForm].Form![MonChamp], mais, par exemple, "41454"
(ça

peut être une chaîne de caractère ou un entier long ou une date ou autre),
c'est à dire la valeur même de ce critère, et de surcroît correctement
convertie dans le bon format de données.

Je voudrais donc savoir comment faire dans ma procédure VBA pour
transformer

ce critère de requête dynamique en valeur "en dur" dans MaRequete (ainsi
le

cas échéant des méthodes de conversion des données)

Merci d'avance pour votre aide précieuse !




Avatar
Raymond [mvp]
Bonjour.

pour faire ta requête en dur tu peux faire:

Dim MaRequete As DAO.QueryDef
Set MaRequete = CurrentDb.QueryDefs("requête1")
MaRequete.SQL = "SELECT table1.* from table1 WHERE table1.numéro
Like '" & Forms(MonForm)(monsousform)(MonChamp) & "*'"
MaRequete.Close

ton critère est ainsi en dur dans la requête et tu peux la lancer à partir
de n'importe où, form fermé.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"MissAccess" <2.2.2.2> a écrit dans le message de
news:40abfd57$0$13936$
Bonsoir,

Dans MonForm, j'ai une procédure VBA qui me génère une requête :

Dim MaRequete As QueryDefs, chSQL as String

chSQL = "SELECT ..... WHERE (((MonChampDeRequete) Like
Forms![MonForm].Form![MonChamp]));"

CurrentDb.QueryDefs!MaRequete.SQL = chSQL
CurrentDb.QueryDefs!MaRequete.Close

Donc, quand j'ouvre MaRequete en mode création, j'ai bien, comme critère
de

MonChampDeRequête, le critère
'Comme Forms![MonForm].Form![MonChamp]'

Ceci implique que MonForm soit ouvert pour pouvoir exécuter la requête
sans

me demander la valeur de MonChamp

Pour les besoins de mon application, je veux fermer MonForm puis me servir
ultérieurement de cette requête ainsi générée.
Mais pour éviter que Access me demande la valeur de MonChamp à l'exécution
de MaRequete, j'aimerais que la valeur de Forms![MonForm].Form![MonChamp]
soit passée "en dur" comme paramètre de MaRequete, c'est-à-dire que, quand
j'ouvre ma requête en mode création, j'aimerais que le critère de MonChamp
ne soit pas Forms![MonForm].Form![MonChamp], mais, par exemple, "41454"
(ça

peut être une chaîne de caractère ou un entier long ou une date ou autre),
c'est à dire la valeur même de ce critère, et de surcroît correctement
convertie dans le bon format de données.

Je voudrais donc savoir comment faire dans ma procédure VBA pour
transformer

ce critère de requête dynamique en valeur "en dur" dans MaRequete (ainsi
le

cas échéant des méthodes de conversion des données)

Merci d'avance pour votre aide précieuse !




Avatar
Rv
Petit pb de réglage de l'horloge. Désolé!

Rv

"Rv" a écrit dans le message news:

Bonjour,

Apparement le champs 'MonChampDeRequete' est de type texte donc:

Dim MaRequete As QueryDefs, chSQL as String

chSQL = "SELECT ..... WHERE (((MonChampDeRequete) Like '" &
Forms![MonForm].Form![MonChamp])) & "';"

CurrentDb.QueryDefs!MaRequete.SQL = chSQL
CurrentDb.QueryDefs!MaRequete.Close

A+

Rv




"MissAccess" <2.2.2.2> a écrit dans le message news:
40abfd57$0$13936$
Bonsoir,

Dans MonForm, j'ai une procédure VBA qui me génère une requête :

Dim MaRequete As QueryDefs, chSQL as String

chSQL = "SELECT ..... WHERE (((MonChampDeRequete) Like
Forms![MonForm].Form![MonChamp]));"

CurrentDb.QueryDefs!MaRequete.SQL = chSQL
CurrentDb.QueryDefs!MaRequete.Close

Donc, quand j'ouvre MaRequete en mode création, j'ai bien, comme critère
de

MonChampDeRequête, le critère
'Comme Forms![MonForm].Form![MonChamp]'

Ceci implique que MonForm soit ouvert pour pouvoir exécuter la requête
sans

me demander la valeur de MonChamp

Pour les besoins de mon application, je veux fermer MonForm puis me
servir


ultérieurement de cette requête ainsi générée.
Mais pour éviter que Access me demande la valeur de MonChamp à
l'exécution


de MaRequete, j'aimerais que la valeur de
Forms![MonForm].Form![MonChamp]


soit passée "en dur" comme paramètre de MaRequete, c'est-à-dire que,
quand


j'ouvre ma requête en mode création, j'aimerais que le critère de
MonChamp


ne soit pas Forms![MonForm].Form![MonChamp], mais, par exemple, "41454"
(ça

peut être une chaîne de caractère ou un entier long ou une date ou
autre),


c'est à dire la valeur même de ce critère, et de surcroît correctement
convertie dans le bon format de données.

Je voudrais donc savoir comment faire dans ma procédure VBA pour
transformer

ce critère de requête dynamique en valeur "en dur" dans MaRequete (ainsi
le

cas échéant des méthodes de conversion des données)

Merci d'avance pour votre aide précieuse !