IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

VBA Access Discussion :

suppression des tables liées dans le volet de navigation access


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    conception et management des systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : conception et management des systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 19
    Points : 29
    Points
    29
    Par défaut suppression des tables liées dans le volet de navigation access
    Bonjour. je travaille sur une application qui doit tourner sur mysql et sur access comme back-end . le front-end est un fichier access. Le back-end est soit sur une base de données access, soit sur une base de données sur mysql. dans le volet de navigation du front-end, je souhaiterai supprimer par le code vba, les tables liées sur le back-end access, au moment ou j'excute le code de liason des tables de mysql et vis-versa. ma question est: est-il possible de supprimer les tables liées dans le volet de navigation access par code vba? Si tel est le cas, puis-je connaitre le code correspondant? merci.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Tu peux supprimer et recréer des tables liées dans Access par VBA.

    ici du code qui fait cela :

    MS Access – VBA – Delete all Linked Tables
    http://www.devhut.net/2011/06/10/ms-...linked-tables/

    MS Access Link Table With VBA
    http://stackoverflow.com/questions/3...table-with-vba

    Pour avoir vécu ce genre de structure bicéphale, je te suggère plutôt de garder tes 2 sources et de mettre des requêtes entre les 2.
    Je trouve que changer le SQL d'une requête est bien plus facile que de changer les tables sources.
    Et j'ai vécu des cas où le changement de source brisait les jointures dans les requêtes.

    En gros cela donne :

    • tblMatable_Access (table iée sur access)
    • tblMatable_MySQL (table liée sur MySQL)
    • tblMaTable (requête dont les données viennent de Access ou MySQL).
      Elle devient la source de toutes les requêtes, formulaire ou rapports de l'application.
      C'est pour cela que même si c'est une requête, je la préfixe tbl.


    Avec les SQL suivant :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select [tblMaTable_Access].* from [tblMaTable_Access];

    ou

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    select [tblMaTable_MySQL].* from [tblMaTable_MySQL];

    Ici du code qui fait la modification :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private sub Test_ChangerSource()
       call ChangerSource("_Access", "_MySQL")
    end sub
    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
    16
     
    public sub ChangerSource(prmSource as string, prmCible as string)
     
    dim db as dao.database: set db=currentdb
     
    dim q as query: for each q in db.querydefs
     
      if q.name like "tbl*" then
         q.sql=replace(q.sql, prmSource, prmCible)
      end if
     
    next q
     
    db.close: set db=nothing
     
    end sub
    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
    Nouveau membre du Club
    Homme Profil pro
    conception et management des systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : conception et management des systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 19
    Points : 29
    Points
    29
    Par défaut
    Trop génial. Merci Marot R. Déjà j'ai ce que je cherchais, C'est le plus important. il ne me manque plus que des tests à faire. j'avoue que je ne comprend encore rien sur la solution de la requête entre les tables MySQL et Access, mais je vais tout tester et faire mon rapport. Merci encore.

    Oui j'oubliais. Je pensais avoir posté cette discussion sur le forum, mais vu le message du bas, j'en déduit que je l'ai posté en privé. je vous prie de souffrir un peu de m'indiquer la marche à suivre pour le poster sur le forum. Merci

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    conception et management des systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : conception et management des systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 19
    Points : 29
    Points
    29
    Par défaut
    Bonsoir à vous. voici le code que j'ai testé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Private Sub Commande0_Click()
    Dim access As String
    Dim mysql As String
     
        access = "SELECT access_classeur1erordre.N°1, access_classeur1erordre.Intitulé, access_classeur1erordre.sécurisé, access_classeur1erordre.[Mot de passe], access_classeur1erordre.Unipersonnel, access_classeur1erordre.[Niveau d'accès], access_classeur1erordre.[par mot de passe], access_classeur1erordre.[par niveau d'accès]FROM access_classeur1erordre;"
     
    mysql = "SELECT mysql_classeur1erordre.N°1, mysql_classeur1erordre.Intitulé, mysql_classeur1erordre.sécurisé, mysql_classeur1erordre.[Mot de passe], mysql_classeur1erordre.Unipersonnel, mysql_classeur1erordre.[Niveau d'accès], mysql_classeur1erordre.[par mot de passe], mysql_classeur1erordre.[par niveau d'accès]FROM mysql_classeur1erordre;"
     
         Call ChangerSource(mysql, access)
     
    End Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Sub ChangerSource(prmSource As String, prmCible As String)
       Dim db As dao.Database: Set db = CurrentDb
       Dim q As Query: For Each q In db.QueryDefs
     
       If q.Name Like "classeur1er*" Then
          q.SQL = Replace(q.SQL, prmSource, prmCible)
       End If
     
    Next q
     db.Close: Set db = Nothing
     End Sub
    Comme vous pouvez rapidement le constater, j'ai importé de MySQL une table nommée mysql_classeur1erordre, et d'Access une table nommée access_classeur1erordre. J'ai crée une requête nommée classeur1erordre.

    c'est cette requête qui est sensée recevoir le contenu de l'une des deux tables. Cependant tout ne marche pas comme prévu. Voici le problème qui se pose lors de l'exécution.

    Au moment de l'exécution de ChangerSource il y a une erreur de compilation à la ligne N°4 elle dit: "type défini par l'utilisateur non défini"

    pour résoudre le problème j'ai remplacé Dim q As Query: par Dim q As QueryDefs:
    mais j'ai une autre erreur de compilation sur la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     If q.Name Like "classeur1er*" Then
    l'erreur est "membre de méthode ou de données introuvable". On dirait que Name n'est pas une méthode existante pour les requêtes, et que Query n'est pas un type de données défini.


    puis-je avoir des éclaircissement de votre part, merci.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    conception et management des systèmes d'information
    Inscrit en
    Janvier 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : conception et management des systèmes d'information
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2015
    Messages : 19
    Points : 29
    Points
    29
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Commande0_Click()
    Dim access As String
    Dim mysql As String
    access = "SELECT access_classeur1erordre.N°1, access_classeur1erordre.Intitulé, access_classeur1erordre.sécurisé, access_classeur1erordre.[Mot de passe], access_classeur1erordre.Unipersonnel, access_classeur1erordre.[Niveau d'accès], access_classeur1erordre.[par mot de passe], access_classeur1erordre.[par niveau d'accès]FROM access_classeur1erordre;"
    mysql = "SELECT mysql_classeur1erordre.N°1, mysql_classeur1erordre.Intitulé, mysql_classeur1erordre.sécurisé, mysql_classeur1erordre.[Mot de passe], mysql_classeur1erordre.Unipersonnel, mysql_classeur1erordre.[Niveau d'accès], mysql_classeur1erordre.[par mot de passe], mysql_classeur1erordre.[par niveau d'accès]FROM mysql_classeur1erordre;"
    Call ChangerSource(access)
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public Sub ChangerSource(strSQL As String)
    CurrentDb.QueryDefs("classeur1erordre").SQL = strSQL
    End Sub
    Merci à l'équipe. voici le code qui permet de changer le contenu d'une requete. Votre procédure dans la résolution de ce problème, en l'occurence la bicéphalité, me convient mieux que ce que j'avais pensé. Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. DataForm éditer des données liées dans deux tables.
    Par slyderkiller dans le forum Silverlight
    Réponses: 0
    Dernier message: 18/02/2011, 13h02
  2. Réponses: 2
    Dernier message: 29/10/2010, 13h09
  3. [DW8] Insertion dans des tables liées
    Par musely dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 25/09/2008, 10h48
  4. suppression des caratères spéciaux dans une table
    Par syl221 dans le forum Access
    Réponses: 6
    Dernier message: 31/08/2005, 09h20

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