Значение по умолчанию для MS Access - PullRequest
0 голосов
/ 07 июля 2010

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

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

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

Ответы [ 3 ]

2 голосов
/ 07 июля 2010

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

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

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

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

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

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

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

2 голосов
/ 07 июля 2010

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

If [Field] = "" Or IsNull([Field])
0 голосов
/ 07 сентября 2010

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

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

Потому что:

If [Field] = ""

в:

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

Все равно выдаст нулевую ошибку!

...