Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Expert confirmé Avatar de illight
    Homme Profil pro
    Chargé d'études statistiques
    Inscrit en
    septembre 2005
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : septembre 2005
    Messages : 2 288
    Points : 4 180
    Points
    4 180

    Par défaut Modification de liaison ODBC d'une base Access

    Bonjour,


    Auparavant, j'avais une base Access fractionnée, avec une base de données frontale, en accde (de façon à ce que des personnes ayant uniquement le runtime installé puisse l'utiliser, et ne touche pas aux données directement), et une base dorsale qui contenait les données, comme toute base fractionnée en fait
    De ce fait, j'avais une base de "production", et une base de "développement", qui me permettait de faire évoluer la base, et lorsque le développement était "validé", je pouvais alors "publier mon dév, en l'enregistrant dans mon dossier de "production", et en écrasant ma base accde de production, pour mettre la dernière version.

    Depuis peu, j'ai enfin réussi à avoir un serveur MYSQL, où je peux avoir mes données, au lieu d'utiliser d'une base fractionnée.

    Sur ce serveur, j'ai 2 base : une base de TEST, et une base de PRODUCTION, qu'on va appeler base_TEST et base_PROD.

    Sur ces 2 bases, j'ai 2 comptes utilisateurs :
    - le compte admin, qui est le mien, où j'ai tous les droits (CREATE TABLE, ALTER TABLE, GRANT, UPDATE, INSERT, DELETE, etc...)
    - un compte utilisateur, où j'ai des droits un peu plus restreint (pas la possibilité de modifier la base et les tables, par contre, possibilité de faire des UPDATE, INSERT, DELETE, SELECT)

    Sur mon poste à moi, j'ai donc créé le lien ODBC dans ma base Access, avec mon compte admin, sur la base base_TEST, avec le lien ODBC que j'ai appelé dans ma source de données utilisateur "base_TEST DEV"
    Quand je vais dans ma base de TEST, je n'ai donc aucun souci.

    J'ai donc installé le lien ODBC sur le poste d'un utilisateur, avec un lien vers la base MYSQL avec le compte utilisateur (qu'on va appeler user), sur la base base_TEST, que j'ai aussi appelé dans ma source de données utilisateur "base_TEST DEV".

    Donc de ce fait, le lien ODBC créé dans Access sur mon poste et le poste de mon utilisateur a le même nom de source de données "base_TEST DEV", mais avec un compte différent.

    Je me suis dit "vu que mon nom de source utilisateur est le même, si je lui donne un accde de ma base de TEST, ça devrait marcher.."

    Ben, en fait non ça marche pas quand, de son poste, il essaye d'ouvrir le .accde de ma base de TEST, avec les liens qui pointe sur la même source de données "base_TEST DEV", au moment d'ouvrir un formulaire qui a besoin de données, ça me fait une erreur ODBC.

    Donc ma question est : est-ce dû au fait que la base Access est en ACCDE et du coup le lien ne fonctionne pas ? ou c'est juste parce que, même si mes bases ont le même nom, l'utilisateur utilisé sur mes 2 postes n'est pas le même ?
    Si c'est juste un problème d'utilisateur, je suppose qu'il y a la possibilité de changer ça en VBA ?

    j'espère que j'ai été clair dans ma question, et je vous remercie par avance de vos retours,
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    13 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 13 240
    Points : 20 080
    Points
    20 080

    Par défaut

    Bonjour.

    Je ferai les tests suivants sur ton poste de dev :
    1. Dans Windows, Test de ODBC compte Admin, pour valider que la connexion est possible
    2. Dans Windows, Test de ODBC compte User, pour valider que la connexion est possible
    3. Puis : Accde+Compte Admin, Pour savoir si un accde marche ?
    4. Puis : Accde+Compte Utilisateur, Pour savoir si un accde marche avec le bon compte ?


    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Expert confirmé Avatar de illight
    Homme Profil pro
    Chargé d'études statistiques
    Inscrit en
    septembre 2005
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : septembre 2005
    Messages : 2 288
    Points : 4 180
    Points
    4 180

    Par défaut

    Bonjour,


    Merci pour ton retour

    Alors les liens ODBC fonctionnent avec les 2 comptes.

    Et j'ai essayé sur mon poste les accde, ils fonctionnent bien dans les 2 cas. Mais j'ai l'impression que, vu que j'ai Access sur mon poste, l'utilisation d'un .accde n'a pas le même comportement qui a uniquement le runtime...
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    13 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 13 240
    Points : 20 080
    Points
    20 080

    Par défaut

    Bonjour.

    C'est hélas très possible.
    Tu peux simuler (imparfaitement mais quand même bon) le mode runtime avec un "vrai" Access en passant le paramètre /runtime à la ligne de commande.

    Ça ressemble à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call "C:\TonCheminVersAccess\MSACCESS.EXE" "X:\TonCheminVersTaBD\TaBD.accdb" /runtime
    Ça doit marcher avec un accde aussi.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Expert confirmé Avatar de illight
    Homme Profil pro
    Chargé d'études statistiques
    Inscrit en
    septembre 2005
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : septembre 2005
    Messages : 2 288
    Points : 4 180
    Points
    4 180

    Par défaut

    Je vais faire le test.

    Par contre, je viens de m'apercevoir d'un autre truc : de mon côté, je travaille avec Access 2010, et du côté du poste où on doit utiliser la base, c'est du RunTime2013 d'Access en 64 bits. Du coup, la connexion ODBC n'utilise pas la même Connecteur.

    Du coup j'ai 2 questions :
    - si je prend des liens ODBC en 32 bits, j'aurai surement le même problème ?
    - Comment je pourrais faire, via une macro, pour changer les liens ODBC, en changeant uniquement ce qu'il faut au niveau de la connectique ODBC pour que ça fonctionne sur l'autre poste (car au final, le nom de ma base ODBC au niveau de la Source de données utilisateur est le même, c'est juste le connector ODBC (ou pilote ODBC) qui est différent, vu que c'est du 2013 64 bits) ?

    Merci pour ton retour
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    13 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 13 240
    Points : 20 080
    Points
    20 080

    Par défaut

    Bonjour.

    Désolé aucune idée.

    Je ne crois pas que Access stocke le nom du driver dans la chaîne de connexion, de mémoire il ne garde que le nom du DNS (le nom que tu as défini au moment de la création de la connexion, ex : BD_PROD) mais le changement de version peut peut-être poser des problèmes.
    Pour voir ce que Access utilise comme paramètre tu peux taper quelque chose comme :

    ? Curentdb.Tabledefs("TaTableLiee").connect [Enter].

    dans la fenêtre d'exécution immédiate.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Expert confirmé Avatar de illight
    Homme Profil pro
    Chargé d'études statistiques
    Inscrit en
    septembre 2005
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : septembre 2005
    Messages : 2 288
    Points : 4 180
    Points
    4 180

    Par défaut

    Merci pour la commande, je vais regarder le résultat de cette requête

    Effectivement, ça me dit : "ODBC;DSN=NomBaseODBC;"

    Donc comme tu l'as dit, il ne garde pas le connecteur utilisé...Bizarre que ça fonctionne pas du coup..
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  8. #8
    Expert confirmé Avatar de illight
    Homme Profil pro
    Chargé d'études statistiques
    Inscrit en
    septembre 2005
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : septembre 2005
    Messages : 2 288
    Points : 4 180
    Points
    4 180

    Par défaut

    Re,


    En fait, je suis en train de regarder un tuto sur lequel j'étais déjà tombé, et ici :

    https://ledzeppii.developpez.com/odbc-access/#LIII-C

    Il y a cette requête :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub RegDB_mysql()
    Dim strDSN As String, strAttr As String, strODBCDrv As String
     
    ' Nom de la source de données ODBC
    strDSN = "ESSAI MySQL"
    ' Nom du pilote ODBC
    strODBCDrv = "MySQL ODBC 3.51 Driver"
    ' Attributs
    ' OPTION est spécifique à MySQL dans cet exemple
    strAttr = "SERVER=LZ2" & vbCr & "DATABASE=test" & vbCr & "OPTION=3" & vbCr & _
              "UID=Utilisateur" & vbCr & "PWD=MotDePasse"
     
    DBEngine.RegisterDatabase strDSN, strODBCDrv, True, strAttr
     
    End Sub
    Et comme tu peux le constater, on utilise la fonction RegisterDatabase où on utilise le nom du pilote ODBC et du coup ce que j'appelle "le nom du connecteur". Vu que le nom sous 201 n'est pas le même, si ça se trouve c'est à cause de ça que j'ai un souci.
    je vais voir si je peux faire une requête avec juste une table et si je peux récupérer cette valeur de mon poste déjà, voir ce que ça me renvoie.
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  9. #9
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    13 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 13 240
    Points : 20 080
    Points
    20 080

    Par défaut

    Bonjour.

    De ce que j'en comprends c'est pour créer la connexion ODBC, si elle existe déjà avec les bons paramètres ce code ne semble pas nécessaire.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  10. #10
    Expert confirmé Avatar de illight
    Homme Profil pro
    Chargé d'études statistiques
    Inscrit en
    septembre 2005
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : septembre 2005
    Messages : 2 288
    Points : 4 180
    Points
    4 180

    Par défaut

    La connexion ODBC dans la source de données a été faite oui, mais pas dans la base Access sur le poste où j'installe mon accde.

    De ce que j'ai compris, cette requête permet de l'installer dans la base de registre, c'est pour ça que je comprend pas. Il y aurait une inscription dans la base de registre ? En fait, dans ma base Access de DEV, j'ai bien fait déjà au moins une fois le lien ODBC, mais sur le poste du client, je ne l'ai jamais fait.

    Au vu de ce que j'ai mis au dessus, est-ce qu'il faudrait pas la "créer" une première fois pour que ça fonctionne ?
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    13 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 13 240
    Points : 20 080
    Points
    20 080

    Par défaut

    Bonjour.

    À priori non, si une connexion ODBC existe sur le poste utilisateur et qu'elle porte le même "nom" access va s'en servir.
    J'ai plusieurs fois utilisé cela sur mon poste de dév avec une connexion vers DEV et un connexion vers PROD.
    Avant la mise en prod, je basculais sur la connexion PROD et je déployais sur mes postes clients qui eux aussi avait une connexion PROD.

    Peux-tu faire un test avec un vrai Access 64 bit au lieu du runtime ?
    Il est très difficile de débugger le runtime car on est complétement aveugle.

    Tu pourrais aussi essayer de rafraichir la liaison (en principe ce n'est pas nécessaire).
    Pour faire cela il suffit de faire quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    currentdb.tabledefs("TaTableLiee").refreshlink
    Attention parfois il fait supprimer le lien et le recréer car le RefreshLink passe des fois la table en mode "Lecture seule".

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  12. #12
    Expert confirmé Avatar de illight
    Homme Profil pro
    Chargé d'études statistiques
    Inscrit en
    septembre 2005
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : septembre 2005
    Messages : 2 288
    Points : 4 180
    Points
    4 180

    Par défaut

    Salut,


    Merci pour beaucoup pour ton aide.
    Le problème est que le poste où j'installe la base n'a pas Access et pas de licence (en gros faut que je passe par le service info pour installer Access sur le poste...c'est pas gagné )

    Je vais quand même essayer ton histoire de Refresh....

    Ce qui me turlupine vraiment, c'est que les noms des pilotes ODBC sont exactement les mêmes, pour ça que je comprend pas pourquoi ça marche pas..
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  13. #13
    Membre expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2005
    Messages
    2 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mai 2005
    Messages : 2 176
    Points : 3 358
    Points
    3 358

    Par défaut

    illight,

    32 bits ou 64 bits : il est important de choisir son camp ! Tu ne peux dévelppper en 32 bits et déployer tes utilisateurs en prod en 64 bits (les déclarations des API, les activeX ...).
    D'autant que le runtime 2013 32 bits est tout aussi gratuit que celui en 64 bits.

    Je pense aussi qu'il vaut mieux avoir des noms distinctifs pour les DSN selon la base cible. Et de toute façon il faut livrer les utilisateurs avec les bases correctement attachées dans leur contecte.

    CDLT
    "Always look at the bright side of life." Monty Python.

  14. #14
    Expert confirmé Avatar de illight
    Homme Profil pro
    Chargé d'études statistiques
    Inscrit en
    septembre 2005
    Messages
    2 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Chargé d'études statistiques
    Secteur : Service public

    Informations forums :
    Inscription : septembre 2005
    Messages : 2 288
    Points : 4 180
    Points
    4 180

    Par défaut

    Bonjour,


    Mon PC est sous 64 bits, et le poste en Windows 10 est aussi en 64 bits, donc ce côté-là, c'est bon normalement
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

Discussions similaires

  1. [AC-2007] connexion ODBC avec une base Access
    Par lemabs dans le forum Access
    Réponses: 1
    Dernier message: 24/12/2009, 08h08
  2. Réponses: 1
    Dernier message: 27/05/2008, 13h29
  3. Réponses: 4
    Dernier message: 15/01/2008, 16h36
  4. [ODBC] Utiliser une base de données Access sans les MFC
    Par Higestromm dans le forum Bases de données
    Réponses: 6
    Dernier message: 15/03/2005, 21h37
  5. Modification d'une base Access avec MySQL
    Par Wyatt dans le forum Administration
    Réponses: 2
    Dernier message: 07/01/2005, 19h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo