Access : exécuter une variable dans une reque
Résolu
Bonjour
J'ai un petit problème que je n'arrive pas à résoudre.
Ma base est déstinée à créer un outil de suivi réseau pour mon entreprise (savoir quel port de quel switch alimente la prise X)
J'ai créer un premier formulaire où l'on choisi l'etage, la zone, le numéro de prise et si elle est doublée ou non. Ces infos forment le numéro de prise complet (ex. 6223A où le 6 est l'etage, le 2 est la zone, 23 le numéro de prise et A la position sur le doubleur).
Le numéro de prise total se calcul dans un champ texte après avoir choisi les infos adéquates à travers des groupes d'options. Bref mon numéro de prise est une variable appelé Priz.
Mon souci est que je veux, utiliser cette variable dans une requete qui me ressort les infos sur sa source donc quel port de quel switch alimente la prise. En gros je veux executer ma requete à partir de ma variable via un bouton mais je ne vois pas du tout comment faire cela...
Si vous avez une idée.......
J'ai un petit problème que je n'arrive pas à résoudre.
Ma base est déstinée à créer un outil de suivi réseau pour mon entreprise (savoir quel port de quel switch alimente la prise X)
J'ai créer un premier formulaire où l'on choisi l'etage, la zone, le numéro de prise et si elle est doublée ou non. Ces infos forment le numéro de prise complet (ex. 6223A où le 6 est l'etage, le 2 est la zone, 23 le numéro de prise et A la position sur le doubleur).
Le numéro de prise total se calcul dans un champ texte après avoir choisi les infos adéquates à travers des groupes d'options. Bref mon numéro de prise est une variable appelé Priz.
Mon souci est que je veux, utiliser cette variable dans une requete qui me ressort les infos sur sa source donc quel port de quel switch alimente la prise. En gros je veux executer ma requete à partir de ma variable via un bouton mais je ne vois pas du tout comment faire cela...
Si vous avez une idée.......
Configuration: Windows XP Internet Explorer 6.0
24 réponses
Résumé de la discussion
Le problème central porte sur l’utilisation d’une variable Priz dans une requête pour récupérer le port et le switch alimentant une prise réseau, via un formulaire Windows. Des conseils montrent comment construire dynamiquement la requête SQL, puis affecter le résultat à la source de données d’une zone de liste. Dans l’exemple optimal, StrSql est initialisé puis enrichi par WHERE Prise = '" & Priz & "' et la zone de liste reçoit StrSql via RowSource. D’autres échanges abordent aussi la récupération de la valeur depuis un champ texte et les détails autour de Me et du contrôle VB.
-
Merci à toi !!!
Bonne journée encore et @ bientot sans aucun doute -
Merci Blux, je note tes conseils. Je m'étais mal exprimé, c'est clair que dans une msgbox, on ne peut qu'afficher du texte => MsgBox, ça veut dire ce que ca veut dire :-)
Par contre avant que je ferme le topic, pourrais-tu m'eclaircir sur deux points ??
1 : quel est le role ou la fonction de Rowsource ??
2 : à quoi sert le Me dans le code VB ?? (ex. Me.Prise.Enabled = True), car dans mon code que je mette Me ou pas, ça ne change strictement rien...
Merci pour tes eclaircissement :-)
et merci encore pour ton aide !-
Modérateur1- C'est la valeur de la propriété "contenu" de la zone de liste (appuie sur F1 quand ton curseur est dans le champ 'contenu' des propriétés de ta zone de liste )
2- Il fait référence à l'objet courant sans le nommer (formulaire, base...)
Tu pourais aussi mettre toto.prise.enabled = true, où toto n'est pas le formulaire sur lequel tu es, mais que tu veux modifier sans que l'utilisateur ne le voie, par exemple...
-
-
Ok Blux, je l'ai fait et..... ça marche nikel, jte remercie de tout coeur :-)
après autant que je me souvienne, j'ai créer cette zone de liste avec l'assistant !! bref, c'est logique en fait ce que tu me dit... pas besoin de chercher bien loin parfois :p
maintenant que ca marche, je vais encore chercher comment faire pour qu'il me mette une msgbox lorsque la prise saisie n'existe pas. Voir meme dans cette msgbox, un bouton pour la créer... mais là ca se complique :p
je vais m'y atteler-
ModérateurUne msgbox ne sert qu'à afficher un texte, il est impossible d'y rajouter des boutons ou quoi que ce soit d'autre...
Par contre, tu peux faire afficher un formulaire en fenêtre modale (qui reste au dessus de toutes les autres et qu'on doit fermer pour continuer), dans lequel il y a le message de non-existence et autant de boutons et gadgets que tu souhaites...
Si les réponses t'ont satisfait, coche la case résolu au début du post...
-
-
ModérateurVire-moi "liste de champs" dans origine source et remplace par table/requête, mets à blanc "contenu", mets 2 dans Nbre colonnes et 2;2 dans largeur colonnes...
Le nombre de colonnes que tu as rempli ne s'applique pas à ce que tu veux afficher, c'est la requête qui le précisera. Ce que tu as mis (Prise, Switch et Port) est une liste de valeurs qui vont apparaitre...
Tu l'as créée comment ta zone de liste, avec un assistant, ou tu l'as traffiquée toi-même ? :-)
-
J'insiste aussi lol !
OUI resu_priz est une zone de liste et 3 colonnes sont prévus : Prise, Switch et Port.
Tu peux jeter un oeil ici :
http://hebergement-images.voiloo.net/membres/viewimg.php?img=18ce98e10cfdbf59233e649fe6fa2311.jpg -
ModérateurResu_priz est bien une zone de liste ? (j'insiste !), et pas un champ texte ?
Combien de colonnes sont prévues à l'affichage ?
-
Bonjour
Désolé de ne pas avoir répondu plus tot, mais je suis parti tot hier...
Meme avec l'espace que j'ai oublié, cela ne change rien, ça me ressort quand meme SELECT [Port Switch],[Switch d'Etage] FROM T_PRISE WHERE Prise = '" & Calcul & "';
En fait ce que j'aimerais : j'ai une requete qui me cherche le switch et son port concerné par le numéro de prise entré. Si j'execute simplement la requete, j'entre le numéro de prise via une input box et ça me ressort les infos que je veux. Donc là, j'aimerais que, au lieu d'entré le num de prise manuellement, que en cliquant sur mon bouton sur lequel j'ai affecté ma requete, qu'il me prenne mon num de prise (qui est une variable) et qu'il me sorte les infos automatiquement. Et ze trouve pas pour le moment :( -
Oui c'est bien ce que j'ai fait
je te met le code ci dessous peut etre y verras tu une erreur !!
Private Sub BC_Requete_rch_click Dim StrSql as String StrSql = "SELECT [Port Switch],[Switchd'Etage] FROM T_PRISE" StrSql = StrSql + "WHERE Prise = '" & Calcul & "';" Resu_Priz.RowSource = StrSql Msgbox StrSql End Sub
-
mes reponses ne passent plus !
-
ModérateurTu affectes cette chaine à une zone de liste par .rowsource ?
C'est bien un contrôle de type 'zone de liste' ?
-
Ok mais dans ce cas là il m'affiche l'enchainement de la concaténation
=>SELECT [Port Switch],[Switch d'Etage] FROM T_PRISEWHERE Prise = '" & Calcul & "';
et j'ai bien fait ce que tu m'a dit lol, j'ai vérifié et revérifier -
ModérateurTu as oublié de concaténer les deux lignes de la requête (relis bien mon exemple) :
StrSql = "SELECT Port Switch,Switch d'Etage FROM T_PRISE" StrSql = StrSql + "WHERE Prise = '" & Calcul & "';"C'est donc normal qu'il n'affiche rien d'intéressant puisque tu remplaces la première ligne par la deuxième :-)
-
et ce WHERE Prise = '3233A'; s'affiche bien dans la zone de liste
-
Oui autant pour moi lol, j'avais mal lu
J'ai fait ce que tu as dit avec les crochets et il me ressort bien WHERE Prise = '3233A'; -
ModérateurL'espace est un caractère spécial (comme je l'ai indiqué)
SELECT [Port Switch],[Switch d'Etage]...
Et je serais étonné qu'il t'affiche "WHERE Prise = '" & 3233A & "';
Ca ne serait plutôt pas WHERE Prise = '3233A'; ?
De toutes façons, s'il n'affiche rien dans la zone, c'est qu'il y a une erreur de syntaxe, ici, il manquait les crochets, remets-les et relance...
-
ba à part le Switch d'Etage, il n'y a pas de caractère spéciaux dans mes champs ni d'accent et je devrai faire comment avec les crochets ??
com cela ?? : StrSql = "SELECT Port Switch,Switch d[']Etage FROM T_PRISE"
StrSql m'affiche : "WHERE Prise = '" & 3233A & "';
=> 3233A etant le résultat de ma variable Calcul
alors que je veux, à partir de ma variable Calcul, qu'il m'affiche le switch et le port concerné
La zone de résultat ne se met pas à jour et oui, effectivement j'ai copié le code sur un bouton de validation -
ModérateurDéjà, les noms de champ contenant des caractères 'spéciaux' (espace, accents) sont à mettre entre crochets [] et je déconseille l'utilisation des caractères accentués dans les noms des champs...
Pour le reste, quel est le problème ? Il affiche quoi dans StrSql ?
Il met bien à jour la zone de résultats ? Tu as copié le code dans un bouton ?
-
J'ai fait ceci :
Private Sub BC_requete_rch_Click() Dim StrSql As String StrSql = "SELECT Port Switch,Switch d'Etage FROM T_PRISE" StrSql = "WHERE Prise = '" & Calcul & "';" MsgBox StrSql End Sub
fo savoir que je suis loin detre un pro en programmation -
ModérateurTu as fait quoi au juste, car ma requête n'est qu'un exemple...
-
Ta solution me renvoi le numéro de prise
- 1
- 2
Suivant