Доступ к базе данных обновлений модальной формы, тогда вызов обновления формы не - PullRequest
0 голосов
/ 10 июля 2020

В Access форма заголовка требует связанного с ней адреса. Форма заголовка вызывает модальную форму адреса. При сохранении модальная форма адреса запишет идентификатор адреса в идентификатор адреса источника записи формы заголовка, а затем закроется. Возвращаясь к форме заголовка вызова, после запроса необходимо указать связанный идентификатор адреса, то есть ссылку FK. Я не получаю идентификатор адреса формы адреса, записанный в поле идентификатора адреса источника записи формы заголовка и, следовательно, не включаюсь в список для запроса. Значительная часть этого кода основана на нескольких вопросах SO. Форма заголовка вызывает функцию-оболочку для управления формой модального адреса:

Private Sub txtJob_AfterUpdate()
    
    gbolDropShipAddressCompleted = False
    
    'Use global variables for use in frmDropShipAddress SQL update statement
    gtxtCurrentJobNumber = Me.Job
    gtxtCurrentJobRelease = Me.REL
    gtxtCurrentJob = Me.txtJob
    
    'Call the wrapper function
    gbolDropShipAddressCompleted = fNewDropShipAddressCompletion()
        
    If gbolDropShipAddressCompleted = True Then
        'Me.Dirty = False
        Me.Requery
        With Me.RecordsetClone
            .FindFirst "[Job] = '" & gtxtCurrentJobNumber & "' And [REL] = '" & gtxtCurrentJobRelease & "'"
            If Not .NoMatch Then
                If Me.Dirty Then
                    Me.Dirty = False
                End If
            Me.Bookmark = .Bookmark
            End If
        End With
        'Reset all variables
        gbolDropShipAddressCompleted = False
        gtxtCurrentJobNumber = ""
        gtxtCurrentJobRelease = ""
        gtxtCurrentJob = ""
    End If

End Sub

Функция-оболочка:

Public Function fNewDropShipAddressCompletion() As Boolean

    'Manages call to frmDropShipAddress
    DoCmd.OpenForm "frmDropShipAddress", , , , , acDialog, "From frmPackingSlipHeader"
    fNewDropShipAddressCompletion = gbolfrmDropShipAddressTofrmPackingSlipHeader
    DoCmd.Close acForm, "frmDropShipAddress"

End Function

Два события модальной формы:

Private Sub btnSaveAddressInfo_Click()

    DoCmd.RefreshRecord
    'Update MAIN table with new address id using global variables
    CurrentDb.Execute " UPDATE [MAIN] " & _
        " SET intADDRESS_ID = " & Me.txtAddress_ID & _
        " WHERE JOB = '" & gtxtCurrentJobNumber & "'" & _
            " AND REL = '" & gtxtCurrentJobRelease & "'"
    gbolfrmDropShipAddressTofrmPackingSlipHeader = True
    Me.Visible = False

End Sub

Private Sub Form_Open(Cancel As Integer)

    gbolfrmDropShipAddressTofrmPackingSlipHeader = 0

    If Me.OpenArgs = "From frmPackingSlipHeader" Then
         DoCmd.GoToRecord , , acNewRec
    'Coded because TabCtlDatePicker opens all forms and openargs is NULL and causes all forms to be affected
    ElseIf IsNull(Me.OpenArgs) Then
        Exit Sub
'    Else
'        Me.PopUp = True
'        Me.Modal = True
'        Me.BorderStyle = 1
'        Me.NavigationButtons = False
'        Me.RecordSelectors = False
    End If
    
End Sub

enter image description here введите описание изображения здесь Интерфейс Access использует несколько элементов управления вкладками для выбора между множеством различных отчетов / дат и / или средств выбора данных, все отсортированные по страницам управления вкладками с помощью topi c. Бэкэнд - это сервер MS SQL через связанные таблицы. Адресную форму можно открыть для общего c просмотра или вызвать (модально). Кажется, я не могу получить правильный VBA, чтобы получить идентификатор адреса формы адреса, записанный в источник записи заголовка, и VBA, чтобы запросить заголовок и вернуться к правильной записи. Любая помощь будет оценена и TIA. Тим

...