|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2007 Messages : 37 ![]() |
Bonjour,
Je cherche le moyen de mettre le résultat d'un SELECT SQL dans une zone de texte. J'ai essayé en mettant la requête SQL dans la source de contrôle (ControlSource) de la zone de texte (TextBox) mais cela ne fonctionne pas. Pourtant, dans la doc d'Access, pour la propriété ControlSource il est dit que "Le contrôle est dépendant d'un champ d'une table, d'une requête ou d'une instruction SQL." Quelqu'un aurait-il des explications ou une autre idée ? Merci d'avance. |
|
|
00
|
|
|
#2 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 458 ![]() |
On ne peut simplement pas le faire directement.
Tu peux par contre utiliser Code :
=DFirst("NomChamp","NomSource","Critere") A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
10
|
|
|
#3 | ||
|
Membre du Club
![]() Inscription : août 2008 Messages : 86 ![]() |
Seconde solution, passer par du code VBA, à insérer dans un module et à mettre dans la propriété "onclick" d'un commandbutton par exemple
Code :
|
||
|
|
10
|
|
|
#4 |
![]() ![]() |
Bonjour à tous
Et si ta requête te retourne plusieurs enregistrements, tu peux lire ceci: http://jdgayot.developpez.com/tutori...ultats-labels/ Avec toutes les réponses que tu as eu, tu dois pouvoir y arriver.
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!. Tutoriels sur:http://jdgayot.developpez.com Pas de sujets techniques par Mp. Sinon
|
|
|
10
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2007 Messages : 37 ![]() |
Merci pour vos réponses.
La solution par les domain aggregate functions (ex. DFirst) est assez simple, mais est-ce qu'on peut mettre dans le second paramètre une requête SQL sur plusieurs tables avec p.ex. des outer joins ? Je pensais que la fonction ne marche que sur une table. La solution en passant par l'intermédiaire d'un recordset est ce que je veux contourner : c'est lourd ! Je ne vois pas pourquoi mettre une donnée dans zone de texte par une requête SQL n'est pas possible alors que c'est possible avec une liste déroulante par : Origine source : table/requête Contenu : (la requête SQL) Y aurait-il un autre objet qu'une zone de texte ou un autre moyen pour afficher dans une zone une valeur unique résultat d'une requête sur plusieurs tables ? |
|
|
00
|
|
|
#6 |
![]() ![]() René MAROTInscription : octobre 2005 Messages : 5 458 ![]() |
Non, tu ne peux pas mettre de SQL dans le DFirst mais tu peux mettre le nom d'une requête.
Pour la source de zone de texte SQL, écrit à Bill GATES pour te plaindre :-). J'imagine que c'est parce que Access a toujours fait tout ce qu'il pouvait pour masquer le SQL dérière une interface. Tu pourrais peut-être utiliser une zone de liste à une seule ligne cela devrait sensiblement donner le même résultat qu'une zone de texte monoligne. A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs. |
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2007 Messages : 37 ![]() |
Merci.
Oui, une zone de liste à la place d'une zone de texte. Je l'ai déjà fait, mais ce n'est pas idéal surtout quand l'utilisateur va cliquer dessus. Merci à tous pour vos réponses. |
|
|
00
|
|
|
#8 | ||
|
Membre Expert
![]() Pierre ANTOINEInscription : février 2008 Messages : 650 ![]() |
Bonjour
En partant du principe indiqué par GAYOT, mais sans utiliser les recordset, voici ce que je ferais. Une liste avec comme source le code sql. Cette liste est invisible. Un controle texte à qui on affecte la valeur de la liste. Quelque chose comme : Code :
|
||
|
|
00
|
|
|
#9 | ||
![]() ![]() |
Bonjour à tous
Tous les moyens sont bons, mais la solution par Recordset n'est pas si lourde que celà, surtout si tu es certain que ta requête te renvoie un enregistrement unique. Code :
Cela rejoint en grande partie le code de Glherbier. Mais les autres méthodes fonctionnent également. Donc à toi de voir...
__________________
Plus j'avance et plus j'ai l'impression de ne rien savoir. Et comme j'essaie d'aller loin..!!. Tutoriels sur:http://jdgayot.developpez.com Pas de sujets techniques par Mp. Sinon
|
||
|
|
00
|
|
|
#10 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2007 Messages : 37 ![]() |
Merci Pierre pour ton astuce. Le passage par l'intermédiaire d'une zone de liste reste toutefois une méthode indirecte.
Merci aussi à toi GAYOT. Pas si lourd ? Plus lourd quand même que : Me.MaZoneTexte.ControlSource.sql = "SELECT ..." Une seule ligne, et pas de risque de bloquer des ressources. J'invente le .sql mais il est là pour des raisons évidentes. D'après la doc, on aurait pu s'attendre à ce que ce soit possible : "Le contrôle est dépendant d'un champ d'une table, d'une requête ou d'une instruction SQL." |
|
|
00
|
|
|
#11 |
|
Candidat au titre de Membre du Club
![]() Inscription : février 2007 Messages : 37 ![]() |
Je vais créer une fonction du genre :
Function ResultFromSQL(RequeteSQL as string) as Variant pour s'occuper de la cuisine avec le recordset. Ainsi je pourrai arriver au même résultat, mais en passant par du code VBA pour mettre le résultat de la requête dans la zone de texte : Me.MyZoneTexte = ResultFromSQL("Select ...") |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com