FORUM Tom's Hardware » Programmation » VB / VBA / VBS » mettre une variable dans une requête access 2003
 

mettre une variable dans une requête access 2003

Il y a 292 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici
Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : mettre une variable dans une requête access 2003
 
Plus d'informations

Bonjour,
J'ai un petit soucis avec une requête sous access 2003
J'aimerai qu'elle récupère a un endroit une variable venant du formulaire qui l'appelle avec un bouton.
j'ai un formulaire, dessus ya un champs de variable et un bouton, quand je clique sur le bouton ça appelle un état par une requete et la systématiquement ma requete me demande le contenue d'un variable qui a déja été remplie dans le formulaire, donc si je pouvais dire a la requete: "regarde c'est tel variable se que tu demande" ça m'arrangerai beaucoup....
 
 

Code :
  1. SELECT TOP 1 Traitement.code_t, Traitement.codeSAP, Traitement.numligne, SAP.nom, SAP.code_pc, SAP.code_tc, SAP.code_pf, SAP.code_tf, SAP.code_article, Traitement.Remarques, Produit_Chaud.nom, Traitement_Chaud.libelle, Traitement.epaisseur_couche, Traitement.frequence_pompe, Traitement.course_pompe, Produit_Froid.nom, Traitement_Froid.libelle, Traitement.nb_sup, Traitement.debit_sup, Traitement.regulation_sup, Traitement.nb_inf, Traitement.debit_inf, Traitement.regulation_inf, Traitement.ventilation_sortie, Traitement.vitesse_tapis, Traitement.debit_barbotage, Traitement.debit_dilution
  2. FROM Traitement, SAP, Produit_Chaud, Produit_Froid, Traitement_Chaud, Traitement_Froid
  3. WHERE Traitement.codeSAP=SAP.codeSAP And Produit_Chaud.code_pc=SAP.code_pc And Produit_Froid.code_pf=SAP.code_pf And Traitement_Chaud.code_tc=SAP.code_tc And Traitement_Froid.code_tf=SAP.code_tf And Traitement.codeSAP=[ICI LA VARIABLE VENANT D'UN CHAMP]
  4. ORDER BY Traitement.code_t DESC;


 
bon voila je pense que j'ai été clair.
 
[edit] merci pour me l'avoir rappellé, je ne savais plus exactement se que c'étais et où ça se trouvait la balise [ code ] [/edit]


Message édité par Aramil33 le 05-03-2008 à 14:56:14

Plus d'informations

euuuu up, c'est vraiment important, j'ai besoin d'une réponse.

Plus d'informations

Bon, personne ne peut m'aidé, j'ai entendu parlé qu'il faudrai utilisé un assistant pour les requêtes en ouvrant le formulaire puis la requête mais après je ne sais pas se qu'il faut faire.
Quelqu'un sait où se trouve l'assistant?

Plus d'informations

Bonjour Aramil,
 
C'est pas évident à faire dans le cas d'un état, mais je vais tacher de t'aiguiller. En fait il y a plusieur manière de proceder je vais t'en donner une et tu verras si cela te convient.
 
Il faut que tu utilises une variable pour transmettre le paramètre car c'est la seule solution qui permet de faire cela "facilement". Donc dans un module tu créés une variable public du genre  
 

Code :
  1. Public message() as variant


c'est une variable tableau car au moins si un jour tu as plusieurs paramètres cela fonctionnera.
 
Ensuite il faut créer une fonction publique qui permet de récupérer la valeur de message (toujours dans un module)  
 

Code :
  1. Public function getMessage(i as long) as variant
  2.     'Renvoie la valeur de message à l'indice i
  3. end function


L'avantage des fonctions publiques dans un module c'est que tu peux les appeler à l'intérieur d'une requête.
 
Donc tu modifie ta requete en remplacant ton critère [ICI LA VARIABLE...] par un getMessage(1).
 
et dans ton bouton d'exécution tu fais.  
 

Code :
  1. redim message(1)
  2. message(1) = IDE_form ' la valeur dans le formulaire
  3. docmd.openreport ....


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Plus d'informations

Merci.
J'essaye de suite.

Plus d'informations

N'oublie pas de compléter la fonction getmessage :D


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Plus d'informations

Oui, c'est ce que j'étais bêtement en train de me dire en regardant ce que tu avais écrit, bref, je sais pas quoi mettre dedans.. moi et le vb on est pas copain du tout...
bref il me faut une variable globale dans la requete je met l'appel d'un fonction
j'ai pas saisie le coté modifié le bouton... pourquoi le modifier?
et enfin la fonction me largue completement... se que je met dedans c'est la récupération de la ligne du formulaire que je veut? s'va être coton pour le petit joueur de vb que je suis....

Plus d'informations

pour la fonction il faut faire :  
 

Code :
  1. Public function getMessage(i as long) as variant
  2.     'Renvoie la valeur de message à l'indice i
  3.     getMessage = message(i)
  4. end function


 
Tu créé un module avec la variable et la fonction.
 
Il faut modifier le bouton pour que celui ci remplisse la valeur de message avant d'ouvrir l'état, sinon ton état plantera car message(1) ne sera pas initialisé.  
 
Comme je te l'ai dit c'est pas forcément très simple pour un novice en VBA mais c'est la seule méthode que je connaisse bien.
 
En fait si j'essaie de faire un dessin :D
 
                remplit                   lit la valeur
formulaire   ==>   message   <======   état


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Plus d'informations

:sarcastic:  Oui enfin je suis une brele en VBA c'est un faite, mais quand-même de la a faire un dessin...
 

Citation :

Il faut modifier le bouton pour que celui ci remplisse la valeur de message avant d'ouvrir l'état


ça, ça me suffisais largement.
 
ps: histoire de me mettre la honte totale, je suis en 2eme année de BTS informatique de gestion  :lol:

Plus d'informations

Bah :D au moins je suis sur que tu as compris :P
 
Tu sais y a de tout sur ce forum donc c'est pas toujours évident de cerner le niveau de qq'un en qq message ;)
 
