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

VB : executer et afficher une requête

4 réponses
Avatar
le Nordiste
Bonjour =E0 tous,

Je veux lancer par VBa une requ=EAte SELECT=85INTO maTable,
et afficher ensuite =E0 l'=E9cran maTable.

Comment proc=E9dez vous ?

4 réponses

Avatar
Gloops
le Nordiste a écrit, le 14/03/2012 09:56 :
Bonjour à tous,

Je veux lancer par VBa une requête SELECT…INTO maTable,
et afficher ensuite à l'écran maTable.

Comment procédez vous ?



Euh ... Tu veux dire, sur quoi cliquer pour créer une requête ?

Déjà pour commencer, il faut signaler que Microsoft a une sale manie
surtout depuis quelques années : changer complètement l'interface
utilisateur de ses applications, ce qui ne facilite guère la formation
utilisateurs (à ceci près que ça donne sûrement du boulot aux
formateurs, si jamais les clients ont de quoi payer).

Ceci pour dire que pour une réponse précise il faut indiquer la versi on.

Jusqu'à la version 2000 on va dans l'onglet Requête, et on clique sur le
lien nouvelle requête.

A partir de la version 2007 (et même de la 2003 il me semble), le menu
déroulant a été remplacé par un ruban. Il faut aller sur le ruban Créer,
et cliquer sur Nouvelle requête.

Une fois la requête ouverte on s'aperçoit que dans un coin il y a un
bouton comportant une liste déroulante pour choisir parmi plusieurs
modes d'affichage, dont SQL, création, exécution.

Pour la suite voilà des sites qui peuvent bien aider :

http://www.3stone.be/access/
http://officesystemaccess.seneque.net/
(ah tiens dans celui-ci j'ai vu qu'il y a une page sur le ruban dans
Access 2007)


Là c'est surtout pour trouver des astuces, mais il y en a plein par
exemple :

http://access.mvps.org/accessfr/



Attention à Google pour les questions de confidentialité, mais il fau t
avouer que pour les recherches c'est des bons :
http://groups.google.fr/advanced_search?hl=fr
Avatar
Gloops
le Nordiste a écrit, le 14/03/2012 09:56 :
Bonjour à tous,

Je veux lancer par VBa une requête SELECT…INTO maTable,
et afficher ensuite à l'écran maTable.

Comment procédez vous ?



Oups, je suis confus.

Tu as bien fait de mettre VB au début du titre, ça m'a évité de n e pas
m'apercevoir que j'avais répondu à côté.

Avec les dernières versions l'aide est souvent réduite à la portion
congrue, mais il me semble qu'en cherchant QueryDef tu devrais trouver.
Au deuxième coup d’œil, on trouve facilement pour une requête SEL ECT.
Pour une requête d'exécution (c'est-à-dire qui ne retourne pas
d'enregistrements) la syntaxe est un peu différente.

Je vais prendre le temps un peu plus tard de regarder.
Avatar
Gloops
el Nordiste a écrit, le 14/03/2012 09:56 :
Bonjour à tous,

Je veux lancer par VBa une requête SELECT…INTO maTable,
et afficher ensuite à l'écran maTable.

Comment procédez vous ?



Je viens de tester sous Access 2007.
J'ai testé avec une requête INSERT INTO, il me semble que le résult at
doit être le même, puisqu'on n'attend pas d'enregistrements en retour .

J'ai créé une table tabTest pour répondre à quelqu'un qui voulait
renommer les champs après un import Excel.

Aussi, ma requête va créer un enregistrement dans la table tabTest.

Pour exécuter ça en direct le plus simple est ceci :

DoCmd.RunSQL "INSERT INTO tabTest(Cle, Champ2) VALUES('Tst', 3)"

Si maintenant on veut créer une requête qryTest qui fait la même ch ose,
il y aura un peu plus de code à écrire :

Public Sub CreReq(strNomReq As String, strCode As String)
Dim Qry As New QueryDef
Qry.Name = strNomReq
Qry.SQL = strCode
CurrentDb().QueryDefs.Append Qry
CurrentDb().QueryDefs.Refresh
End Sub

Et donc on obtiendra la requête par :
CreReq "qryTest", "INSERT INTO tabTest(Cle, Champ2) VALUES('Tst2', 6)"

(J'ai changé les valeurs à créer dans les champs, pour qu'on puisse
faire les deux tests sur la même table.)

Une fois qu'on a fait ça, on n'a pas le deuxième enregistrement dans la
table avec Tst2 comme clé, mais on a la requête qryTest qui le crée .
Pour la voir apparaître dans la liste, dans l'interface utilisateur, il
faut appuyer sur la touche F5.
L'enregistrement sera donc obtenu par :
CurrentDb().QueryDefs("qryTest").Execute

Certes, la requête enregistrée sera plus utile avec des paramètres ...
Voir Parameter dans l'aide.

On se rappelle qu'à l'exécution on a un message pour signaler le nomb re
d'enregistrements qui vont être créés, que ce message peut être
désactivé par DoCmd.SetWarnings False, juste avant l'instruction SQL, et
que si on fait ça il faut penser à mettre juste après ladite instru ction
: DoCmd.SetWarnings True
Avatar
Gloops
C'était agréable quand on avait une bonne desserte des newsgroups
Microsoft : c'était plus rare que les gens oublient où ils avaient po sé
leurs questions.



--- Posted via news://freenews.netfront.net/ - Complaints to ---