Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / помогите разобраться в ошибке пожалуйста... / 3 сообщений из 3, страница 1 из 1
13.05.2003, 08:31
    #32158119
Inebs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться в ошибке пожалуйста...
Здравствуйте!
Решаю проблему, которая неоднократно поднималась в форуме - Программно обновить связи в Аксесе. Т.е. есть клиентское место и база с данными-таблицами. Надо при изменении положения базы с таблицами, соответсвенно обновить данные с клиентским местом.
Пишу функцию.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Private Sub Кнопка1_Click()
Dim strSearchPath As String
Dim strFileName As String

strFileName =  "C:\DBFile\Данные.mdb" 
Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table
Set cat = New ADOX.Catalog
cat.ActiveConnection =  "Provider=Microsoft.Jet.OLEDB.4 . 0 ;Data Source=C:\DBFile\Прилож.mdb"
For Each tbl In cat.Tables
If tbl.Type =  "LINK"  Then
tbl.Properties( "Jet OLEDB:Link Datasource" ) = strFileName
tbl.Properties( "Jet OLEDB:Create Link" ) = True
End If
Next
End Sub

На строку
tbl.Properties("Jet OLEDB:Create Link") = True
выдает ошибку в первом же проходе цикла
Run-time Error -2147217887(80040e21)
Multiple-Step OLEDB Operation generated errors. Check each OLEDB status value, if available. No work was done.
...
Рейтинг: 0 / 0
13.05.2003, 08:48
    #32158122
AlTis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться в ошибке пожалуйста...
Сталкивался с задачей програмного обновления связей.
Пришёл к выводу, что лучше всего:
а) Удалить все связанные таблицы из БД
б) Прилинковать таблицы из указанного .mdb файла
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Dim db As Database
Dim td As TableDef
Dim strSQL As String
Dim ws As Workspace
Dim strPath as String 'Путь к файлу БД


Set db = CurrentDb
For Each td In db.TableDefs
 If td.Connect <>  "" Then
   strSQL = " DROP TABLE [ " & td.Name & " ] "
   DoCmd.RunSQL strSQL
 End If
Next

Set ws = DBEngine.Workspaces(0 )

Set db = ws.OpenDatabase(strPath)

For Each td In db.TableDefs
    If Not td.Name Like "Msys* " Then
        DoCmd.TransferDatabase acLink, " Microsoft Access", strPath, acTable, td.Name, td.Name, False
    End If
Next td


При таком решении задачи повышается скорость выполнения операции корректировки связей.
...
Рейтинг: 0 / 0
13.05.2003, 09:09
    #32158129
Inebs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите разобраться в ошибке пожалуйста...
Большущее спасибо! Все работает!!!!!!
Я всегда знала, что есть на свете добрые люди!!!!!!
У меня все получилось!!!!!!
Спасибо! :-)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / помогите разобраться в ошибке пожалуйста... / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]