2015-08-05 2 views
1

У меня есть 5-6 клиентов, которым я буду продавать свой продукт на основе доступа. Где находится файл базы данных Back-end (защищенный паролем). Доступ accdr Фронтальный файл, который сохраняет данные во внутреннем файле. Расположение бэкэнд-файла изменит клиент на клиент, поэтому нужно иметь код VBA, который связывает внешний интерфейс.Подключение к бэкэнду доступа из доступа к интерфейсу 2013 года с использованием VBA

Я попытался код ниже

sConnect = "Provider=Microsoft.ACE.OLEDB.12.0; " _ 
    & Data Source= " & "C:\MyDB_be.accdb" & ";" _ 
    & "Jet OLEDB:Database Password=123;" 

Но, таблицы не получают Reconnected.

Я получил вышеуказанный код от this Ques on Stackoverflow.

Затем я попытался код ниже

Const LnkDataBase = "C:\MyDB_be.accdb" 
Sub relinktables() 
'Routine to relink the tables automatically. Change the constant LnkDataBase to the desired one and run the sub 
Dim dbs As DAO.Database 
Dim tdf As DAO.TableDef 
Dim strTable As String 
Set dbs = CurrentDb() 
For Each tdf In dbs.TableDefs 
    If Len(tdf.Connect) > 1 Then 'Only relink linked tables 
     If tdf.Connect <> ";DATABASE=" & LnkDataBase Then 'only relink tables if the are not linked right 
      If Left(tdf.Connect, 4) <> "ODBC" Then 'Don't want to relink any ODBC tables 
       strTable = tdf.Name 
       dbs.TableDefs(strTable).Connect = ";DATABASE=" & LnkDataBase 
       dbs.TableDefs(strTable).RefreshLink 
      End If 
     End If 
    End If 
Next tdf 
End Sub 

Это работает, когда файл не защищен паролем. Этот код я получил от This Ques. Но не указывается пароль.

Пожалуйста, помогите мне.

Либо укажите ошибку в 1-м кодексе. ИЛИ Как указать пароль в Второй код ИЛИ Новый код в целом.

Проведено 4 часа на поиск решения. Новое для доступа к VBA.

Прошел через this и this, но не понял, как его реализовать.

+0

Я попытался 'dbs.TableDefs (strTable) .Подайте = "Provider = Microsoft.ACE.OLEDB.12.0;" & "DATABASE =" & LnkDataBase & "; Jet OLEDB: Database Password = 123;" 'Но до сих пор не в состоянии чтобы он работал. Этот код дает ошибку. –

ответ

0

Вложив еще 4 часа до этой проблемы. Наконец нашел решение.

Это код, который работал безупречно.

Const LnkDataBase = "C:\MyDB_be.accdb" 
Const DBPassword = "123" 

Sub relinktables() 
'Routine to relink the tables automatically. Change the constant LnkDataBase to the desired one and run the sub 
Dim dbs As DAO.Database 
Dim tdf As DAO.TableDef 
Dim strTable As String 
Set dbs = CurrentDb() 
For Each tdf In dbs.TableDefs 
    If Len(tdf.Connect) > 1 Then 'Only relink linked tables 
     If tdf.Connect <> ";DATABASE=" & LnkDataBase Then 'only relink tables if the are not linked right 
      If Left(tdf.Connect, 4) <> "ODBC" Then 'Don't want to relink any ODBC tables 
       strTable = tdf.Name 
       dbs.TableDefs(strTable).Connect = "MS Access;PWD=" & DBPassword & ";DATABASE=" & LnkDataBase 
       dbs.TableDefs(strTable).RefreshLink 
      End If 
     End If 
    End If 
Next tdf 
End Sub 

Я бы рекомендовал экспертам VBA добавить комментарии или изменить этот код для добавления Error Debugging. Например: ПК с ПК не подключен к сети, а указанный путь находится в сети, затем Access зависает. Эта проблема еще не исправлена.

+0

Что такое код ошибки? ust добавить 'ON ERROR GOTO err_hndl' и разобраться с ним. В противном случае вы можете проверить подключение к сети, используя что-то вроде 'If (Len (Dir (« MappedDriveLetterHere: \ »))) Затем blnConnected = True' – JCro

+0

Нет ошибки. Время работы Access просто зависает. Ничего не происходит, и когда нажата кнопка «Закрыть», Access Stops работает и закрывается. –

1

Дайте этому попытку:

Const LnkDataBase = "C:\MyDB_be.accdb" 
Sub relinktables() 
'Routine to relink the tables automatically. Change the constant LnkDataBase to the desired one and run the sub 
Dim dbs As DAO.Database 
Dim tdf As DAO.TableDef 
Dim strTable As String 
Set dbs = CurrentDb() 
For Each tdf In dbs.TableDefs 
    If Len(tdf.Connect) > 1 Then 'Only relink linked tables 
     If tdf.Connect <> ";DATABASE=" & LnkDataBase Then 'only relink tables if the are not linked right 
      If Left(tdf.Connect, 4) <> "ODBC" Then 'Don't want to relink any ODBC tables 
       strTable = tdf.Name 
       dbs.TableDefs(strTable).Connect = "Provider=Microsoft.ACE.OLEDB.12.0; " _ 
& "Data Source= " & LnkDataBase & ";" _ 
& "Jet OLEDB:Database Password=123;" 
       dbs.TableDefs(strTable).RefreshLink 
      End If 
     End If 
    End If 
Next tdf 
End Sub 
+0

будет работать с интерфейсом Access 2013, так что Microsoft.ACE.OLEDB.12.0 будет работать? Или я должен использовать Microsoft.ACE.OLEDB.15.0, если это логично. ? –

+0

12 будет работать, но также должно работать 15. Испытайте с 15, если это необходимо, используйте 15. – JCro

+0

Если местоположение файла недоступно (из-за того, что ПК не подключен к сети). Вышеупомянутый код вызывает сбой. Некоторое время ожидания до кода выше? –

Смежные вопросы