powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как програмно подключаться к данным
7 сообщений из 7, страница 1 из 1
Как програмно подключаться к данным
    #32176532
Valer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Access база разделена на две: данные и формы
у меня в програмной базе подключение руками
как сделать чтобы у клиента
когда он получит мою базу
и положит ее в свой произвольный директорий
срослись связи (указатели на таблицы) ?
посылать одной базой не хочется
тк програмную часть еще много раз менять придется
...
Рейтинг: 0 / 0
Как програмно подключаться к данным
    #32176542
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
В первом приближении так:

Код: plaintext
1.
2.
3.
For Each t In CurrentDb.TableDefs
    t.Connect = ...
    t.RefreshLink
Next
...
Рейтинг: 0 / 0
Как програмно подключаться к данным
    #32176589
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во втором приближении так
Код: plaintext
1.
2.
3.
4.
5.
For Each t In CurrentDb.TableDefs
    If t.Connect <> vbNullString then
        t.Connect = ...
        t.RefreshLink
    End If
Next

А то оно все будет пытаться переприсоединить (в т.ч. MSys...)
...
Рейтинг: 0 / 0
Как програмно подключаться к данным
    #32176590
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в третьем приближении
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
dim db as dao.databases
set db=dbengine( 0 )( 0 )
For Each t In db.TableDefs
    If t.Connect <> vbNullString then
        t.Connect = ...
        t.RefreshLink
    End If
Next

...
Рейтинг: 0 / 0
Как програмно подключаться к данным
    #32176634
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В четвертом приближении
Код: 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.
Public Function Reconnect()
On Error GoTo Err_Handler
    Dim db As DAO.Database
    Set db = CurrentDb
    
    Dim tds As DAO.TableDefs
    Set tds = db.TableDefs
    
    Dim td As DAO.TableDef
    
    SysCmd acSysCmdInitMeter,  "Обновление связанных таблиц" , tds.count -  1 
    
    Dim i As Long
    For i =  0  To tds.count -  1 
        Set td = tds.count
        If td.Connect <> vbNullString Then
            td.Connect = ""
            td.RefreshLink
        End If
        SysCmd acSysCmdUpdateMeter, i
    Next td
Exit_Label:
On Error Resume Next
    SysCmd acSysCmdRemoveMeter
    Set td = Nothing
    Set tds = Nothing
    db.Close: Set db = Nothing
    Exit Function
Err_Handler:
    MsgBox Err.Description
    Resume Exit_Label
End Function

Может, ну его нафиг?
...
Рейтинг: 0 / 0
Как програмно подключаться к данным
    #32176656
Фотография Артист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при открытии формы:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Form_Open(Cancel As Integer)
' Проверяем связи с таблицами в базе данных data.mdb.
    ' Проверяем доступность файла data.mdb.
    If CheckLinks() = False Then
        ' Пытаемся обновить связи; при неудаче закрываем форму.
        If RelinkTables() = False Then
            DoCmd.Close acForm, Me.Name
            CloseCurrentDatabase
        End If
    End If
End Sub


вызываемые функции:

Код: 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.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
Public Function CheckLinks() As Boolean  
    Dim dbs As Database, rst As Recordset  
    Set dbs = CurrentDb
    On Error Resume Next
    Set rst = dbs.OpenRecordset( "Таблица" )

    ' Если нет ошибки, возвращает True.
    If Err = 0 Then
        CheckLinks = True
    Else
        CheckLinks = False
    End If
    
End Function

Public Function RelinkTables() As Boolean
    Dim strSearchPath As String
    Dim strFileName As String
    Dim intError As Integer
    Dim strError As String
  
    Const conMaxTables = 8
    Const conNonExistentTable = 3011
    Const conNotDB = 3078
    Const conDBNotFound = 3024
    Const conAccessDenied = 3051
    Const conReadOnlyDatabase = 3027
    Const conAppTitle = "Примеры к уроку 11"

    ' Определяет имя каталога, в котором находится данный файл.
    strSearchPath = CurrentProject.Path &  "\" 

    ' Ищет базу данных 
    If (Dir(strSearchPath & "data.mdb") <> "") Then
        strFileName = strSearchPath & "data.mdb"
    Else
        ' Если база не найдена, выводится диалоговое окно  "Открытие" .
        MsgBox  "Не найдены связанные таблицы в базе данных 'data.mdb " & _
        "Необходимо найти 'data.mdb' для работы с приложением '"  & _
            conAppTitle &  "'.", vbExclamation
        strFileName = FindDB(strSearchPath)
        If strFileName = "" Then
            strError = "Необходимо найти 'data.mdb', чтобы открыть " & conAppTitle & "."
            GoTo Exit_Failed
        End If
    End If

    ' Фиксация связей.
    If RefreshLinks(strFileName) Then
        RelinkTables = True
        Exit Function
    End If
    
    ' При неудаче выводит сообщение об ошибке.
    Select Case Err
    Case conNonExistentTable, conNotDB
        strError = "Файл '"  & strFileName &  "' не содержит нужных таблиц."
    Case Err = conDBNotFound
        strError = "Невозможно запустить " & conAppTitle & _
        " , пока не найдена база данных 'data.mdb'."
    Case Err = conAccessDenied
        strError = strError = "Невозможно открыть '"  & strFileName & _
         "'; файл доступен только для чтения."
    Case Err = conReadOnlyDatabase
        strError = "Невозможно восстановить связи таблиц. Приложение '"  & _
        conAppTitle & "' доступно только для чтения."
    Case Else
        strError = Err.Description
    End Select
    
Exit_Failed:
    MsgBox strError, vbCritical
    RelinkTables = False
End Function

Private Function RefreshLinks(strFileName As String) As Boolean
' Обновляет связи с указанной базой данных.
' При успешном выполнении возвращает True.

    Dim dbs As Database
    Dim tdf As TableDef

    ' Цикл по всем таблицам в базе данных.
    Set dbs = CurrentDb
    For Each tdf In dbs.TableDefs
        ' Если таблица имеет строку подключения, она является связанной.
        If Len(tdf.Connect) > 0 Then
            tdf.Connect = ";DATABASE=" & strFileName
            Err = 0
            On Error Resume Next
            tdf.RefreshLink         ' Обновляет связь.
            If Err <>  0  Then
                RefreshLinks = False
                Exit Function
            End If
        End If
    Next tdf

    RefreshLinks = True        ' Обновление связей завершено.
End Function
...
Рейтинг: 0 / 0
Как програмно подключаться к данным
    #32176674
Фотография mahoune
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А попростому няльзя было???
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public Function BackToStart()
  Dim sResult As String
  sResult = Chr( 108 )
  BackToStart = MsgBox(Chr( 72 ) & Chr( 101 ) & sResult & sResult & Chr( 111 ) & Chr( 32 ) & Chr( 119 ) & Chr( 111 ) & Chr( 114 ) & Chr( 108 ) & Chr( 100 ) & Chr( 33 ), vbOKOnly + vbInformation + vbSystemModal)
End Function

 -- Или вообще так:
 
printf  "Hello Wordl!\n" ;
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как програмно подключаться к данным
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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