VBA/Access - Requête SQL
RailBird
-
Polux31 Messages postés 6917 Date d'inscription Statut Membre Dernière intervention -
Polux31 Messages postés 6917 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'aimerais créer une requête SQL, où je recupère l'identifiant Windows de l'utilisateur en cours :
SELECT *
FROM Backoffice
WHERE [Identifiant Utilisateur]='user_name';
J'ignore quelle est la commande pour le récuperer.
Merci d'avance pour votre aide,
Cdlt
J'aimerais créer une requête SQL, où je recupère l'identifiant Windows de l'utilisateur en cours :
SELECT *
FROM Backoffice
WHERE [Identifiant Utilisateur]='user_name';
J'ignore quelle est la commande pour le récuperer.
Merci d'avance pour votre aide,
Cdlt
A voir également:
- VBA/Access - Requête SQL
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- Incompatibilité de type vba ✓ - Forum Programmation
- Acer quick access - Forum logiciel systeme
- Access appdata - Guide
- Quick Access service ✓ - Forum PC portable
11 réponses
Bonjour,
Pour Windows 2000 et sup :
;o)
Pour Windows 2000 et sup :
Dim Identifiant_Utilisateur As String Identifiant_Utilisateur = Environ("USERNAME")
;o)
Je ne pense pas que l'on puisse le faire directement en SQL.
La requête devient :
La requête devient :
SELECT * FROM Backoffice WHERE " & Identifiant_Utilisateur & " ='user_name';
J'ai pensé à faire ça :
initADO
Dim sql
Dim user_name
user_name = Environ("Username")
sql = "SELECT * FROM Backoffice WHERE [Identifiant Utilisateur]='" + user_name + "';"
MsgBox sql
Set db = CurrentProject.Connection
rst.Open sql, db
j'essaye d'ouvrir un page avec un DoCmd.OpenQuery afin qu'il m'affiche ce que je cherche avec ma requête SQL ^^
initADO
Dim sql
Dim user_name
user_name = Environ("Username")
sql = "SELECT * FROM Backoffice WHERE [Identifiant Utilisateur]='" + user_name + "';"
MsgBox sql
Set db = CurrentProject.Connection
rst.Open sql, db
j'essaye d'ouvrir un page avec un DoCmd.OpenQuery afin qu'il m'affiche ce que je cherche avec ma requête SQL ^^
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oups erreur dans mon post #3 ... ta syntaxe est bonne, il faut remplacer les "+" par "&" et c'est bon
;o)
;o)
Je cherche la commande pour afficher comme DoCmd.OpenQuery qui ne fonctionne pas, j'ai regardé pour DoCmd.RunSQL, mais il fonctionne qu'avec des requêtes d'action et non pas avec des Select!
Je n'ai pas accès à Access en ce moment, je ne peux pas chercher. Il n'y aurait pas un ExecuteQuery() ?
Ca marche avec un Query.
Le seul problème est que je suis obligé de le créer pour que le code fonctionne ^^
initADO
Dim sql
Dim user_name
Dim stDocName
Dim Qry As DAO.QueryDef
user_name = Environ("Username")
sql = "SELECT * FROM Backoffice WHERE [Identifiant Utilisateur]='" + user_name + "';"
'MsgBox sql
Set db = CurrentProject.Connection
DoCmd.DeleteObject acQuery, "Find_UserAdd"
CurrentDb.CreateQueryDef "Find_UserAdd", sql
Set Qry = CurrentDb.QueryDefs("Find_UserAdd")
stDocName = "Find_UserAdd"
DoCmd.OpenQuery stDocName, acNormal, acEdit
Le seul problème est que je suis obligé de le créer pour que le code fonctionne ^^
initADO
Dim sql
Dim user_name
Dim stDocName
Dim Qry As DAO.QueryDef
user_name = Environ("Username")
sql = "SELECT * FROM Backoffice WHERE [Identifiant Utilisateur]='" + user_name + "';"
'MsgBox sql
Set db = CurrentProject.Connection
DoCmd.DeleteObject acQuery, "Find_UserAdd"
CurrentDb.CreateQueryDef "Find_UserAdd", sql
Set Qry = CurrentDb.QueryDefs("Find_UserAdd")
stDocName = "Find_UserAdd"
DoCmd.OpenQuery stDocName, acNormal, acEdit
Si ça fonctionne c'est le principal :o)
;o)
;o)
Bonjoru à tous!
J'ai un problème qui y ressemble et je ne trouve pas la réponse, j'ai un code come ça:
Private Sub cmdRechercher_Click()
Dim Nom As String
Dim Prenom As String
Nom = Me.txtNom.Value
Prenom = Me.txtPrenom.Value
strsql = "select ID from Personnes where Nom = '" & Nom & "' and Prenom = '" & Prenom & "'"
Dim resultat As Recordset
Set db = CurrentDb()
Set resultat = db.OpenRecordset(strsql)
MsgBox resultat
End Sub
Seulement si je lui demande d'afficher "resultat" j'ai une erreur (incompatibilité de type) mais je ne vois pas ce que ça veut dire???
et si je lui demande de compter les enregistrements en limitant ma requête à "select ID from Personnes", il me répond 1 alors que j'ai 7 enregistrements...
Enfin bref c'est la cata et je n'y comprends rien...
Please heeeeeeeeeeeelp
Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :o)
J'ai un problème qui y ressemble et je ne trouve pas la réponse, j'ai un code come ça:
Private Sub cmdRechercher_Click()
Dim Nom As String
Dim Prenom As String
Nom = Me.txtNom.Value
Prenom = Me.txtPrenom.Value
strsql = "select ID from Personnes where Nom = '" & Nom & "' and Prenom = '" & Prenom & "'"
Dim resultat As Recordset
Set db = CurrentDb()
Set resultat = db.OpenRecordset(strsql)
MsgBox resultat
End Sub
Seulement si je lui demande d'afficher "resultat" j'ai une erreur (incompatibilité de type) mais je ne vois pas ce que ça veut dire???
et si je lui demande de compter les enregistrements en limitant ma requête à "select ID from Personnes", il me répond 1 alors que j'ai 7 enregistrements...
Enfin bref c'est la cata et je n'y comprends rien...
Please heeeeeeeeeeeelp
Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii :o)
Bonjour,
Respire calmement ... zen ... pas de panique. :o)
Voilà, une fois calmée, on va examiner de plus près ton problème ... :O))
Premièrement je ne vois pas ta déclaration de ta variable strsql dans ta procédure. Ce n'est qu'un détail, parce que je suppose que tu n'as pas mis Option Explicit en en t^te de ton module. Mais c'est bien de le faire quand même pour être logique avec la déclaration de tes autres variables.
Tu inspires encore lentement et tu expires bien fort aussi ... voilà ...
Resultat est un objet de type recordset. Ce qui veut dire que ton objet contient plusieurs enregistrements. MsgBox ne peut pas prendre en compte un objet tel quel.
Ensuite, quelle méthode as-tu utilisé pour compter les enregistrements de ton simple "Select ID from Personnes" ?
Pour lire un recordset, il faut le parcourir. La première chose à faire est de s'assurer que l'on est bien sur la première ligne d'enregistrement en faisant un MoveFirst (Resultat.MoveFirst), ensuite faire :
Voilà ... respire encore lentement ...
;o)
Respire calmement ... zen ... pas de panique. :o)
Voilà, une fois calmée, on va examiner de plus près ton problème ... :O))
Premièrement je ne vois pas ta déclaration de ta variable strsql dans ta procédure. Ce n'est qu'un détail, parce que je suppose que tu n'as pas mis Option Explicit en en t^te de ton module. Mais c'est bien de le faire quand même pour être logique avec la déclaration de tes autres variables.
Tu inspires encore lentement et tu expires bien fort aussi ... voilà ...
Resultat est un objet de type recordset. Ce qui veut dire que ton objet contient plusieurs enregistrements. MsgBox ne peut pas prendre en compte un objet tel quel.
Ensuite, quelle méthode as-tu utilisé pour compter les enregistrements de ton simple "Select ID from Personnes" ?
Pour lire un recordset, il faut le parcourir. La première chose à faire est de s'assurer que l'on est bien sur la première ligne d'enregistrement en faisant un MoveFirst (Resultat.MoveFirst), ensuite faire :
Resultat.MoveFirst While Not resultat.Eof MsgBox resultat.Fields(0) resultat.MoveNext Wend
Voilà ... respire encore lentement ...
;o)
Et ce qui est encore mieux c'est que ça marche ;o)
Merci pour ta réponse et encore sorry de poser des questions de base mais il faut bien commencer quelquepart ;o)
Je m'étais bien doutée que le recordset était la réponse complète à la requête, comme un reader en asp mais je n'étais pas sure...
Bref rentrée chez moi j'ai recréé ma DB et j'en suis là:
Afficher dans un msgbox ne sert à rien donc je voudrais construire une zone de liste avec les différentes lignes de résultat à la requête, mais je n'ai aucune idée comment faire... surtout avec 2 colonnes?
Est-ce toujours dans tes cordes?
Promis, je respire entre chaque phrase ;o)
Merci pour ta réponse et encore sorry de poser des questions de base mais il faut bien commencer quelquepart ;o)
Je m'étais bien doutée que le recordset était la réponse complète à la requête, comme un reader en asp mais je n'étais pas sure...
Bref rentrée chez moi j'ai recréé ma DB et j'en suis là:
Afficher dans un msgbox ne sert à rien donc je voudrais construire une zone de liste avec les différentes lignes de résultat à la requête, mais je n'ai aucune idée comment faire... surtout avec 2 colonnes?
Est-ce toujours dans tes cordes?
Promis, je respire entre chaque phrase ;o)
Bonjour,
Ca va mieux ce matin ? tu as pu déstresser pendant le week end ?
Dans ta requête : "select ID from Personnes where Nom = '" & Nom & "' and Prenom = '" & Prenom & "'" , il semblerait que tu veux l'ID (l'identifiant) concernant une seule personne (nom + prénom). Tu peux donc affecter le résultat de ton recordset dans zone texte, ton recordset ne contiendra qu'un seul élément, en faisant comme ça :
Ca va ? sinon, tu connais la technique : inspirez ... expirez ... ;o)
En admettant, que tu connaisses l'identifiant (ID) et que tu veuilles afficher le nom et le prénom dans un textbox. L'affichage du resultat de la requête (Select nom, prenom From Personnes where id =" & id) :
Pour afficher une liste de résultat venant d'un recordset avec une requête (Select no, prenom From Personnes Where ville = 'Paris'), il faut utiliser une listbox:
Voili voilou ...
Bon courage.
N'hésites pas à revenir si tu as un blème.
;o)
Polux
Ca va mieux ce matin ? tu as pu déstresser pendant le week end ?
Dans ta requête : "select ID from Personnes where Nom = '" & Nom & "' and Prenom = '" & Prenom & "'" , il semblerait que tu veux l'ID (l'identifiant) concernant une seule personne (nom + prénom). Tu peux donc affecter le résultat de ton recordset dans zone texte, ton recordset ne contiendra qu'un seul élément, en faisant comme ça :
Text1.Text = Resultat.Fields(0)
Ca va ? sinon, tu connais la technique : inspirez ... expirez ... ;o)
En admettant, que tu connaisses l'identifiant (ID) et que tu veuilles afficher le nom et le prénom dans un textbox. L'affichage du resultat de la requête (Select nom, prenom From Personnes where id =" & id) :
Text1.Text = resultat.Fields(0) & " " & resultat.Fields(1)
Pour afficher une liste de résultat venant d'un recordset avec une requête (Select no, prenom From Personnes Where ville = 'Paris'), il faut utiliser une listbox:
Resultat.MoveFirst While Not resultat.Eof list1.Additem resultat.Fields(0) & vbTab & resultat.Fields(1) resultat.MoveNext Wend
Voili voilou ...
Bon courage.
N'hésites pas à revenir si tu as un blème.
;o)
Polux