[Access2003] Problème de requête SQL en VBA
Résolu
Makushiimu
Messages postés
6
Date d'inscription
Statut
Membre
Dernière intervention
-
blux Messages postés 27131 Date d'inscription Statut Modérateur Dernière intervention -
blux Messages postés 27131 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
étant plutôt novice en programmation Access, je m'en remets à vous car je suis littéralement en train de m'arracher les cheveux >_<
Voilà, je suis en train de coder une fonction qui, lors du chargement du formulaire, va aller rechercher dans une table de la base une valeur (user_type) en comparant l'id de l'utilisateur (CurrentUser) à une autre valeur de la table (user_id).
Seulement, problème, on dirait que je n'arrive pas à trouver la base O_o. Access me renvoie sans cesse l'erreur "3601 : Trop peu de paramètres. 1 attendu"
Voici le code de la fonction :
Private Sub Form_Load()
Dim db As DAO.Database, rst As DAO.Recordset, fld As DAO.Field
Dim sql As String // Stockage de la requête SQL
Dim utilisateur As String
utilisateur = currentuser // Stockage du Windows ID
sql = "SELECT * FROM tbl_user WHERE user_id = " & utilisateur & ";" // Création de la requête SQL
Set db = CurrentDb()
Set rst = db.OpenRecordset(sql)
If (rst!user_type = "RF") Or (rst!user_type = "RS") Or (rst!user_type = "RG") Then
button_new.Enabled = False
End If
rst.Close
End Sub
Sachant qu'Access 2003 me mets le point d'erreur sur la ligne en gras, que dans la variable sql, j'ai bien la chaîne "SELECT * FROM tbl_user WHERE user_id = [monid];", et que tbl_user fait partie de la base que je manipule actuellement, je suis totalement perdu ^^".
Je vous remercie d'avance pour votre aide
Cordialement
Maku
étant plutôt novice en programmation Access, je m'en remets à vous car je suis littéralement en train de m'arracher les cheveux >_<
Voilà, je suis en train de coder une fonction qui, lors du chargement du formulaire, va aller rechercher dans une table de la base une valeur (user_type) en comparant l'id de l'utilisateur (CurrentUser) à une autre valeur de la table (user_id).
Seulement, problème, on dirait que je n'arrive pas à trouver la base O_o. Access me renvoie sans cesse l'erreur "3601 : Trop peu de paramètres. 1 attendu"
Voici le code de la fonction :
Private Sub Form_Load()
Dim db As DAO.Database, rst As DAO.Recordset, fld As DAO.Field
Dim sql As String // Stockage de la requête SQL
Dim utilisateur As String
utilisateur = currentuser // Stockage du Windows ID
sql = "SELECT * FROM tbl_user WHERE user_id = " & utilisateur & ";" // Création de la requête SQL
Set db = CurrentDb()
Set rst = db.OpenRecordset(sql)
If (rst!user_type = "RF") Or (rst!user_type = "RS") Or (rst!user_type = "RG") Then
button_new.Enabled = False
End If
rst.Close
End Sub
Sachant qu'Access 2003 me mets le point d'erreur sur la ligne en gras, que dans la variable sql, j'ai bien la chaîne "SELECT * FROM tbl_user WHERE user_id = [monid];", et que tbl_user fait partie de la base que je manipule actuellement, je suis totalement perdu ^^".
Je vous remercie d'avance pour votre aide
Cordialement
Maku
A voir également:
- [Access2003] Problème de requête SQL en VBA
- Logiciel sql - Télécharger - Bases de données
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum Excel
- Dépassement de capacité vba ✓ - Forum Excel
- Vba attendre 1 seconde ✓ - Forum VB / VBA
7 réponses
où est stocké la valeur de currentuser que tu met dans utilisateur ?
tu as oublié d'entourer ta chaine utilisateur de ' dans ta requète (même si la variable est en string, ca ne dispense pas de mettre les ' ' dans la requete)
tu as oublié d'entourer ta chaine utilisateur de ' dans ta requète (même si la variable est en string, ca ne dispense pas de mettre les ' ' dans la requete)
Bah en fait, CurrentUser est une fonction d'Access qui renvoie l'id de l'utilisateur en cours.
Pour les quotes, je vais les rajouter, mais quand je mets un point d'arrêt et que je regarde ma requête, elle est propre, avec la bonne valeur d'id... ^^".
Pour les quotes, je vais les rajouter, mais quand je mets un point d'arrêt et que je regarde ma requête, elle est propre, avec la bonne valeur d'id... ^^".
Salut,
si user_id est de type nuémrique pas besoin de quotes, si type chaine alors l'enquoter (quote simple).
Par contre, pour un cas comme ça, il est superfétatoire d'utiliser un recordset (qui dans la théorie renvoie plusieurs lignes). Un dlookup renverrait le résultat en une ligne.
si user_id est de type nuémrique pas besoin de quotes, si type chaine alors l'enquoter (quote simple).
Par contre, pour un cas comme ça, il est superfétatoire d'utiliser un recordset (qui dans la théorie renvoie plusieurs lignes). Un dlookup renverrait le résultat en une ligne.
user_id est de type chaine (en gros, c'est un truc du style "a8062063"), mais je viens d'essayer de mettre les quotes, ça me met une erreur de syntaxe ^^.
Et je vais essayer le dlookup (je connaissais pas, concrètement, j'ai commencé le VBA y'a un mois et demi à tout casser, et encore, j'en ai pas fait pendant un mois ^^")
Et je vais essayer le dlookup (je connaissais pas, concrètement, j'ai commencé le VBA y'a un mois et demi à tout casser, et encore, j'en ai pas fait pendant un mois ^^")
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alors, je viens de tester le DLookUp comme ceci :
Dim type_utilisateur As Variant
type_utilisateur = DLookup([user_type], [tbl_user], "[user_id] =" & utilisateur)
Et là, j'ai droit à l'erreur 2465 : Impossible de trouver le champ "|" auquel il est fait référence dans votre expression.
Une idée ? ^^
Dim type_utilisateur As Variant
type_utilisateur = DLookup([user_type], [tbl_user], "[user_id] =" & utilisateur)
Et là, j'ai droit à l'erreur 2465 : Impossible de trouver le champ "|" auquel il est fait référence dans votre expression.
Une idée ? ^^
Essaye ça :
"...[user_id] = '" & utilisateur & "'")Note les simples quotes comme séparateur de chaine...