powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как установить в базе Access 2000 связь со всеми таблицами с другой базой Access 2000 программно?
5 сообщений из 5, страница 1 из 1
Как установить в базе Access 2000 связь со всеми таблицами с другой базой Access 2000 программно?
    #32522950
Stenly Tvidl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Есть две базы Access 2000, первая с таблицами (около 100), вторая с формами. Надо при открытии базы с формами, чтобы устанавливались связь со всеми таблицами из другой базы. При разработки базы с формами, я это делаю через меню «Файл\Внешние данные\Связь с таблицами…», затем выбираю базу с таблицами, выделяю все таблицы и нажимаю «ОК». Но дело в том, что файл с формами и файл с таблицами может быть перемещен в другую папку, которая даже может находиться на другом компьютере. Как заставить Access при открытии формы, чтобы он пересвязал таблицы.
Спасибо.
...
Рейтинг: 0 / 0
Как установить в базе Access 2000 связь со всеми таблицами с другой базой Access 2000 программно?
    #32522967
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделано под Novell так что в длинах путей и константах разбирайся сам

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
Public Sub MyStart()
Dim MyDb As Database
Dim tdf As TableDef
Dim Str As Variant
Dim Inna As String
Dim test As Variant
Dim Name As String
Dim Out As String
Dim SourceName As String
Dim Connect As String
Dim strFileName As String
Dim tdfArray( 256 ,  4 ) As String
Dim Ct As Long
Dim II As Long
Dim Flagsearch As Variant
Dim Len_inna As Variant
Set MyDb = CurrentDb
II =  0 
'цикл по табличкам формирует массив длинной Ct содержащий Name,SourceTableName,Connect
For Each tdf In MyDb.TableDefs
     If Len(tdf.SourceTableName) > 1 Then
         Str = tdf.Connect
         Str = Right(Str, Len(Str) - 10)
On Error GoTo ErrorHandler
         Len_inna = Len(Dir(Str))
       
         If Len_inna < 5 Then
               Connect = tdf.Connect
               SourceName = tdf.SourceTableName
               Name = tdf.Name
               tdfArray(II, 0) = Name
               tdfArray(II, 1) = SourceName
               tdfArray(II, 2) = Connect
               II = II + 1
        End If
     End If
Next tdf
Ct = II
           Flagsearch = 0
           If Ct > 0 Then test = MsgBox("Не найдены присоединенные таблицы    Yes - игноре NO - переприсоединить Cansel - общий путь", vbYesNoCancel)
           If (test = 6) Then GoTo alless
           If (test = 2) Then Flagsearch = 1
For II = 0 To Ct - 1
               Name = tdfArray(II, 0)
               SourceName = tdfArray(II, 1)
               Connect = tdfArray(II, 2)
               If Flagsearch < 2 Then
                   If Flagsearch = 1 Then Flagsearch = 2
                   Out = "Было:" & "имя-->" & Name & "табличка---->" & SourceName & "путь к mdb -->" & Right(Connect, Len(Connect) - 10)
                   MsgBox (Out)
                   strFileName = OpenFile(".", "")
               End If
                    If (Len(strFileName) > 5) Then
                           Connect = strFileName
                           MyDb.TableDefs.Delete (Name) ' при удалении
                           Call MyAddtable(Name, SourceName, Connect)
                    End If
Next II
alless:
Out = Out
Exit Sub
ErrorHandler:   ' Обработчик ошибок.
Select Case Err.Number
Case 68 ' "Ошибка "путь не верен".
             Len_inna = 0
             Resume Next
End Select
Public Sub MyAddtable(Name As String, SourceName As String, Connect As String)
 Dim MyDb As Database
 Dim tdw As TableDef
  Set MyDb = CurrentDb
  Set tdw = MyDb.CreateTableDef(Name)
  tdw.Connect = ";DATABASE=" & Connect
  'tdw.Connect = Connect
  tdw.SourceTableName = SourceName
  MyDb.TableDefs.Append tdw
  Set MyDb = Nothing
End Sub

...
Рейтинг: 0 / 0
Как установить в базе Access 2000 связь со всеми таблицами с другой базой Access 2000 программно?
    #32523412
Stenly Tvidl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за пример, сейчас попробую.
...
Рейтинг: 0 / 0
Как установить в базе Access 2000 связь со всеми таблицами с другой базой Access 2000 программно?
    #32526965
Stenly Tvidl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Shuhard за помощь, очень помогло.

Могу порекомендовать книгу, где данная проблема подробно разобрана во 2-ой главе:
«Access 2002 Разработка корпоративных приложений» П.Литвин, К.Гетц, М.Гунделой.

P.S. И никому не советую читать книгу: «Access 2002 Библия пользователя» К.Праг, М.Ирвин.
...
Рейтинг: 0 / 0
Как установить в базе Access 2000 связь со всеми таблицами с другой базой Access 2000 программно?
    #32526979
Фотография Shuhard
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм ..проверил на себе самом - не работает
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как установить в базе Access 2000 связь со всеми таблицами с другой базой Access 2000 программно?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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