MDF et VBA

Bonjour,

j'ai besoin d'aide pour un code afin d'ouvrir et récupérer des données dans une base de donnée MDF (SQL)

j'utilise une petite application "SQL MDF Viewer" pour l'ouvrir

j'ai trouvé ce code :

'reference/outils (a mettre) : Microsoft ActiveX Data Objects 2.0 Library
Sub Connect_ToSQLServer()
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim SQL As String
    Dim conStrg As String
    Dim strDataBase As String

      strDataBase = "C:\MyDATA\Merlin.mdf"
      conStrg = "INTEGRATED SECURITY=SSPI;Connect Timeout=40;" & _
        "Persist Security Info=True;Trusted_Connection=yes;" & _
        "Initial Catalog=" & strDataBase & ";Data Source=.\SQLEXPRESS;Provider=SQLOLEDB.1;"
   Set conn = New ADODB.Connection
On Error Resume Next     'set up error
   With conn
      .Open conStrg
        If Err.Number <> 0 Then
            If conn.Errors.Count > 0 Then
                For Each e In conn.Errors
                    MsgBox e.Description
                Next
            End If
            response.End
        End If

        SQL = "SELECT * from BoardDetail"
        Set rs = New ADODB.Recordset
        rs.Open Source = SQL
        ActiveSheet.Range("A1").CopyFromRecordset rs
       .Close
   End With
   Set conn = Nothing
End Sub

mais j'ai une erreur lorsque je passe sur "MsgBox e.Description"

voici :

190126015337161359

si quelqu'un a une solution, le but étant de remplir uniquement en lecture un classeur excel...

merci pour votre aide

Salut JolOna

Et pourquoi ne pas tout simplement connecter ta base SQL à ton classeur !?

2019 01 26 08h51 36

A+

Bonjour JoLOna,

Il me semble cette déclaration est erronée :

strDataBase = "C:\MyDATA\Merlin.mdf"

Dans le paramètre "Initial Catalog" de la chaîne de connexion à une base MS SQL, il faut indiquer le nom de la base et non la nom du fichier de stockage .mdf. Donc, si le nom de ta base est "Merlin" :

strDataBase = "Merlin"

Salut JolOna

Et pourquoi ne pas tout simplement connecter ta base SQL à ton classeur !?

2019-01-26_08h51_36.png

A+

j'ai essayer mais ça ne fonctionne pas :

19012611083456900

Bonjour JoLOna,

Il me semble cette déclaration est erronée :

strDataBase = "C:\MyDATA\Merlin.mdf"

Dans le paramètre "Initial Catalog" de la chaîne de connexion à une base MS SQL, il faut indiquer le nom de la base et non la nom du fichier de stockage .mdf. Donc, si le nom de ta base est "Merlin" :

strDataBase = "Merlin"

en fait ce code je l'ai récupéré et j'ai simplement remplacer par mon adresse a moi, du coup mon emplacement je doit l'indiquer ou ?

Voici ma base en gros :

190126112815650527

elle se trouve ici : "C:\MyDATA\Merlin.mdf"

et voici quand je tente de me connecter :

190126113228653701

en facultatil je met le nom de la base ou pas ca change rien...

Un site de référence pour les chaîne de connection : https://www.connectionstrings.com/sql-server-native-client-10-0-oledb-provider/attach-a-database-file-located-in-the-data-directory-on-connect-to-a-local-sql-server-express-instance/

sincèrement cela ne m'aide pas du tout... je suis vraiment novice a part faire des requêtes pour creer ajouter ou modifier lol

merci

JoLOna,

Dans ton string de connexion, il est mentionné :

Data Source=.\SQLEXPRESS

As-tu installé un MS SQLEXPRESS sur le poste?

en fait je fais reference à Microsoft ActiveX Data Objects 2.0 Library il dise que dans le post que cela suffit pour se connecter a un fichier *.MDF

du coup c'est ce que j'ai fais...

Bonjour JoLona

Pour moi ton serveur SQL est "Merlin", donc dans la fenêtre de connexion tu as juste à mettre

2019 01 29 16h53 53

Et là, tu devrais avoir la liste de tes tables

A+

je n'ai pas MS SQLEXPRESS sur le poste il faut que ma connexion se fasse en ADO ou DAO

Sub DAOOpenRecordset()
    Dim db As DAO.Database, rst As DAO.Recordset, fld As DAO.Field
    Dim sSQL As String
    ' Ouverture de la base de données
    Set db = DBEngine.OpenDatabase("C:\MyDATA\Merlin.mdf")
    sSQL = "Select * From CLIENTS Where Région= \'WA\'"
    ' Ouverture du Recordset
    Set rst = db.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly)
    ' Fermeture du Recordset
    rst.Close
End Sub
Sub ADOOpenRecordset()
    Dim cnn As New ADODB.Connection, rst As New ADODB.Recordset, fld As ADODB.Field
    ' Ouverture de la connexion
    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\MyDATA\Merlin.mdf;"
    ' Ouverture du Recordset en défilement en avant, et en lecture seule
    rst.Open "SELECT * FROM Clients WHERE Région =\'WA\'", cnn, adOpenForwardOnly, adLockReadOnly
    ' Fermeture du Recordset
    rst.Close
End Sub

mais j'ai une erreur de connexion : en DAO => erreur d’exécution '3343' quand je le lis

Set db = DBEngine.OpenDatabase("C:\MyDATA\Merlin.mdf")

et en ADO => erreur d'execution -2147467259 ??? pareil quand je lis

cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:\MyDATA\Merlin.mdf;"

si je met Merlinça ne marche pas vu qu'il n'y a pas de base moi j'ai simplement un fichier et je ne souhaite pas installer MS SQLEXPRESS...

Re,

Perso, je ne parlais que d'une connexion "simple" depuis Excel

https://forum.excel-pratique.com/viewtopic.php?p=728831#p728831

A+

Bonjour JoLOna,

Si j'ai bien compris ton problème "accéder à des données stockées dans un .mdf depuis VBA sans moteur de données MS SQL", je n'ai pas de solution à proposer. Je ne vois qu'une issue : installer SQLEXPRESS (c'est gratuit ) par el lien :

https://www.microsoft.com/fr-FR/download/details.aspx?id=55994

ok tres bien je DL SQL qerveur et tester pour voi ce que ca dit car si au pir je peux lié les données dans une table je pourrais faire ce que je veux avec, je vous redis si c'est good merci

comment je fais pour mettre mon fichier *.mdf dans le serveur SQL ???

Bonjour JoLOna,

Pour attacher la base de donnée, tu ouvres le programme "Microsoft SQL Server Management Studio" qui s'installe avec MSSQLEXPRESS.

Dans l'arborescence des objets, tu sélectionnes "Base de données", puis clic droit et choix "Joindre", ensuite "Ajouter" et tu indiques l'emplacement de ton fichier .MDF :

attacher la base de donnees
Rechercher des sujets similaires à "mdf vba"