2010-07-06 4 views
0

У меня есть текстовый столбец в одной из моих таблиц MS Access, который пуст по умолчанию при вставке новой записи. У меня проблема в том, что я не могу проверить, пустое ли это поле с EITHER равно Null или равно "". Например, ни один из них «читает» поле как пустое:MS Access значение по умолчанию

If [Field] = "" Or [Field] = Null Then 

Я всегда использовал Access 2007 для разработки этой базы данных, и я недавно открыл ее с Access 2003, который, когда я думаю, что эта проблема начал. Это может быть причиной? Если это так, просто откроется и сохранит его снова с помощью Access 2007?

ответ

2

Когда вы сравниваете значение null, вам нужно использовать функцию IsNull. С традиционной логикой ANSI SQL Null <> Null, поэтому вам нужна специальная функция для проверки нулевого значения.

If [Field] = "" Or IsNull([Field]) 
+0

спасибо! –

+0

Может быть удобно сказать 'If Trim ([field] & vbNullstring) = vbNullString' – Fionnuala

2

Во-первых, я хотел бы предложить вам сделать одну из двух вещей:

  1. установить свои поля, чтобы запретить строки нулевой длины. Таким образом, вам придется тестировать только Null.

  2. Если вы считаете, что вы должны разрешить хранение ZLS, установите значение по умолчанию для ZLS. Однако по-прежнему возможно, что поле закончится нулевым, так что это может быть или не быть полезным.

Я не вижу хранения ZLS как имеющего какую-либо полезность вообще. Это почти всегда ярлык для размещения данных, добавляемых из источников, которые возвращают ZLS вместо Nulls для пустых полей.

Вы также должны прочитать о Nulls. Аллен Браун имеет ряд страниц, которые объясняют все это очень хорошо:

аспекты работы с Nulls в VBA код:

Статьи ориентированы на Access, но могут быть полезными для тех, кто использует любую базу данных, особенно относительных новичков, из-за диалогового стиля написания.

-1

Вы должны попробовать:

If Nz([Field], "") = "" Then 

Потому что:

If [Field] = "" 

в:

If [Field] = "" Or IsNull([Field]) 

бы еще бросить Null Ошибка!

+0

Просто не верно.Null = "" возвращает Null, который не является истинным, и правильно оценивает в булевом тесте, который, когда поле Null evalutes равно If Null или True Then. Поскольку (Null or True) имеет значение True, здесь нет никаких проблем. -1 для тестирования перед публикацией. –

Смежные вопросы