Commande SQL qui ne fonctionne pas [Résolu]

Signaler
Messages postés
19
Date d'inscription
lundi 11 juin 2007
Statut
Membre
Dernière intervention
29 juin 2007
-
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
-
Bonjour


J'edite un formulaire par les lignes de code en VBA et j'aimerai que le systeme aille me chercher une info dans mes tables.
J'effectue donc la commande suivante (Code):


'User_Right peut prendre la valeur "User", "Admin"
Public User_Right As String


Private Sub Form_Open(Cancel As Integer)
'User contient la chaine de caractere correspondant au login de l'utilisateur
Dim User As String


'Commande qui doit verifier les droits de l'utilisateur
User_Right = "SELECT [T Name].[Access]" & _
             "FROM T Name" & _
             "WHERE [T Name].[Login] = '" & User & "'"


'On affiche la valeur contenue dans User_right dans une boite de texte
Me.TB_Right.Value = User_Right
End Sub


N.B.: Tout les champs sont des chaines de caractere.
Mais a l'execution de mon formulaire, Access m'affiche la commande, c'est a dire "SELECT[...].[...] FROM... "
Ce code m'a pourtant l'air bon alors dite moi ou est mon erreur?


D'avance Merci

13 réponses

Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Salut tout le monde,

Il faudrait utiliser un recordset (Projet, Référece puis cocher MicroSoft Active Data Object 2.8)

Set rs = New ADODB.recordset

        'Connexion avec la table
rs.Open "SELECT [T Name].[Access]" & _
             "FROM T Name" & _
             "WHERE [T Name].[Login] = '" & User & "'"", CurrentProject.connection, adOpenDynamic, adLockReadOnly


User_Right = rs.fields("Login")

.
.
.

Pas sur que ce soit exact mais c'est un debut.


 




 
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
Je ne vais pas le répéter tous les jours, si ?

"J'edite un formulaire par les lignes de code en VBA"

Vous êtes ici :
Thèmes / VB.NET et VB 2005 /

postes dans la section VBA.....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
Ca y'est il craque ;)

Je te rassure, moi aussi j'en déplace 3-4 par jours !

Donc je déplace celui-là !
Messages postés
19
Date d'inscription
lundi 11 juin 2007
Statut
Membre
Dernière intervention
29 juin 2007

Donc cette commande n'est pas possible?

Il me semblait pourtant en avoir vu (quasiment la meme) sur un exemple de prog sous VBA.
Dans ce cas, comment en VBA puis-je acceder a mes tables, quelles lignes de commande doit-je utiliser?

Merci pour vos reponses
Messages postés
381
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
5 septembre 2010
3
Bonjour,
User_Right = "SELECT [T Name].[Access]" & _
             "FROM T Name" & _
             "WHERE [T Name].[Login] = '" & User & "'"
Tu dois confondre entre la requète sql et le résultat d'une requete sql
Dans ton cas User_Right contient uniquement ta requete et donc il faut créer un recordset dans lequel tu stock le résultat de la requete et ensuite tu peux utiliser le résultat dans ta variable User_Right

 Fiko ;-)

La reponse vous convient pensez > Accepter <
<hr />
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Au fait, quand tu veux executer une requete directment,

tu peux faire

Dim SQL as String
SQL = "Ta_Requete_SQL"

DoCmd.RunSQL SQL

A+
Messages postés
19
Date d'inscription
lundi 11 juin 2007
Statut
Membre
Dernière intervention
29 juin 2007

Merci pour le conseil, y'a du mieux... mais c'est pas emcore tout a fait ca!
En debuggant il bloque et m' inscrit "Run-Time Error '438' "
Voici mes nouvelles lignes de code:

Set rs = New ADODB.Recordset
Dim SQL1 As String

'Commande en SQL
SQL1 = "SELECT [T Name].[Access]" & _
              "FROM [T Name]" & _
              "WHERE [T Name].[Login] = '" & User & "'"
'Connexion avec la table
rs.Open SQL1, CurrentProject.Connection, adOpenDynamic, adLockReadOnly
User_Right = rs.Field("Login")

' On cherche a afficher dans une text box
Me.TB_Right.Value = User_Right 

Il bloque sur la ligne en rouge, pourkoi?
Ne serait-ce pas un conflit de librairies sachant kque j'ai parmi d'autres les suivantes:
      - Microsoft ActiveX Data Object 2.8
      - Microsoft ActiveX Data Object Recordset 2.8
      - Microsoft DAO 3.6 Object

Merci pour vos réponses.
Messages postés
381
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
5 septembre 2010
3
je crois qu'il manque un s à field :
User_Right = rs.Fields("Login")
 Fiko ;-)

La reponse vous convient pensez > Accepter <
<hr />
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
rs.Field("Login")



Cela signifie que tu souhaites obtenir la valeur du champ nommé Login du premier enregistrment correspondant a ta selection dans ta table.

Donc si ta selection est vide, c'est normal (pour le savoir fais un    msgbox rs.RecordCount  ), sinon c'est que ce champ n'existe pas. Mets le nom du champ de ta table.
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
A oui aussi LOL, bien joué Fiko, pourtant je croyais bien l'avoir mis.
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Hey mais si je l'avais mis. Attention flavien44, d'ailleurs tu aurais du le voir en tapant le .

Alors, ca fonctionne ?
Messages postés
19
Date d'inscription
lundi 11 juin 2007
Statut
Membre
Dernière intervention
29 juin 2007

Ca y est enfin, ca FONCTIONNE.

Un grand merci a fiko81 et Nicko11 qui m'ont été d'une grande aide.
Je rectifie la ligne de code fonctionnant est:
User_Right = rs.Fields(0)
(Je sais pas pour quoi, ca veut pas marcher avec "rs.Fields("Login")"
Merci bien donc, vous m'enlever une sacrée épine du pied!!!
A bientot
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Le 0 signifie certainement que ton champ login est le premier champ de ta table.

Content que ca marche. A+