Как назначить нулевые значения в функции IIf в Access?

Я создаю вычисляемое поле (Field3) в запросе в MS Access. В этом примере Field2 содержит как числовые, так и символьные значения. Я хочу, чтобы Field3 содержал только числовые значения из Field2 и преобразовывал все символьные значения в значения Null, чтобы впоследствии я мог выполнять вычисления для Field3 как числового поля. Это в функции IIf, потому что я хочу, чтобы Field3 содержал только значения из Field2, если Field1 = "AA". Это то, что я пытался набрать в строке поля в представлении Query Design:

Field3: IIf([Field1]="AA",[Field2]*1,NULL)

Это работает за исключением случаев, когда Field2 является символьным значением, тогда Field3 читает "#Error" вместо того, чтобы быть пустым.

Каков правильный синтаксис для назначения значений NULL, если условие IIf не выполняется?

2 ответа

Решение

Если вы хотите, чтобы выражение вернулось [Field2]*1 только когда [Field1]="AA" и [Field2] содержит число, но в противном случае возвращает Null, используйте IsNumeric() в состоянии...

IIf([Field1]='AA' And IsNumeric([Field2]), [Field2]*1, Null)

Если цель [Field2]*1 это бросить [Field2] текстовое значение как число, вместо этого рассмотрим функцию Val()...

IIf([Field1]='AA' And IsNumeric([Field2]), Val([Field2]), Null)

Null правильный синтаксис

Но, по крайней мере, в старой версии German Access, которая у меня есть на этом компьютере, мне нужно использовать точки с запятой вместо запятых в Query Design View.

Так ты можешь попробовать это?

Field3: IIf([Field1]="AA";[Field2]*1;NULL)

В SQL View синтаксис такой же, как в вашем вопросе:

SELECT IIf([Field1]="aa",[Field2]*1,Null) AS Field3
FROM TestTable;
Другие вопросы по тегам