VBA+ACCESS+requeteSQL facile, oui mais non!!

cs_lmondeil Messages postés 8 Date d'inscription lundi 15 avril 2002 Statut Membre Dernière intervention 11 juin 2002 - 18 avril 2002 à 16:30
cs_jeannot45 Messages postés 112 Date d'inscription dimanche 6 janvier 2002 Statut Membre Dernière intervention 27 décembre 2004 - 27 avril 2002 à 10:14
Light. Je suis nul mais je me soigne!

Salut tout le monde!!!
je cherche a executer une requete sql depuis un formulaire via un bouton.

est ce que quelqu'un pourrait m'envoyer le code pour le faire sur l'exemple suivant :

J'ai une table "boisson" avec un champ "nom". Je voudrais executer la requete "select * from boisson where nom like 'coca%' "
Je voudrais aussi savoir ou le resultat est stocke et comment l'exploiter.

merci pour toute reponse.

Bon codage a tous et a+.

Amicalement Light.

3 réponses

cs_jeannot45 Messages postés 112 Date d'inscription dimanche 6 janvier 2002 Statut Membre Dernière intervention 27 décembre 2004
21 avril 2002 à 08:26
Salut,

Sous VBA Access, le caractère joker du SQL est remplacé par * et les ' par des ". Tu peux utiliser le type de syntaxe suivant :

SELECT boisson.*
FROM boisson
WHERE nom Like "coca*";

à +

Jeannot
0
cs_lmondeil Messages postés 8 Date d'inscription lundi 15 avril 2002 Statut Membre Dernière intervention 11 juin 2002
22 avril 2002 à 09:48
Light. Je suis nul mais je me soigne!

Salut et merci pour ta reponse.

Ok pour la requete SQL, ca marche, mais j'arrive toutjours pas a le faire fonctionner dans du code VBA : Mon pb actuel est de pouvoir faire tout ca en cliquant sur un bouton . Je sais pas comment selecctionner une table a partir du code, executer la requete toujours dans du code et enfin recuperer les infos issues de la requete pour les afficher. C'est surtout ces parties de code que je n'arrive pas a faire.

Merci de ta reponse.

Amicalement Light.
0
cs_jeannot45 Messages postés 112 Date d'inscription dimanche 6 janvier 2002 Statut Membre Dernière intervention 27 décembre 2004
27 avril 2002 à 10:14
Bonjour,

Excuse moi pour la réponse tardive, j'étais en déplacement.

Tu disposes de 2 solutions

Soit tu utilises D.A.O et tu as le code suivant :

Sub Extraction()

Déclaration des variables
Dim MaBd as Database (Variable objet Base de données)
Dim Marequete as QueryDef (Objet Structure d'une requête)
Dim MonSql as String (Chaine destinée à recueillir ta syntaxe Sql)

Initialisation des variables
Set MaBd = CurrentDb
MonSql="SELECT * FROM boisson WHERE nom LIKE ""coca*"";" (Remarque le doublement des guillements)
Set MaRequete = MaBd.CreateQuery("Nouvelle Requete",MonSql)

' Affichage des données dans une feuille de données
DoCmd.OpenQuery("Nouvelle requete")

End Sub

Soit tu utilises A.D.O et tu as le code suivant :

Dans un module tu déclares une variable globale Connexion

exemple : ' Déclaration d'une variable de Connexion ADODB
Global MaConnexion As ADODB.Connection

Dans un module tu crées ton jeu d'enregistrements :
Tu déclares au préalable une variable objet de portée module

Dim MaRequete As New ADODB.Recordset

Private Sub btnAfficher_Click()
Dim Sql As String
Dim Monjeu As Recordset

' Instanciation de la connexion
Set MaConnexion = New ADODB.Connection
' Ouverture de l'objet
MaConnexion.Open "SourceMdb" ' Déclarée dans la liaison ODBC (Via le Panneau de configuration)
' Ouverture de la requete
MaRequete.Open "Select * FROM boisson WHERE nom LIKE “”coca*””", MaConnexion, adOpenStatic, adLockOptimistic

' Appel de la procédure de rapatriement des valeurs
MaRequete.MoveFirst
‘Procédure d’affichage des données
End Sub

Private Sub Afficher()
Exemple : imaginons que dans notre formulaire il y ait deux Zones de Texte correspondant à deux champs de la requête nous pourrions avoir :

txtNom = MaRequete.Fields("Nom").Value
txtPu = MaRequete.Fields("Pu").Value
End Sub

Pour afficher les enregistrements suivants on pourrait avoir un second bouton sur lequel serait attachée la procédure suivante:

Private Sub btnSuivant_Click()
MaRequete.MoveNext
Afficher
End Sub

Bon courage
Jeannot
0
Rejoignez-nous