rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Executer une requête via un bouton sou Access

Posté par Fabinou, le vendredi 19 octobre 2007 à 11:59:50
Bonjour,

J'aurai besoin lorsque je clic sur un bouton dans un Formulaire Access, que celui-ci exécute une requête en utilisant comme critère ce qu'il y a d'écrit sur le bouton, et que le résultat s'affiche sur mon formulaire.
ex : SELECT pc.nom FROM pc WHERE pc.nom = nomdubouton

Please Help me
Configuration: Windows XP
Internet Explorer 6.0
Répondre à Fabinou  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Polux31, le vendredi 19 octobre 2007 à 14:36:01
bonjour,

tu récupères dans une variable string :

....

Dim str As String
Dim Query As String

str = monbouton.Caption

Query = "SELECT nom FROM pc WHERE nom = ' " & str & " ' "

....

Voilà

Bon courage

;o)
Répondre à Polux31

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Fabinou, le lundi 22 octobre 2007 à 11:50:50
Bonjour Polux31,

Je viens d'essayer, mais le pb c'est qu'Access m'inscrit un message d'erreur : Microsoft Office Access can't find the object 'requête'.

Can you help me please?
Répondre à Fabinou

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Polux31, le lundi 22 octobre 2007 à 12:27:13
salut, apparemment tu passes un objet 'requête' qu'Accces ne connait pas. Peux-tu mettre ici le code derrière ton bouton qui commande la requête, stp ?
Répondre à Polux31

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Fabinou, le lundi 22 octobre 2007 à 12:42:09
Bien sûr,

Private Sub bt_A1_Click()
On Error GoTo Err_bt_A1_Click

Dim str As String
Dim Query As String

str = Me.Caption

Query = "SELECT box.nomBox, pc.nomPc, pc.adressIpPc, etat.libEtat" & _
"FROM etat INNER JOIN (box INNER JOIN pc ON box.idBox = pc.idBox) ON etat.idEtat = pc.idEtat" & _
"WHERE (((box.nomBox)='" & str & "'"

DoCmd.OpenQuery Query, , acReadOnly

Exit_bt_A1_Click:
Exit Sub

Err_bt_A1_Click:
MsgBox Err.Description
Resume Exit_bt_A1_Click

End Sub

Voici mon ami...
Merci pour ta rapidité
Répondre à Fabinou

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Polux31, le lundi 22 octobre 2007 à 13:20:00
merci, je ne peux pas me pencher sur le sujet cet aprem, je regarde ça ce soir. Je n'utilise que très rarement les formulaires directement sur Access, je développe sur VB6 ou Java avec des connections sur diverses bases.

As-tu fait un test avec un simple select (ex : "select * from box") ? pour voir si tu as un mesage d'erreur ?

A plus
Répondre à Polux31

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Fabinou, le lundi 22 octobre 2007 à 13:25:45
Oui, je viens d'essayer, et toujours le même message d'erreur.
Répondre à Fabinou

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Polux31, le lundi 22 octobre 2007 à 18:48:11
salut,

teste ça stp ...
-> Penses à cocher la référence Microsoft DAO 3.6 Object Library ( Dans un module faites Outils / références )


Private Sub bt_A1_Click()
On Error Resume Next

Dim str As String
Dim Query As String
Dim db As DAO.Database, rst As DAO.Recordset

str = Me.Caption

' Ouverture de la base de données
Set db = CurrentDb

' Construction de la requête
Query = "SELECT box.nomBox, pc.nomPc, p.adressIpPc, etat.libEtat "
Query = Query & " FROM box, pc, etat "
Query = Query & " WHERE box.idBox = pc.idBox AND pc.idEtat = etat.idEtat AND box.nomBox = ' " & str & " ' "

' Ouverture du recordset
Set rst = db.OpenRecordset (Query , dbOpenForwardOnly, dbReadOnly)

' Fermeture du Recordset
rst.Close

If Err.Number <> 0 then
msgbox Err.Description
Exit Sub
End If

End Sub


Ensuite il faut parcourir le recordset pour lire les données.

Tiens moi au courrant stp.

Bon courage

Polux
Répondre à Polux31

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Fabinou, le mardi 23 octobre 2007 à 12:46:51
Salut Polux,

La référence était déjà cochée, par contre j'ai essayé ton code, et j'ai un autre message d'erreur : Object variable or With block variable not set.
Peux-tu aussi m'aiguiller sur la façon de parcourir le recordset STP?

Merci d'avance,

Fabinou
Répondre à Fabinou

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Polux31, le mardi 23 octobre 2007 à 13:26:07
salut,

Je ne vois pas le blème, fait ça, à tout hasard :

.....
' Ouverture du recordset
Set rst = new DAO.RecordSet
rst = db.OpenRecordset (Query , dbOpenForwardOnly, dbReadOnly)

....

Dans ton RecordSet tu as les données de ta requêtes. Dans ton cas :

leNomBox = rst.Fields(0).Value
leNomPC = rst.Fields(1).Value
lAdresseIpPc = rst.Fields(2).Value
leLibEtat = rst.Fields(3).Value

Pour passer à la ligne suivante : rst.MoveNext (pour lire l'enregistrement suivant) et rst.MovePrevious (pour lire l'enregistrement précédent).

