Вместо использования msgBox я хочу создать My msgBox с помощью формы "frmMsg". Форма "frmMsg" имеет буксирное дно (Ok и No) и метку (lblMsg) для сообщения показа. Свойство "frmMsg": всплывающее окно = да, модальное = да.
Моя функция для открытой формы - MsgInfo:
Public Function MsgInfo(Optional msg As String = "Are You Ok?", _
Optional msgCaption As String = "Warning" ) As Boolean
MsgInfo = False
DoCmd.OpenForm "frmMsg"
Form_frmMsg.Caption = msgCaption ' Set Caption of Form
Form_frmMsg.lblMsg.Caption = msg ' Set Message of Form
MsgInfo = MsgInfoResult ' MsgInfoResult is Public Variable to store MsgInfo Result (Ok Bottom(True) or No Bottom(False) )
End Function
Я использовал это в другой форме, пример для удаления клиента в клиенте Список (Удалить снизу):
Private Sub btnDelete_Click()
DoCmd.SetWarnings False
If MsgInfo("Are You Sure Delete Customer?", , "Delete Customer!") = True Then
' Run SQL for Delete Customer
Dim sqlDelete As String
sqlDelete = "DELETE tblCustomer.*, tblCustomer.RowId " & _
"FROM tblCustomer " & _
"WHERE tblCustomer.RowId=[Forms]![frmCustomerList]![frmCustomerListSub]![RowId]"
DoCmd.RunSQL sqlDelete
Form_frmCustomerList.frmCustomerListSub.Requery
End If
DoCmd.SetWarnings True
End Sub
Моя проблема после открытия формы MsgInfo Перед тем, как пользователь ответит, выполняются команды Next (Sql).
Чтобы решить проблему, Я изменил AcWindowsMode в функции MsgInfo:
DoCmd.OpenForm "frmMsg"
на
DoCmd.OpenForm "frmMsg", , , , , acDialog
проблема решена, но возникла другая проблема. Следующие команды не выполняются:
Form_frmMsg.Caption = msgCaption ' Set Caption of Form
Form_frmMsg.lblMsg.Caption = msg ' Set Message of Form
MsgInfo = MsgInfoResult ' MsgInfoResult is Public Variable
, пожалуйста, помогите мне.