Rechercher : dans
Par :

Access et ODBC

Dernière réponse le 13 jui 2004 à 13:33:05 Linuxfor men, le 5 jui 2004 à 16:59:00 
 Signaler ce message aux modérateurs

Bonjour,

Voilà mon souci.
Dans une base Access, j’ai des tables ODBC qui sont protégées par Login/mdp cad que lorsqu'on veut les consulter, une boite de dialogue s'affiche demandant le Login et le mdp.
Après saisie correcte des informations, la table s'affiche.
Dans une macro, je lance automatiquement l'exécution d'une requete qui se sert d'une de ces tables. En conséquence, la boite de dialogue s'affiche et attend qu'on l'a renseigne.
Je voudrais pouvoir renseigner ces infos automatiquement sans avoir à les saisir.
Est ce possible dans Access? Ou faut il que je vois le pb dans le paramétrage ODBC?
Merci d'avance.

Meilleures réponses pour « Access et ODBC » dans :
PhpMyAdmin - 1045- Access denied for user root@localhost VoirPhpMyAdmin - Access denied for user root’@localhost Cette astuce est destinée à ceux qui ont un problème d’ouverture de PhpMyAdmin (par exemple avec WAMP Server ou EasyPHP) avec l'erreur suivante : #1045- Access denied for user...
[Outlook] Réponse du serveur : Erreur 554 - Relay Access denied VoirVotre client de messagerie vous affiche l'erreur suivante : Erreur 554 - Relay Access Denied Ce problème est lié à l'utilisation d'un serveur de courrier sortant (serveur SMTP) sur un domaine n'appartenant pas au fournisseur d'accès. En effet, afin...
Création d'un DSN avec ODBC VoirQu'est-ce qu'un DSN ? ODBC permet de relier un client à une base de données en déclarant une source de données (correspondant généralement à une base de données) dans le gestionnaire ODBC (communément appelé administrateur de source de données...
ODBC (Open DataBase Connectivity) VoirQu'appelle-t-on ODBC? ODBC signifie Open DataBase Connectivity. Il s'agit d'un format défini par Microsoft permettant la communication entre des clients bases de données fonctionnant sous Windows et les SGBD du marché. Le gestionnaire ODBC est...

1

qsdf, le 5 jui 2004 à 18:47:22
  • +1

Quand tu attaches tes tables, tu as une case à cocher "retenir le login et mot de passe". Il faut la cocher sous peine de rencontrer ton problème. Une fois l'attache créée, je ne connais pas de solution pour s'affranchir du mot de passe si cette case n'a pas été cochée. Donc refais tes attaches !

Répondre à qsdf

2

qsdf, le 6 jui 2004 à 11:14:55

Recherche aussi dans l'aide du coté de la méthode connect des objets TableDef.
[CurrentDB.TableDefs(<indexe>).connect = ...]

Répondre à qsdf

3

Linuxfor men, le 13 jui 2004 à 12:10:57

Merci pour ces conseils;

Je pense qu'avec la première réponse, on peut s'en tirer.
Mais il faut récrer toutes les attaches aux tables...galère.

Répondre à Linuxfor men

4

 qsdf, le 13 jui 2004 à 13:33:05

Inspirez vous de celà :
(je n'ai pas testé ni compilé, mais c'est l'idée à suivre pour ne pas devoir tout faire à la main)



Option Compare Database
Option Explicit
Option Base 0


Sub rattache()
Dim nbTables As Long ' nombre de tables dans la liste
Dim i As Long ' compteur de boucle
Dim nouvelleTable As TableDef ' nouvelle table à lier
Dim nomTable As String ' nom de la table
Dim user As String ' nom utilisateur
Dim mdp As String ' mot de passe
Dim base As String ' nom de la base externe (tablespace ?)

mdp = "xxx"
user = "zzzz"
base = "bbbb"

' compte le nombre de table
nbTables = CurrentDb.TableDefs.Count

' parcours la collection des tables liées dans cette BDD pour récupérer leur nom et refaire les attaches
For i = nbTables - 1 To 0 Step -1 ' respecter le décompte SVP sinon il y aura des Pb d'indexation lors du retrait des liens
If Left(CurrentDb.TableDefs(i).Connect, 4) = "ODBC" Then ' si c'est une table liée
nomTable = CurrentDb.TableDefs(i).Name ' récupère le nom de la table
CurrentDb.TableDefs.Delete nomTable ' efface le lien
' création d'un nouveau lien
Set nouvelleTable = CurrentDb.CreateTableDef(nomTable, dbAttachSavePWD, nomTable, "ODBC;DATABASE=" & nomTable & ";UID=" & user & ";PWD=" & mdp & ";DSN=" & base & ";;")
CurrentDb.TableDefs.Append nouvelleTable ' rattache la table à la collection
CurrentDb.TableDefs(nomTable).RefreshLink ' raffraichi la collection
End If
Next i
End Sub

Répondre à qsdf