Access 2010 построитель выражений

Я хочу, чтобы текстовое поле содержало данные, которые являются вычислением, основанным на 2 других значениях контрольного поля - только если его значение равно нулю (т.е. текущее значение столбца в базе данных равно нулю).

Поэтому я ввел =([control1]*[Control2])/1000 в конструкторе выражений для свойства значения по умолчанию - однако результат всегда показывает, что текстовое поле пустое (даже если control2 и control2 содержат значения).

Как мне этого добиться? Может ли такая операция выполняться только в коде, т.е. в VB??

Спасибо,

Канзас

2 ответа

Решение

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

Если эта интерпретация верна, вы можете сделать это из события On Current формы.

If IsNull(Me.txtYourTextBox) Then
    Me.txtYourTextBox = (Nz(Me.control1) * Nz(Me.Control2)) / 1000
End If

Это загрузит вычисленное значение в текстовое поле, позволит пользователю изменить его значение при желании и сохранит значение в связанном поле при сохранении записи.

Если поле привязки не равно Null, его значение будет отображаться в текстовом поле без изменения с помощью кода On Current.

Это то, что вы хотите?

Для этого с помощью VBA добавьте событие Form_Load. (Откройте форму в представлении "Дизайн" и в свойствах формы, перейдите на вкладку "Событие", выберите "Процедура обработки события" для "При загрузке" и нажмите...) В этом примере для ссылки на данные таблицы используется [TextField].

Private Sub Form_Load()
  TextControl.SetFocus
  If IsNull([TextField]) Then
    TextControl.Text = ([Control1] * [Control2]) / 1000
  End If
End Sub
Другие вопросы по тегам