Je suis désolé mais je ne peux pas faire de test sur les codes que je te passe, je n'ai pas Access installé sur mon pc ...
Répondre à Polux31

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Fabinou, le mardi 23 octobre 2007 à 16:06:23
Coucou,

Oui, c'est vrai, dommage que tu n'as pas Access. Je viens d'essayer et j'ai toujours le même message d'erreur : Object variable or With block variable not set.

Et sinon, est-il possible de récupérer par exemple "leNomPC = rst.Fields(1).Value " et le donner à une requête paramétrable?
Car auparavant, j'utilisais un formulaire qui est lié à une requête paramétrable, cela me servant à changer le box d'un Pc, en y inscrivant le nom du Pc.
ex : Je clic sur le formulaire 'trouver un pc', une question apparait : "Quel Pc"
-> je rentre GOGOPC020, et je clic ok
-> cela me retourne le nom du pc avec le nom du box, que je peux modifier dans un combo box.

Merci pour ta patiente,

Fabinou
Répondre à Fabinou

11


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Fabinou, le mardi 23 octobre 2007 à 16:13:29
Je viens de remarquer quelques chose d'autre, lorsque je me positionne sur str = Me.Caption pendant le lancement, str est = à "".
Donc il ne prend pas, ou ne trouve pas le bouton !?
Quand dis-tu?
Répondre à Fabinou

12


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Polux31, le mardi 23 octobre 2007 à 17:09:20
oups oula oui en effet, j'ai fait pas attention à ça.

str = Me.bt_A1.Caption

là tu devrais avoir quelque chose dans str.

Je pense qu'effectivement tu dois pouvoir passer ta variable à ta requête paramètrable.
Répondre à Polux31

13


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Fabinou, le mercredi 24 octobre 2007 à 12:59:12
Bonjour Polux,

Je pense avoir trouvé une solution à mon problème (grâce à toi bien sûr ;-)).

Mon but final étant qu'une CENTAINE de boutons puisse utiliser la même requête SQL, avec comme paramétre le nom du bouton.

Au départ, je ne savais pas comment exécuter ma requête en prenant en compte le nom du bouton sans passer par l'assistant d'access pour la création des requêtes, car je n'arrivais pas à passer en paramêtre le nom du bouton dans celle-ci. (faut suivre hein :-)).

Solution :
'Variable
Dim ReqSQL As String

'definition
ReqSQL = "SELECT box.nomBox, pc.nomPc "
ReqSQL = ReqSQL & " FROM box INNER JOIN pc ON box.idBox = pc.idBox "
ReqSQL = ReqSQL & " WHERE (((box.nomBox)=[forms]![nomDuFormulaire]![nomDuBouton].[capt­ion])) "

'Création de la requête
CurrentDb.CreateQueryDef "testerReq", ReqSQL

'execution
DoCmd.OpenQuery "testerReq", acViewNormal, acReadOnly

--> Comme ça je peux faire une procédure avec ce code, et passer en paramètre le nom du bouton quand je clic dessus

Mon deuxième pb est que je ne peux pas créer deux fois la même requête. Alors je la supprime, avant de la re-créer avec le nouveau nom de bouton passé en paramètre dans la procédure.

Pense-tu que c'est une bonne solution ?
Répondre à Fabinou

14


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Polux31, le mercredi 24 octobre 2007 à 13:53:44
salut, je ne pense pas qu'il soit nécessaire de détruite la requête puis la recréer ... Puisque tu as une variable dans le paramètrage de ta requête "testerReq" si j'ai bien compris... en principe tu ne devrais pas avoir besoin de l'assistant requête, mais si c'est une solution qui marche, pourquoi pas. L'essentiel c'est que tu obtiennes le résultat que tu cherches, peu importe comment en fin de compte. Je dois avoir Access 2007 ce week end, je vais pouvoir bidouiller dedans et faire des tests.

;o)
Répondre à Polux31

15


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 Fabinou, le mercredi 24 octobre 2007 à 16:17:01
Dac, si jamais tu trouves une solution plus pratique à mon pb, fais moi un pti signe ;-)

En tout cas, merci pour ton aide,
A bientôt j'espère.
Répondre à Fabinou
Logiciels pertinents trouvés dans les téléchargements
Télécharger Lanterne Magique  2.0Lanterne Magique - Après les vacances, on se rend compte qu’on a pris beaucoup trop de photos. On a du mal à les visualiser méthodiquement ou...Catégorie: Album photo
Licence: Freeware/gratuit
Télécharger Switch Sound Format Converter 1.05Switch Sound Format Converter - Switchest un convertisseur de formats audio pour Windows ou Mac, capable de convertir des fichiers audio à partir de...Catégorie: Conversion audio
Licence: Freeware/gratuit
Télécharger Sound Convert Tool 2.0Sound Convert Tool - Sound Convert Tool est un petit outil très simple permettant de convertir des fichiers au format ACT, REC ou RCD vers le...Catégorie: Conversion audio
Licence: Freeware/gratuit
Télécharger SoundEngine 4.00SoundEngine - SoundEngine est un outil permettant d'éditer les fichiers audio et contient quelques filtres permettant d'y appliquer des...Catégorie: Edition audio
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « Executer une requête via un bouton sou Access »