Как запустить модуль Access 2007 в VB6? - PullRequest
2 голосов
/ 22 мая 2010

Я создал модуль в Access 2007, который будет обновлять связанные таблицы, но я хотел запустить этот модуль из vb6. Я пробовал этот код от Microsoft, но он не работал.

      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

Я собираюсь разрешить моей программе обновить все связанные таблицы до новых ссылок, если программа использовалась на другом компьютере

Если вы хотите взглянуть на программу модуля, вот она:

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

1 Ответ

0 голосов
/ 22 мая 2010

Ошибка здесь в том, что все функции являются вспомогательными, чтобы запустить макрос, мне нужно выполнить одно из следующих действий:

Измените каждый sub на Public Function или создайте функцию, которая вызывает оба вспомогательных примера

public function Refresh()
  RefreshLinked
end Function`

, а затем создайте Marco и в действии ищите код Run, ищите функцию и все хорошо работает

Спасибо людям

...