MS Access: получить значение из строки - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь запустить этот код VBA после того, как пользователь введет данные в форму.Сценарий вычислит плату, которая равна до-после

. Я определяю имя текстового поля, значения которого я хочу использовать (например: before_1, after_1, charge_1) в качестве строки, а затем использую эти значения вCalCharge Sub.

Есть идеи, почему этот код не работает? Я считаю, что этот метод работает в C #, но не в VBA.

Private Sub before_1_AfterUpdate()
    before = "before_1"
    after = "after_1"
    charge = "charge_1"
    Call CalCharge(before, after, charge)
End Sub

Private Sub before_2_AfterUpdate()
    before = "before_2"
    after = "after_2"
    charge = "charge_2"
    Call CalCharge(before, after, charge)
End Sub



Sub CalCharge(before, after, charge)
    charge.Value = before.Value - after.Value
    Exit Sub
End Sub

1 Ответ

0 голосов
/ 13 ноября 2018

Независимо от того, что вы используете безразмерные переменные, я бы сказал, что проблема в том, что вы не ссылаетесь на элементы управления в CalCharge.

Попробуйте использовать это:

Private Sub before_1_AfterUpdate()
    Call CalCharge(1)
End Sub

Private Sub before_2_AfterUpdate()
    Call CalCharge(2)
End Sub

Private Sub CalCharge(ByVal index As Long)
    Me("charge_" & index).Value = Me("before_" & index).Value - Me("after_" & index).Value
End Sub

Я немного изменил структуру: CalCharge теперь ожидает числовой параметр, определяющий «набор» элементов управления, которые будут использоваться индексом.

Ваши процедуры событий before_1_AfterUpdate() и before_2_AfterUpdate() сейчаспросто вызовите эту новую CalCharge процедуру, указав индекс.

CalCharge теперь ссылается на элементы управления, сначала создавая имена элементов управления.

Me - это ссылка на текущий экземпляр объекта,Ваша форма, где текущий код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...