J'ai créé un module dans Access 2007 qui mettra à jour les tables liées, mais je voulais exécuter ce module depuis vb6. J'ai essayé ce code de Microsoft, mais cela n'a pas fonctionné.Comment exécuter un module Access 2007 dans VB6?
Sub AccessTest1()
Dim A As Object
Set A = CreateObject("Access.Application")
A.Visible = False
A.OpenCurrentDatabase (App.Path & "/DataBase/acc.accdb")
A.DoCmd.RunMacro "RefreshLinks"
End Sub
Ce que je vise à faire, est de permettre à mon programme de mettre à jour toutes les tables liées à de nouveaux liens, dans le cas où le programme a été utilisé sur un autre ordinateur
Si vous voulez jeter un oeil au programme de module, la voici:
Sub CreateLinkedJetTable()
Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table
Set cat = New ADOX.Catalog
' Open the catalog.
cat.ActiveConnection = CurrentProject.Connection
Set tbl = New ADOX.Table
' Create the new table.
tbl.Name = "Companies"
Set tbl.ParentCatalog = cat
' Set the properties to create the link.
tbl.Properties("Jet OLEDB:Link Datasource") = CurrentProject.Path & "/db3.mdb"
tbl.Properties("Jet OLEDB:Remote Table Name") = "Companies"
tbl.Properties("Jet OLEDB:Create Link") = True
' To link a table with a database password set the Link Provider String
' tbl.Properties("Jet OLEDB:Link Provider String") = "MS Access;PWD=Admin;"
' Append the table to the tables collection.
cat.Tables.Append tbl
Set cat = Nothing
End Sub
Sub RefreshLinks()
Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table
Set cat = New ADOX.Catalog
' Open the catalog.
cat.ActiveConnection = CurrentProject.Connection
Set tbl = New ADOX.Table
For Each tbl In cat.Tables
' Verify that the table is a linked table.
If tbl.Type = "LINK" Then
tbl.Properties("Jet OLEDB:Link Datasource") = CurrentProject.Path & "/db3.mdb"
' To refresh a linked table with a database password set the Link Provider String
'tbl.Properties("Jet OLEDB:Link Provider String") = "MS Access;PWD=Admin;"
End If
Next
End Sub
Comment cela ne fonctionnait-il pas? Sans cela, toute réponse est juste une supposition. – Corin
Avez-vous une macro nommée "RefreshLinks"? –
@ David-W-Fenton Après une longue période de recherche, j'ai découvert que je n'ai pas un marco et pour obtenir le marco je devais appeler la fonction cette question est résolue – Mahmoud