cs_flavien44
Messages postés19Date d'inscriptionlundi 11 juin 2007StatutMembreDernière intervention29 juin 2007
-
13 juin 2007 à 10:15
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 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?
cs_flavien44
Messages postés19Date d'inscriptionlundi 11 juin 2007StatutMembreDernière intervention29 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
fiko81
Messages postés381Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention 5 septembre 20103 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 />
cs_flavien44
Messages postés19Date d'inscriptionlundi 11 juin 2007StatutMembreDernière intervention29 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
cs_Nicko11
Messages postés1141Date d'inscriptionmercredi 7 mars 2007StatutMembreDernière intervention19 septembre 20073 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.
cs_flavien44
Messages postés19Date d'inscriptionlundi 11 juin 2007StatutMembreDernière intervention29 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