MS Access VBA, эффективный способ включить кнопку только после того, как все необходимые текстовые поля содержат действительные данные - PullRequest
0 голосов
/ 26 февраля 2019

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

У меня есть этот макет в форме:

Form Layout

В целях защиты от ошибок процесса создания записи мне бы хотелось, чтобы кнопка «Сохранить и очистить поля» была включена только после того, как текстовое поле / поле со списком «Комментарий» содержит некоторые действительные данные.

Текстовые / комбинированные поля называются txtBatteryID, cmbModelNumber, cmbChemistryType, txtSpecVoltage, txtSpecCapacity.

Мой код выглядит следующим образом

Private Sub EnableSaveBtnCheck()
'this checks if the required fields contains valid data, if so, enables the save button.
    If Me.btnSaveAndCLear.Enabled = False Then
        If IsNull(txtBatteryID) = False And IsNull(cmbModelNumber) = False And IsNull(cmbChemistryType) = False And IsNull(txtSpecVoltage) = False And IsNull(txtSpecCapacity) = False Then
            Me.btnSaveAndCLear.Enabled = True
        End If
    End If
End Sub

Как видите, я сделал самый простой способиспользования AND для объединения всех обязательных условий в выражении IF.Эта подпрограмма вызывается в событии After_Update () каждого текстового поля или поля со списком.Вот так:

Private Sub cmbChemistryType_AfterUpdate()
    Call EnableSaveBtnCheck
End Sub

В конце концов, мой вопрос: есть ли более эффективный способ установить условие «в каждом текстовом / комбинированном окне должно быть что-то допустимое»?И есть ли более сложный способ проверить, выполняется ли условие (что-то вроде события в самой форме)?

1 Ответ

0 голосов
/ 26 февраля 2019

Добавьте значения этих 5 полей.Если какой-либо из них равен нулю, сумма будет равна нулю.Так что вам нужно всего лишь позвонить IsNull() один раз.

If IsNull(txtBatteryID + cmbModelNumber + cmbChemistryType + txtSpecVoltage + txtSpecCapacity) = False Then
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...