Условные значения по умолчанию в MS Access - PullRequest
3 голосов
/ 29 июня 2011

Я использую MS Access 2007. У меня есть форма с несколькими полями телефонных номеров (сотовый, домашний, рабочий, основной *).Источник данных для всех этих полей взят из таблицы Customers.

По сути, я пытаюсь установить набор значений по умолчанию для основного поля *.Я хотел бы сделать что-то вроде этого:

If [cell] <> Null:
    primary* = [cell]

elif [cell] Is Null and [home] <> Null:
    primary* = [home]

elif [cell] Is Null and [home] is Null and [work] <> Null:
    primary* = [work]

Я знаю, что это не очень логичный код, но я надеюсь, что вы видите, что я пытаюсь сделать здесь.Я просто хочу, чтобы в основном * поле по умолчанию использовался номер ячейки, если она есть, затем домашний номер, если ячейки нет, и, наконец, рабочий номер, если он доступен только один.сделать это с помощью панели «Свойства» в Access?

Ответы [ 2 ]

1 голос
/ 29 июня 2011

Если вы не возражаете против того, что ваш элемент управления доступен только для чтения, вы можете просто использовать выражение в качестве исходного элемента управления. Примерно так:

=iif(IsNull(Cell);iif(IsNull(Home);Work;Home);Cell)

Если вы хотите, чтобы элемент управления был редактируемым, вам нужно динамически изменить источник элемента управления в коде события onActivate, я думаю (я не проверял это).

1 голос
/ 29 июня 2011

Свойство значения по умолчанию для элемента управления данными оценивается / применяется в момент начала новой записи.Вероятно, это происходит до того, как новая запись будет вставлена ​​в таблицу.Возможно, менее очевидно, что это происходит до того, как пользователь ввел любые данные в новую запись.Таким образом, даже если бы было возможно иметь значение по умолчанию, основанное на другом значении поля ... другие поля были бы нулевыми в этой точке, если только им также не было назначено значение по умолчанию.

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

Думаю, я мог бы вернуться к использованию событий после обновления на отдельных элементах управления номера телефона.Таким образом, для [ячейки] после обновления вы можете использовать:

If IsNull(Me.primary) Then
    Me.primary = Me.cell
End If

и аналогичные для остальных.

После того, как пользователь или код присвоили значение Me.primary, оно останется неизменным, если пользователь не изменит его.

...