Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb de syntaxe dans le critere d'une requete

4 réponses
Avatar
Pascal BENOIT
Bonjour,

N'ayant pas eu beaucoup de chance avec ma précédente question, je vais
m'efforcer de reformuler en décomposant mon problème :

1) J'ai une table T_Client :
- NomClient
- PrenomClient
- AdresseClient
etc.

2) J'ai une table T_FactureClient :
-FichierFacture

cette table est automatiquement remplie avec les fichiers contenus dans un
répertoire donné, dès l'ouverture du formulaire F_Client.

La structure des fichiers-factures ainsi récupérés est :
aammjjnn-nomduclient.xls

3) J'ai un formulaire basé sur T_Client avec un onglet "Factures" qui
présente une liste de choix dont la source est une requète :
R_FactureClientEnCours dont les caractéristiques sont les suivantes :
* Champ : FichierFacture
* Table : T_FactureClient
* Tri : Décroissant
* Afficher : OUI
* Critère : Comme "*[T_Client]![NomClient]*"
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

... et c'est là que semble se situer mon problème : la syntaxe pour ce
critère ne me donne pas la liste des factures concerannt le client en
cours.

- Quelqu'un peourrait-il avoir la gentillesse de me donner la bonne syntaxe
(ou me dire ce que je ne fais pas correctement) ?

- Une fois cette syntaxe trouvée, comment faire en sorte que les factures
ainsi listées selon ce critère soient "cliquables" pour permettre l'accès
direct au fichier Excel de la facture ?

Merci d'avance.
Cordialement,
Pascal.

4 réponses

Avatar
Pascal BENOIT
* Critère : Comme "*[T_Client]![NomClient]*"


J'ai remplacé cette syntaxe par :

Comme "*" & [T_Client]![NomClient] & "*"

et cela fait *presque* l'affaire.

En effet, j'ai maintenant un message d'avertissement :

" L'objet ne contient pas d'objet d'automatisation 'T_Client'
Vous avez essayé d'executer une procedure Visual Basic pour définir une
propriété ou une méthode pour un objet. Cependant le composant ne rend pas
la propriété ou méthode disponible pour les opérations d'automatisation.

Consultez la documentation du composant pour plus d'informations sur les
propriétés et méthodes disponibles pour les opérations d'automatisation"


... OUF ! ... J'ai bien compris que ma méthode pose un problème
d'automatisation qui fait que la liste n'est pas mise à jour en temps réel,
mais ... comment y remédier ?


- Une fois cette syntaxe trouvée, comment faire en sorte que les factures
ainsi listées selon ce critère soient "cliquables" pour permettre l'accès
direct au fichier Excel de la facture ?



Cordialement,
Pascal.

Avatar
Evaro
Re-Bonjour,

"Pascal BENOIT" a écrit dans le message de news:


* Critère : Comme "*[T_Client]![NomClient]*"


J'ai remplacé cette syntaxe par :

Comme "*" & [T_Client]![NomClient] & "*"

et cela fait *presque* l'affaire.


En effet c'est mieux ;
Mais je pense qu'il vaudrait mieux :
1 - Remplacer la Table T_Client par le formulaire ouvert :
Comme "*" & [Formulaires]![frmClient]![NomClient] & "*"
2 - Utiliser l'identifiant du client plûtot que son nom, c'est plus propre
et ça résoud les problèmes d'homonymies éventuelles.
3 - Plus simple encore, créer un formulaire client et un sous-formulaire
facture (voir ma réponse à Nico à 17 h 25 sous le titre "Automatisation")


--
@ +
Etienne
Charte du forum: http://users.skynet.be/mpfa/charte.htm


Avatar
Evaro
Bonjour,

"Pascal BENOIT" a écrit dans le message de news:


Excuse mon ignorance, je débute : c'est quoi une formulaire "Ouvert" ?


Exemple : tu veux tous les clients habitant le Vaucluse : dans ton champ
code Postal sur la ligne critère, tu mets Comme "84*" ; mais alors, rien
que pour la France métropolitaine tu dois faire 95 requêtes.

C'est pourquoi il est plus astucieux de faire une requête paramétrée :
Comme [Entrez un Code de département] & "*"
A ce moment là, à chaque exécution de ta requête, Access ouvrira une boite
de dialogue t'invitant à saisir un code de département (ton texte entre
[ ]), c'est ce qu'on appelle une requête paramétrée.

Plus convivial encore, tu peux créer un formulaire, appelons-le
frmListeClients, dans lequel tu place un contrôle zone de texte,
appelons-le txtCodeDepartement, dans lequel l'utilisateur est invité à
saisir un code de département, avant de lancer sa requête ; ta ligne
critère devient :

Comme [Formulaires]![frmListeClients]![txtCodeDepartement]" & "*"

Si ton formulaire n'est pas ouvert en mode formulaire au moment du
lancement de la requête, Access ouvrira une boîte de dialogue
avec"Formulaires![frmListeClients]![txtCodeDepartement]" au lieu de
"Entrez un Code de département".


3 - Plus simple encore, créer un formulaire client et un
sous-formulaire


facture (voir ma réponse à Nico à 17 h 25 sous le titre
"Automatisation")



Je veux bien essayer cela ... mais comment se crée un "SOUS-FORMULAIRE"
?


Créer un formulaire frmClient, généralement en mode Colonne avec un champ
Nom du client.
Créer un autre formulaire fsubFacture avec un champ Nom du client
également, généralement en mode tabulaire ou feuille de données, et
l'enregistrer.
Ouvrir frmClient en mode Création ; depuis la fenêtre base de données,
onglet formulaire, faire glisser fsubFacture vers frmClient.
Renseigner les propriétés Champ père (Contrôle Nom du client de frmClient)
et Champ fils (Champ nom du client de la table facture.
Mais dans ton cas, en l'absence d'identifiant, je crains des déboires si
les noms de client ne sont pas saisis rigoureusement de façon identique
sur les factures (Par exemple S.A. MARTIN, MARTIN SA, MARTIN S.A., etc...

--
@ +
Etienne
Charte du forum: http://users.skynet.be/mpfa/charte.htm


Avatar
Pascal BENOIT
Merci de ta patience et de tes explications.

J'ai bien réussi à mettre tout cela à profit, et la création d'un
sous-formulaire dans l'onglet de mon formulaire "principal" convient très
bien.

J'en suis maintenant à finaliser un problème de "Followhyperlink"
récalcitrant (voir fil avec "Dodo" et "hm15"), et ca devrait commencer à
prendre forme.

Encore merci.
Cordialement,
Pascal.