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 :

Attacher les tables d'une base SQL server 2000


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 71
    Par défaut Attacher les tables d'une base SQL server 2000
    Bonjour,

    je voudrais automatiser l'attache des tbales d'une base SQL serveur dans Access 2003.

    J'ai trouver la procédure suivante sur microsoft :
    Pour créer une requête SQL directe pour lister et pour attacher toutes les tables sur un SQL Server, procédez comme suit :
    1. Créez une nouvelle requête qui n'est pas fondée sur une table.
    2. Dans le menu Requête, choisissez Spécifique SQL et choisissez Transfert.
    3. Dans la fenêtre Requête SQL directe, tapez la ligne suivante :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT name FROM sysobjects Where type = 'U';

    REMARQUE : si le SQL Server que vous utiliserez a été installé avec le respect de casse, vous pouvez doit taper "Nom" et "u" en majuscules.
    4. Dans le menu Affichage, choisissez Propriétés. Vous entrez un complet ODBC connecte la chaîne dans la propriété ODBCConnectStr ou choisit le bouton Générer pour sélectionner une source de données ODBC. Ci-dessous trouve qu'un exemple d'un ODBC valide connecte la chaîne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ODBCConnectStr : ODBC DSN = opus; UID = jean; PWD = steeler DATABASE = pubs
    5. Exécutez la requête pour vous assurer qu'elle renvoie une colonne appelée Name qui affiche la liste des tables sur le SQL Server.
    6. Enregistrez la requête comme SQL_Tables et puis fermez-le.
    7. Créez un nouveau module et puis entrez la ligne suivante dans la section Déclarations :
    8. Entrez le code suivant du module.

    REMARQUE : dans le code exemple suivant, un trait de soulignement (_) à la fin de la ligne est utilisé comme du caractère de continuité de ligne. Supprimez ce trait de soulignement en fin de ligne lors de la reprogrammation dans Access Basic.
    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
    17
    18
    19
    20
    Function attach_all ()
              Dim DB As Database
              Dim RS As Recordset
              Dim QD As QueryDef
     
              Set DB = DBEngine.Workspaces(0).Databases(0)
              ' Set the QueryDef variable to the pass-through query.
              Set QD = DB.OpenQueryDef("sql_tables")
              Set RS = DB.OpenRecordset(QD.name, DB_OPEN_SNAPSHOT)
     
              Do Until RS.EOF
                  DoCmd TransferDatabase A_ATTACH, "<Sql database>", _
                       QD.connect, A_TABLE, RS!Name, RS!Name
                  RS.MoveNext
              Loop
     
              RS.Close
              QD.Close
     
          End Function
    9. Pour tester la fonction, choisissez Affichage à partir de la fenêtre Immédiat, tapez la ligne suivante dans la fenêtre Immédiat et puis appuyez sur ENTRÉE :

    ? attach_all()

    Toutes les tables sur le SQL Server seront attachées à la base de données courante. Le volume de fois de laquelle nécessite ce processus dépend du nombre de tables sur le SQL Server.

    Le problème est quand je lance la fonction j'obtiens une erreur (voir copie ecran).

    Merci de votre aide.
    Images attachées Images attachées  

  2. #2
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    Le code a l'air un peu vieux.
    Voici une actualisation.
    Code vb : 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
    17
    18
    19
    Function attach_all()
    Dim db As DAO.Database
    Dim RS As DAO.Recordset
    Dim QD As DAO.QueryDef
     
    Set db = CurrentDb
    ' Set the QueryDef variable to the pass-through query.
    Set QD = db.QueryDefs("sql_tables")
    Set RS = db.OpenRecordset(QD.Name, dbOpenSnapshot)
     
    Do Until RS.EOF
         DoCmd.TransferDatabase acLink, "<Sql database>", _
                QD.Connect, acTable, RS!Name, RS!Name
         RS.MoveNext
    Loop
     
    RS.Close
    QD.Close
    End Function
    A+

Discussions similaires

  1. [AC-2003] Attacher les tables d'une base sécurisée
    Par samloba dans le forum Sécurité
    Réponses: 4
    Dernier message: 08/10/2011, 23h38
  2. Réponses: 2
    Dernier message: 06/08/2008, 17h50
  3. Copie de table sur une base SQL Server 2005
    Par stephyugh dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/04/2008, 13h30
  4. Droits sur les vues d'une base SQL server 2000
    Par mioux dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 30/04/2007, 16h13
  5. extraire une table d'une base sql server 2000
    Par MAJIK_ENIS dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 21/04/2006, 22h13

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