Как я могу изменить представление подчиненной формы MS Access во время выполнения в коде VBA? - PullRequest
3 голосов
/ 25 марта 2009

Похоже, это было бы простым делом, и я уверен, что я делал это раньше, но прошло много времени с тех пор, как я занимался программированием интерфейса пользователя в Access. Что мне нужно сделать, это поместить кнопку в форму для переключения между таблицей данных и представлением формы для подчиненной формы.

Я нашел свойство defaultview, но ничто из того, что выглядит так, не переключало бы представление формы после того, как оно уже открыто.

По сути, мне нужно свойство, которое я могу заполнить следующим кодом ..

sfEmployeeBatchEntry.Form.??? = acFormDS

Ответы [ 3 ]

8 голосов
/ 25 марта 2009

Я нашел это самостоятельно. Мне не хватало его, потому что он использовал глупый и неуклюжий синтаксис RunCommand вместо простого свойства или метода в элементах управления или формах.

Это не красиво, но для потомков, вот ответ.

'You have to set focus to the subform control or the change view call will'
'fail (UGH!)'
MyForm.mySubFormControl.SetFocus

'Change to datasheet view...'
DoCmd.RunCommand acCmdSubformDatasheet

'Change to Form View...'
DoCmd.RunCommand acCmdSubformFormView
0 голосов
/ 05 июля 2018

Чтобы переключить представление подформы между Continuous и Datasheet, используйте этот код:

Private Sub cmdToggleView_Click()

    If Me.frmViewDetailedTransactionsSub.Form.CurrentView = 1 Then
        Me.frmViewDetailedTransactionsSub.SetFocus
        DoCmd.RunCommand acCmdSubformDatasheetView
        Exit Sub
    End If

    If Me.frmViewDetailedTransactionsSub.Form.CurrentView = 2 Then
        Me.frmViewDetailedTransactionsSub.SetFocus
        DoCmd.RunCommand acCmdSubformFormView
        Exit Sub
    End If

End Sub
0 голосов
/ 20 июля 2017

Я пробовал несколько разных решений, которые я нашел на разных сайтах. Некоторые казались излишне сложными. Я вычистил некоторые из беспорядка и обнаружил, что это лучше всего соответствует моим потребностям.

 Dim intView As Integer
 intView = Me.Form.CurrentView

 If intView = 1 Then

    DoCmd.RunCommand (acCmdSubformDatasheetView)
    Else


    DoCmd.RunCommand (acCmdSubformFormView)
    End If

Exit Sub
...