Я столкнулся с проблемой, пытаясь установить источник записей в нескольких формах, хранящихся в базе данных библиотеки. Эти формы предназначены для общего использования c, в то время как данные для доступа хранятся в (связанных) таблицах в самом приложении.
Например, форма "frm_settings" (в библиотеке accde) (частичный код)
Private Sub Form_Open(Cancel As Integer)
Dim strSQL As String
Dim strTblName As String
Me.InsideWidth = Cm2Twip(18)
Me.InsideHeight = Cm2Twip(17.2)
CenterForm Me.Name, False, False, False
strTblName = "USysAppSettings"
If not TableExists(strTblName) Then
MsgBox "The required table " & strTblName & " is not found or not available.", _
vbCritical + vbOKOnly, "Missing or blocked table"
DoCmd.Close acForm, Me.Name, acSaveNo
End If
strSQL = "SELECT * FROM USysAppSettings;"
Me.RecordSource = strSQL
End
Согласно [этому сообщению] [1] мне нужно добавить предложение IN в строку источника записей:
Если форма ссылается на таблицы или запросы в приложении вам нужно установить источник записи формы в событии On Open. Вам также необходимо добавить предложение «IN C: \ Program Files \ MyDirectory \ MyApp.MDB» к любым запросам, ссылающимся на таблицы в ваших приложениях MDB.
Кто-нибудь сталкивался с этим? Означает ли это, что формы в библиотеке БД могут работать только как несвязанные формы? Если это так, мне нужно создать различные процедуры для чтения, удаления и обновления таблиц с использованием DAO / ADO.
Art