[Access] : Requete SQL en VBa
Résolu/Fermé
fl0
Messages postés
357
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
10 novembre 2021
-
9 mars 2007 à 09:16
Touto - 1 juin 2008 à 19:43
Touto - 1 juin 2008 à 19:43
A voir également:
- Access vba sql
- Récupération serveur sql - Télécharger - Gestion de données
- Vba ouvrir un fichier excel avec chemin ✓ - Forum VB / VBA
- Find vba - Astuces et Solutions
- You don't have permission to access this resource ✓ - Forum Réseaux sociaux
- Incompatibilité de type vba ✓ - Forum Programmation
7 réponses
fl0
Messages postés
357
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
10 novembre 2021
209
9 mars 2007 à 09:18
9 mars 2007 à 09:18
Si ca peut aider voici mon code
Private Sub lstnom_Click()
Dim gpi As DAO.Database
Dim req As DAO.Recordset 'Récupère le nom_PC d'un PC
Dim sql As String
Set gpi = CurrentDb()
sql = "SELECT PC.nom_PC FROM PC WHERE utilisateur ="
sql = sql & "lstnom"
DoCmd.RunSQL sql
Set req = gpi.OpenRecordset(sql)
End Sub
Private Sub lstnom_Click()
Dim gpi As DAO.Database
Dim req As DAO.Recordset 'Récupère le nom_PC d'un PC
Dim sql As String
Set gpi = CurrentDb()
sql = "SELECT PC.nom_PC FROM PC WHERE utilisateur ="
sql = sql & "lstnom"
DoCmd.RunSQL sql
Set req = gpi.OpenRecordset(sql)
End Sub
fl0
Messages postés
357
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
10 novembre 2021
209
9 mars 2007 à 15:05
9 mars 2007 à 15:05
tou dabord merci de ton aide
mais mon probleme c'est que je ne sais pas comment ecrire et utiliser une requete SQL en VBa et je ne comprend pas ou je met la ligne de code que tu ma donnée au dessus
"je vais passé pour un boulet"
mais mon probleme c'est que je ne sais pas comment ecrire et utiliser une requete SQL en VBa et je ne comprend pas ou je met la ligne de code que tu ma donnée au dessus
"je vais passé pour un boulet"
zenon
Messages postés
726
Date d'inscription
jeudi 30 septembre 2004
Statut
Membre
Dernière intervention
13 février 2010
180
9 mars 2007 à 22:49
9 mars 2007 à 22:49
Bonsoir,
Désolé d'intervenir comme ça...
Si je comprends bien tu souhaites trier un formulaire en fonction de la valeur d'une liste déroulante?
Pas besoin de beaucoup de code pour ça.
Si tu veux afficher le résultat dans un formulaire, l'assistant zone de liste le fait automatiquement.
Crée un formulaire qui contient les champs que tu veux afficher puis, dans la section en-tête, ajoute une zone de liste et dans la première fenêtre, choisis la troisième option: "rechercher un enregistrement..."
Ensuite, suis les instructions pour la création de la zone de liste.
(tout peut être modifié par la suite dans la requête)
Si tu vas voir ensuite dans les propriétés de la liste, sous l'onglet événement, AprèsMAJ, tu trouveras un code VBA du type:
Sub...
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[NomDuChampATrier] = " & Str(Me![NomDeLaListeListe])
Me.Bookmark = rs.Bookmark
End Sub
Bien sûr, rien ne t'empêche de faire tout cela "à la main"... mais pq se compliquer la tâche?
Désolé d'intervenir comme ça...
Si je comprends bien tu souhaites trier un formulaire en fonction de la valeur d'une liste déroulante?
Pas besoin de beaucoup de code pour ça.
Si tu veux afficher le résultat dans un formulaire, l'assistant zone de liste le fait automatiquement.
Crée un formulaire qui contient les champs que tu veux afficher puis, dans la section en-tête, ajoute une zone de liste et dans la première fenêtre, choisis la troisième option: "rechercher un enregistrement..."
Ensuite, suis les instructions pour la création de la zone de liste.
(tout peut être modifié par la suite dans la requête)
Si tu vas voir ensuite dans les propriétés de la liste, sous l'onglet événement, AprèsMAJ, tu trouveras un code VBA du type:
Sub...
Dim rs As Object
Set rs = Me.Recordset.Clone
rs.FindFirst "[NomDuChampATrier] = " & Str(Me![NomDeLaListeListe])
Me.Bookmark = rs.Bookmark
End Sub
Bien sûr, rien ne t'empêche de faire tout cela "à la main"... mais pq se compliquer la tâche?
fl0
Messages postés
357
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
10 novembre 2021
209
12 mars 2007 à 14:41
12 mars 2007 à 14:41
Salut a tous
c'est bon j'ai resolu mon probleme mon code est umpeu long mais ca marche
Dim sql As String
Dim Qry As DAO.QueryDef
Dim Rs As DAO.Recordset
sql = "SELECT PC.nom_PC FROM PC"
sql = sql & " WHERE (((PC.utilisateur) = """ & Me.lstnom & """)) "
DoCmd.DeleteObject acQuery, "nom_PC" 'supprime la requête
CurrentDb.CreateQueryDef "nom_PC", sql 'crée une nouvelle requete
Set Qry = CurrentDb.QueryDefs("nom_PC")
Set Rs = Qry.OpenRecordset
While Not Rs.EOF
txtnom_PC.Text = Rs(0)
Rs.MoveNext
Wend
Set Qry = Nothing
Set Rs = Nothing
Si quelqu'un a une idée pour reduire tous ca
Il est le bien venu
c'est bon j'ai resolu mon probleme mon code est umpeu long mais ca marche
Dim sql As String
Dim Qry As DAO.QueryDef
Dim Rs As DAO.Recordset
sql = "SELECT PC.nom_PC FROM PC"
sql = sql & " WHERE (((PC.utilisateur) = """ & Me.lstnom & """)) "
DoCmd.DeleteObject acQuery, "nom_PC" 'supprime la requête
CurrentDb.CreateQueryDef "nom_PC", sql 'crée une nouvelle requete
Set Qry = CurrentDb.QueryDefs("nom_PC")
Set Rs = Qry.OpenRecordset
While Not Rs.EOF
txtnom_PC.Text = Rs(0)
Rs.MoveNext
Wend
Set Qry = Nothing
Set Rs = Nothing
Si quelqu'un a une idée pour reduire tous ca
Il est le bien venu
fl0
Messages postés
357
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
10 novembre 2021
209
9 mars 2007 à 11:52
9 mars 2007 à 11:52
Aidez moi SVP
ruzakruzak
Messages postés
459
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
31 mai 2007
246
9 mars 2007 à 11:58
9 mars 2007 à 11:58
Passe par l'assistant de création de requête. Une fois que tu obtiens le résultat souhaité, affiche le code de la requête en passant l'affichage à SQL.
Ca te transcrira ta requête graphique en code, et t'aidera à retenir la syntaxe à employer.
Et bonne continuation dans access !!
Ca te transcrira ta requête graphique en code, et t'aidera à retenir la syntaxe à employer.
Et bonne continuation dans access !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ruzakruzak
Messages postés
459
Date d'inscription
vendredi 9 février 2007
Statut
Membre
Dernière intervention
31 mai 2007
246
9 mars 2007 à 13:48
9 mars 2007 à 13:48
A vue de nez la syntaxe doit être:
forms!nom_de_mon_formulaire!nom_du_controle.propriété
Soit:
ou encore
Sinon, quand tu cherche Forms! dans l'aide d'Access tu tombes sur le passage suivant :
Cette propriété permet de faire référence au formulaire ou à l'état contenu dans un contrôle de sous-formulaire. Par exemple, le code suivant utilise la propriété Form pour accéder au contrôle OrderID (N° commande) d'un sous-formulaire contenu dans le contrôle de sous-formulaire OrderDetails.
Comme quoi, mine de rien, il ne faut ni sous-estimer un fichier d'aide, ni laisser trop vite tomber...
forms!nom_de_mon_formulaire!nom_du_controle.propriété
Soit:
forms!mon_formulaire!zone_de_liste.value
ou encore
[forms]![mon_formulaire]!zone_de_liste.value
Sinon, quand tu cherche Forms! dans l'aide d'Access tu tombes sur le passage suivant :
Cette propriété permet de faire référence au formulaire ou à l'état contenu dans un contrôle de sous-formulaire. Par exemple, le code suivant utilise la propriété Form pour accéder au contrôle OrderID (N° commande) d'un sous-formulaire contenu dans le contrôle de sous-formulaire OrderDetails.
Dim intOrderID As Integer intOrderID = Forms!Orders!OrderDetails.Form!OrderID
Comme quoi, mine de rien, il ne faut ni sous-estimer un fichier d'aide, ni laisser trop vite tomber...
fl0
Messages postés
357
Date d'inscription
lundi 5 mars 2007
Statut
Membre
Dernière intervention
10 novembre 2021
209
9 mars 2007 à 13:35
9 mars 2007 à 13:35
je sais comment ca marche sous Access mais la requete que je veu faire prend en compte une variable que je choisi dans une listebox d'un formulaire
donc il faut le faire en code VB
donc il faut le faire en code VB