Maintenant que je sais cela, je tacherai de m'adapter  :ange:


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Plus d'informations

Mouais, enfin je le dit mais je ferai peut être mieu de rien dire...
Si jamais tu dit un truc plutot simple, que je pige de travers on va en revenir au ptit dessin...
Bref essaye de me parler normalement mais vu que c'est du vba je serai peut-etre pas a la hauteur de tes parole (enfin pour le moment ça va  :pt1cable:  )

Plus d'informations

No soucis :D
 
Bon si tu bloques sur qqch n'hésites pas j'y répondrai dès que possible.


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Plus d'informations

Freeman23 a écrit :

et dans ton bouton d'exécution tu fais.  
 

Code :
  1. redim message(1)
  2. message(1) = IDE_form ' la valeur dans le formulaire
  3. docmd.openreport ....



 
Bon alors le petit probleme que j'ai c'est le "IDE_form
C'est quoi? et quand je le met dans mon vba au moment de lancer l'appli il me dit nononononon j'en veut pas de ton IDE_truc, c'est une bibliotheque introuvable (en gros je crois qu'il le prend comme une variable non déclaré)
Bref j'ai plein de donnée dans mon formulaire moi... et je doit en prendre un spécifique, je doit mettre son ptit nom?
 

Plus d'informations

oui c'est ca il faut mettre le nom de ta zone de saisie, liste ou autre comme tu l'as nommé dans ton formulaire.


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Plus d'informations

Merci, je l'ai vu 2 minute après avoir posté, j'aurai du tester avant de poster  :pfff:  
Bref je te remercie ça marche tu m'a oté une grosse épine du pied, ensuite j'ai du faire un choix sur liste assé simple (en gros sur le même bouton j'ai du mettre un if toto=une_valeur else &co
et tout marche bien (oui en plus y avait une contrainte de choix, j'ai décomposé et commencé par le plus dur)
 
voila, voila, encore mercie on se reverra peut être du coté html/php/postgres car mon prochain projet porte la dessus....

Plus d'informations

de ce coté là c pas sur que je puisse t'aider, chacun sa spé et moi (la honte...) c'est le VB.


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Plus d'informations

Pas de honte a ça, le vb est puissant (le vba moins ^^)
Bref si tu a un souchi un jour en html/php/c++ & co... fait appel a moi.

zeb
Profil : Modérateur libre
Plus d'informations

>>> Le vb est puissant (le vba moins ^^)  
Euh, non.


---------------
Règlement du forum / Règlement de Programmation / Règlement du Monde de Linux euh, n'y en a pas...
Plus d'informations

Euh,si. Pour la simple et bonne raison que le vba ne concerne qu'access (si j'ai bien tout compris)

Plus d'informations

Access, Excel, Outlook, Powerpoint et meme word... :D


---------------
S'il n'y a pas de solution c'est qu'il n'y pas de problème
Plus d'informations

Mouais enfin ça reste du langage pour un nombre limité de logiciel le vba alors que je ne pense pas que ce soit le cas du vb (enfin moi pas pro alors pas taper, nan, pas la tête :P)

zeb
Profil : Modérateur libre
Plus d'informations