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 :

INSERT INTO de SQL SERVER vers ACCESS en ADO


Sujet :

VBA Access

  1. #1
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 363
    Points
    363
    Par défaut INSERT INTO de SQL SERVER vers ACCESS en ADO
    * Bonjour *

    Avec une seule requête ensembliste, sans passer par un recordset, très lent pour un gros import de données (je suis pas sûr que la requête soit beaucoup plus rapide puisque l'essentiel de la durée de l'import devrait être causé par la latence réseau et par l'écriture disque, mais j'aimerais vérifier quand même).

    Je verrais bien une connexion classique puis un Execute :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set CnADO = New ADODB.Connection
    CnADO.Open [chaîne de connexion ADO à la base Access]
    CnADO.execute [Requête SQL]
    Sous SQL Jet, la syntaxe de cette requête devrait être la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    INSERT INTO Table_Access (ChampsAccess) 
    SELECT (ChampsSQLServer) FROM Table_SQLServer IN [chaîne de connexion SQL MS Jet à la base SQLServer ]
    Je bute sur la séquence [chaîne de connexion base SQLServer] et je ne trouve aucun exemple.

    Est-ce que ce mélange des genres est-il possible ?

    Ou bien est-il préférable de lier la table SQL server et ensuite de faire le INSERT INTO ?

    Ou bien, encore plus tordu, on crée une connexion OLEDB vers la base SQL Server et dans la requête INSERT INTO on utilise OPENDATASOURCE pour pointer vers la base Access. Bref on ouvrirait deux canaux pour un simple INSERT .....

    * Merci d'avance *

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 075
    Points : 24 702
    Points
    24 702
    Par défaut
    aucun exemple ?

    http://www.connectionstrings.com/



    Par contre ce mélange je ne sais pas si c'est possible...

  3. #3
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 363
    Points
    363
    Par défaut
    Salut loufab,

    Des exemples de connection strings, oui, mais dans le contexte évoqué, non (clause IN de Jet pour SQL Server)

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Il n'y a pas d'exemple dans l'aide pour le IN dans un contexte ODBC (je suis sur 2010 en Tech Prev et l'aide ne fonctionne plus )
    Mais il se peut effectivement que le IN soit revervé à une utilisation FULL JET.

    Ou bien est-il préférable de lier la table SQL server et ensuite de faire le INSERT INTO ?
    Je ne sais pas si ça va être vraiment plus rapide

    L'avantage du recordset reste que dans la boucle il est possible de rendre la main avec doevents et de gérer l'affichage pour faire patienter l'utilisateur.

  5. #5
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 075
    Points : 24 702
    Points
    24 702
    Par défaut
    Tof désactive l'aide online en 2010. ça devrait refonctionner.

  6. #6
    Expert éminent
    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
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonsoir,
    Citation Envoyé par FMJ Voir le message
    Salut loufab,
    Des exemples de connection strings, oui, mais dans le contexte évoqué, non (clause IN de Jet pour SQL Server)
    Voir ici : clause IN
    Exemple :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CLI.*
    FROM Clients As CLI IN "" [ODBC;DRIVER=SQL Server;SERVER=NomServeurSQL;DATABASE=NomBDDSqlServer;Trusted_Connection=Yes];
    Mais ça reviens à avoir une table liée ODBC.
    En moins souple car je ne peux pas préciser le schéma SQL Server de la table SQL Server (le propriétaire de la table).

    Il y a une durée qui est incompressible : c'est le transfert des enregistrements à travers le réseau.
    Là où ou peut gagner du temps, c'est si on ne veut qu'une petite partie des enregistrements d'une table SQL Server.
    Dans ce cas on a tout intérêt à faire exécuter la requête de sélection par SQL Server.
    Ça peut se faire via ...
    • un recordset ADO dont la source est une instruction SQL Server (Transac-SQL), avec des restrictions dans le WHERE.
    • un recordset ADO dont la source est procédure stockée SQL Server paramétrée
    • une requête Access de type SQL-Direct (ODBC).
      Cette requête pourra servir de source (FROM) à ta requête INSERT INTO
    • ...

    Sinon, si je dois utiliser toutes les données d'une table SQL Server, sans restrictions, j'importe la table avec DoCmd.TransferDatabase.

    A+

  7. #7
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 363
    Points
    363
    Par défaut
    Merci à vous

    Je teste et fais un retour.

Discussions similaires

  1. Base MS SQL Server vers Access
    Par cjacquel dans le forum Outils
    Réponses: 1
    Dernier message: 19/01/2015, 10h31
  2. insert into depuis feuille excel vers table sous sql server 2005
    Par enstein8 dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 09/12/2011, 17h21
  3. Export des nvarchar de sql server vers Access
    Par matlatomat dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/08/2010, 19h47
  4. Transferer une table de SQL Server vers Access
    Par Oluha dans le forum Bases de données
    Réponses: 18
    Dernier message: 24/06/2005, 11h53
  5. Script sql pour exporter BD de sql server vers access
    Par kayser dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/12/2004, 16h48

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