Commande SQL qui ne fonctionne pas

Résolu
cs_flavien44 Messages postés 19 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 29 juin 2007 - 13 juin 2007 à 10:15
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 - 13 juin 2007 à 15:40
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

cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
13 juin 2007 à 10:50
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.


 




 
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
13 juin 2007 à 10:20
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
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
13 juin 2007 à 10:31
Ca y'est il craque ;)

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

Donc je déplace celui-là !
0
cs_flavien44 Messages postés 19 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 29 juin 2007
13 juin 2007 à 10:33
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
13 juin 2007 à 10:35
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 />
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
13 juin 2007 à 10:52
Au fait, quand tu veux executer une requete directment,

tu peux faire

Dim SQL as String
SQL = "Ta_Requete_SQL"

DoCmd.RunSQL SQL

A+
0
cs_flavien44 Messages postés 19 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 29 juin 2007
13 juin 2007 à 12:34
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.
0
fiko81 Messages postés 381 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 5 septembre 2010 3
13 juin 2007 à 13:45
je crois qu'il manque un s à field :
User_Right = rs.Fields("Login")
 Fiko ;-)

La reponse vous convient pensez > Accepter <
<hr />
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
13 juin 2007 à 13:45
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.
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
13 juin 2007 à 13:46
A oui aussi LOL, bien joué Fiko, pourtant je croyais bien l'avoir mis.
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
13 juin 2007 à 13:50
Hey mais si je l'avais mis. Attention flavien44, d'ailleurs tu aurais du le voir en tapant le .

Alors, ca fonctionne ?
0
cs_flavien44 Messages postés 19 Date d'inscription lundi 11 juin 2007 Statut Membre Dernière intervention 29 juin 2007
13 juin 2007 à 14:22
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
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
13 juin 2007 à 15:40
Le 0 signifie certainement que ton champ login est le premier champ de ta table.

Content que ca marche. A+
0