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 :

Création DataSource SQL Server en VBA


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2010
    Messages : 32
    Points : 15
    Points
    15
    Par défaut Création DataSource SQL Server en VBA
    Bonjour,

    Je voudrais créer en VBA une DataSource sur chaque ordinateurs où l'application Access/VBA que je créer est utilisé pour éviter de devoir créer à la main via le gestionnaire ODBC de Windows.

    J'ai trouvé ce tutoriel : http://access.developpez.com/sources...s#ConfigDsnVBA , assez proche de ma demande.

    Mais impossible de l'adapté pour SQL Server avec un UID et PWD...

    Merci d'avance pour vos réponses.

  2. #2
    Membre expérimenté
    Avatar de mumen
    Homme Profil pro
    Développement à façon multisecteur.
    Inscrit en
    Mars 2004
    Messages
    566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Développement à façon multisecteur.

    Informations forums :
    Inscription : Mars 2004
    Messages : 566
    Points : 1 381
    Points
    1 381
    Par défaut
    Normalement, tu devrais te contenter d'ajouter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strAttributes = strAttributes & "UID=TonNomUser" & Chr$(0)
    strAttributes = strAttributes & "PWD=TonMotDePasse" & Chr$(0)
    Maintenant, dans toutes les version d'Access, tu peux utiliser les objets ADO. Il est dit que cela est plus rapide qu'en ODBC.

    Va sur la page tutoriel Access et tapes SQLOLEDB dans la zone de recherche.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2010
    Messages : 32
    Points : 15
    Points
    15
    Par défaut
    Merci pour ta réponse mais j'avais déjà eu l'idée, mon problème se pose plus au niveau du driver je pense et de l'attribut DBQ... Car j'ai à chaque fois le message d'erreur qui m'indique que le DNS n'a pas été crée.

    -Soit je met le mauvais driver (je pense pas)
    -Soit ce n'est pas l'attribut DBQ qu'il faut renseigner pour une base SQL Server

    Ce qui est sur c'est que ça ne vient pas de UID, PWD, et trusted connexion car j'ai essayé avec et sans.

    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
    21
    22
    23
    24
    25
    26
    27
    28
     
     Sub Creation_DNS()
     
        Dim strDriver As String
        Dim strAttributes As String
        Dim iRet As Long
     
        strDriver = "SQL Server" & Chr$(0)
     
        strAttributes = "DSN=***************" & Chr$(0)
     
        strAttributes = strAttributes & "DESCRIPTION=DNS ********* base SQL Serveur sur ********:****" & Chr$(0)
     
        strAttributes = strAttributes & "DBQ=10.******" & Chr$(0)
     
        strAttributes = strAttributes & "UID=*********" & Chr$(0)
     
        strAttributes = strAttributes & "PWD=*********"" & Chr$(0)"
     
        strAttributes = strAttributes & "Trusted_Connection=yes"
     
        iRet = SQLConfigDataSource(vbNull, ODBC_ADD_DSN, strDriver, strAttributes)
        If iRet Then
            MsgBox "DSN Créé !", vbInformation
        Else
            MsgBox "La création du DSN a échoué !", vbCritical
        End If
    End Sub
    En ce qui concerne ta proposition SQLOLEDB j'ai fait ce tuto http://ledzeppii.developpez.com/odbc-access/ : sans résultats...

  4. #4
    Membre expérimenté
    Avatar de mumen
    Homme Profil pro
    Développement à façon multisecteur.
    Inscrit en
    Mars 2004
    Messages
    566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Développement à façon multisecteur.

    Informations forums :
    Inscription : Mars 2004
    Messages : 566
    Points : 1 381
    Points
    1 381
    Par défaut
    Tu cherches à résoudre ton problème avec des solutions d'il y a dix ans et plus.

    Premier lien de trouvé dans Google sur 'SQLOLEDB' :

    http://msdn.microsoft.com/en-us/libr...v=sql.80).aspx


    Référence la bibliothèque "Microsoft ActiveX Data Objects 6.1 Library" pour avoir accès facilement à SqlServer. Ça se manipule presque comme ADO.

    http://vb.developpez.com/bidou/recordset-ado/
    http://ledzeppii.developpez.com/fonctionnalite-rs-ado/

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2010
    Messages : 32
    Points : 15
    Points
    15
    Par défaut
    Merci, je vais appliquer ça et je mettrais le résultat/résumé sur le post.

    Je me rends pas compte si j'utilise des solutions d'il y a 10 ans ou pas... Pour moi tout ce qui touche à Access ça me semble dater des années 20 donc je fais pas trop la différence entre différentes solutions.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2010
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2010
    Messages : 32
    Points : 15
    Points
    15
    Par défaut
    Voila, j'ai résolu mon problème.

    La solution que je vais proposée et différente du problème initial puisqu'elle ne crée plus automatiquement le DSN dans Windows, mais utilise une connexion DSN sans l'avoir préalablement crée dans votre système (Pourquoi pas).

    Pour cela, il faut utiliser l'objet ADODB, de la manière suivante :

    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
     
       Dim cnn As ADODB.Connection
       Set cnn = New ADODB.Connection
       Dim rs As ADODB.Recordset
     
       cnn.ConnectionString = "driver={SQL Server};server=10.**.**.**;uid=LOGIN;pwd=MDP;database=SCHEMA_DB"
       cnn.Open
     
       Set rs = cnn.Execute("Select NOMPRE FROM SCHEMA_DB.TABLE")
     
       MsgBox rs("NOMPRE")
     
       rs.Close
     
       cnn.Close

  7. #7
    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 759
    Points
    7 759
    Par défaut
    Bonjour Soni03,

    Ta chaîne de connexion ADODB ne mentionne aucun fournisseur (Provider=...) de données.
    Donc par défaut, le fournisseur est ODBC
    Ça signifie que tu as réalisé une connexion ODBC à travers ADODB.
    Ce n'est un problème en soi, mais un fournisseur dédié SQL Server serait peut-être plus performant.

    Le nom du fournisseur de données varie selon la version de SQL Server.
    SQLOLEDB pour SQL Server 2000
    SQLNCLI pour SQL Server 2005
    SQLNCLI10 pour SQL Server 2010

    Consulte le site connectionstrings pour voir.
    Ce sont les exemples "OLE DB providers" qui correspondent à ADODB.

    A+

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

Discussions similaires

  1. programmer connexion à SQL server via VBA
    Par cinfo84 dans le forum Projets ADP
    Réponses: 0
    Dernier message: 15/11/2011, 18h18
  2. Création trigger SQL Server 2008
    Par lessoy dans le forum Développement
    Réponses: 1
    Dernier message: 08/09/2011, 13h23
  3. [AC-2003] Création table sql server nouveau sujet
    Par novice06 dans le forum VBA Access
    Réponses: 0
    Dernier message: 21/06/2010, 11h58
  4. Jasper iReport Datasource sql server
    Par rjgeneve dans le forum Jasper
    Réponses: 2
    Dernier message: 11/06/2009, 15h51
  5. Création Lot sql server
    Par Alex35 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 30/01/2009, 19h17

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