|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : mars 2007 Messages : 3 ![]() |
Bonjour,
Je veux extraire le User ID de ma connection ODBC afin de le sauvegarder dans l'enregistrement que l'utilisateur modifie. Mon application Access contient des formulaires et états et les tables sont des tables liées par ODBC sur un serveur SQL 7.0. Je n'arrive pas à trouver comment aller chercher le User ID. J'utilise le pilote SQL Server. Aidez-moi!!! |
|
|
00
|
|
|
#2 |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 941 ![]() |
Bonsoir,
Je ne sais pas comment ça fonctionne dans les moindres détails, mais voila ce que je peux dire. Dans le cas d'une connexion avec authentification SQL Serveur, l'Identifiant SQL Serveur peut être enregistré dans le DSN (Source de données système) ou dans le lien de la table liée. L'identifiant est donc toujour le même. A moins que l'utilisateur n'ait à saisir son identifiant et son mot de passe SQL Serveur à chaque fois ? Apparement Access garde cela en cache quelque part tant que la base est ouverte. Malheureusement je ne sais pas où. Pour une connexion avec authentification NT (nom utilisateur windows) il faut récupérer l'identifiant d'utilisateur windows. Dans ce cas on peut l'obtenir le plus souvent avecou encore via l'API windows : GetUserName Bon courage. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : mars 2007 Messages : 3 ![]() |
Merci LedZeppII,
Malheureusement les utilisateurs s'authentifient sur SQL Server et non sur Windows NT. Et je sais que c'est conservé en mémoire à quelque part mais où, telle est la question... J'ai pensé à utiliser une connexion ADO mais je dois modifier toute l'application et l'impact est trop grand. J'ai cherché sur tout le WEB(enfin presque..!!!) mais je n'ai rien trouvé. Alors si quelqu'un a des idées, elles seront les bienvenues. Je ne perd pas espoir.... |
|
|
00
|
|
|
#4 | |
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 941 ![]() |
Bonsoir,
Peut-être un moyen (ça marche pour moi). Créer une requête SQL Direct utilisant le même DSN que celui des tables liées. Exemple chaîne de connexion à mettre dans les propriétés de la requête SQL Direct Citation:
Code sql :
SELECT USER_NAME() DB_User, SYSTEM_USER SQL_User Pour que ça fonctionne il faut que l'utilisateur se soit authentifié, sinon il aura l'invite d'identification SQL Serveur. Voila. En espèrant que ça te dépanne. |
|
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : mars 2007 Messages : 3 ![]() |
Merci encore LedZeppII,
La requête SQL Direct fonctionne bien, mais lorsque je veux l'intégrer dans mon formulaire afin d'afficher dans un champ le nom de l'utilisateur, je ne peux plus ajouter des enregistrements dans mon formulaire. Il ne m'affiche que les enregistrements déjà existants. Mon formulaire était basé sur une table liée. J'ai créé une requête intégrant ma table et la requête SQL Direct afin d'alimenter le formulaire et me permettant d'afficher le nom de l'utilisateur loggué à la base mais je ne peux ajouter aucun enregistrement. Si le formulaire est basé sur la table liée seulement, je peux ajouter des enregistrements sans problème. Je continue de chercher...
|
|
|
00
|
|
|
#6 | ||
![]() ![]() Maintenance données produits Inscription : décembre 2005 Messages : 3 941 ![]() |
Bonsoir,
je ne pensais pas que tu l'utiliserai ainsi. Je voyais plutôt une fonction vba qui va lire la requête SQL Direct avec un recordset DAO. Code :
Sinon sur le formulaire mettre une zone de liste dont la source sera la requête SQL Direct. ItemData(0) de la liste sera l'utilisateur dans la base Column(0,0) et Column(1,0) de la liste seront l'utilisateur dans la base et le nom de connexion SQL Serveur. A+ |
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com