Visites

   visiteurs

   visiteurs en ligne

Sujet n°270 Cacher Requête derière code Formulaire
    par Lendcap le 21/09/2009 : 19:38

Bonjour Pierre,

je fait face à une enorme difficulté. Jai suivi la procedure que tu m'as indiquée dernièrement pour cacher les requètes derière les formulaires mais je n'y arrive pas pour les requètes selections impliquant plusieurs tables ainsi que pour les requêtes union. Par ailleurs quel serait le process à observer pour un etat qui est renseigné par une sous requête renseignée elle même par une autre sous requête ?

Merci d'avance pour ton aide

Lendcap

 


Réponse n° 1 par 3Stone le 22/09/2009 : 14:13
Bonjour,


Dixit...
Jai suivi la procedure que tu m'as indiquée dernièrement pour cacher les requètes derière les formulaires


Heu... attention, ce n'est pas prévu pour cela à l'origine... de plus, cela ralenti légèrement en comparaison d'une requête enregistrée.

Il arrive en fait qu'il soit impossible d'écrire une requête "à l'avance" et cette méthode de créer la requête dans une chaîne de caractères s'avère alors bien pratique.

Le fait est que toutes les requêtes sont possible, on peut d'ailleurs créer de cette façon une requête enregistrée... biggrin

Mais, il faut maitriser la méthode.
Méthode parfois difficile à apréhender lorsque l'on doit incorporer des valeurs "externes" comme c'est le cas lorsque l'on fait référence à un critère d'on l'origine est une zone de texte qui se situe sur un/le formulaire.

Un exemple simple.
je souhaites faire une requête qui possède comme critère la valeur saisie dans une zone de texte par l'utilisateur.

Dim sSQL As String
sSQL = "SELECT NomFruit, Origine FROM T_Fruits WHERE Origine='" & Me.txtOrigine & "';"

Comme tu peux le remarquer, la référence à la zone de texte est "sortie" de la chaîne, pour concaténer sa valeur et non son nom.

Notes, tenter de "protéger" une base lorsque l'on ne maîtrise pas encore Access est une tâche plutôt ardue wink

Cordialement,
Pierre(3stone)


Réponse n° 2 par Lendcap le 23/09/2009 : 13:05

Bonjour,

jusqu'alors tt va bien mais comment integrer la clause UNION de la requête quand plusieurs tables sont impliquées. voici ce que j'ai ecris par exemple:

Me.RecordSource = "Select Champ1, Champ2 From La Table Union All Select Champ1, Champ2 From La Table2;"

Mais ça ne fonctionne pas comment remedier à cela.

Merci pour votre aide.

Lendcap

 

Réponse n° 3 par 3Stone le 24/09/2009 : 17:11
Bonjour,

Cela devrait fonctionner, pour autant que les champs soient du même type.

Donc, à un champ texte dans la première table doit correspondre un champ texte de la seconde table...

Cordialement,
Pierre(3stone)

Réponse n° 4 par Lendcap le 25/09/2009 : 11:55

Bonjour Pierre,

Mon objectif est de rendre complètement mes requêtes invisible aux utilisateurs. N'est il pas possible tout simplement de les creer dans le VBA ?

Si oui quelle serait la procedure ?

et par la suite comment utiliser ces requêtes comme source d'enregistrement d'un Etat ou d'une autre requête ?

Merci pour votre soutien

Lendcap

 

Réponse n° 5 par 3Stone le 25/09/2009 : 20:36
Salut,


Dixit...
Mon objectif est de rendre complètement mes requêtes invisible aux utilisateurs.



C'est ce que tu était en train de faire en les créant dans le code...

Sinon, solution simpliste, tu les "cache" en les sélectionnant et puis par les propriétés, tu coches l'attribut "masqué".
Mais, tout utilisateur connaissant un peu Access peut inverser cela wink

Pour créer une requête enregistrée par VBA:

Dim db As doa.Database
Dim maReq As DAO.QueryDef

Set db = CurrentDb
Set maReq = db.CreateQueryDef("Nom_de_la_requete", "Select NoClient From MaTable")


Mais elle n'est pas cachée pour autant, à moins de la supprimer après usage biggrin

Cordialement,
Pierre

[ Retour à la liste des sujets ]

Recherche



Préférences

Se reconnecter
---

Votre nom (ou pseudo) :

Votre code secret


 Nombre de membres 1 membre


Connectés :

( personne )

Haut