У меня есть функция, которая по существу копирует записи и вставляет их с новыми идентификаторами. Код работает и все копируется нормально.
SQL, который происходит, по существу:
INSERT INTO myTable (ID, field, select) VALUES ('newID','stuff','')
Обратите внимание, что последнее значение пустое, пустое, нулевое и так далее. Иногда в нем что-то есть, иногда нет.
У меня есть проверка этого значения в форме доступа, и она использует isNull или isEmpty, и оба они получаются ложными, только с записями, которые вставляются таким образом.
Так что же вставляется, если ничего не вставляется? он не нулевой и не пустой, и там ничего нет, поэтому я совершенно сбит с толку. Если я что-то введу и сотру, все будет хорошо.
2 ответа
Функция IsEmpty() обычно используется только для проверки того, не была ли инициализирована переменная типа variant.
Можно сказать, что поле базы данных пусто, но это не то же самое, что если бы оно было пустым.
Например, если у вас есть поле с именем «Пол», которое не было обязательным полем в новой записи, значение может быть нулевым, тогда, если пользователь ввел женский пол, очевидно, это будет содержать значение. Если бы они тогда удалили слово «женщина», то поле теперь было бы пустым (не пустым).
Наиболее полезная функция при работе с нулевыми значениями в Microsoft Access следующая:
Nz()
Эта функция имеет два аргумента, первый из которых — это переменная, которую вы хотите проверить, а второй — значение, которое вы хотите вернуть, если переменная имеет значение Null. Например, следующее вернет пустую строку:
Dim variantName As Variant
variantName = Null
Debug.Print Nz(variantName,"")
Также обратите внимание, что если вы попытаетесь соединить переменную, содержащую Null, со строкой, используя символ плюса (+), это приведет к Null, что, вероятно, и является причиной возникновения проблем.
Здесь также показаны результаты попытки ввести следующее в немедленное окно:
? len(null)
Null
? len(null + "abc")
Null
? len(null & "abc")
3
isEmpty()
должна возвращать false
для каждого поля, привязанного к любому столбцу записи. Если вы хотите проверить строку нулевой длины, сравните ее со строкой нулевой длины или проверьте длину строки. Возможно, вы захотите сначала обрезать пробелы с концов строки.
NULL
(за исключением искаженных границ страны Оракула и, возможно, нескольких других странных мест). isNull("")
вернет false
в Access.
Может быть \r или \n или любым другим непечатаемым символом, вы можете выбрать такую строку и преобразовать ее в varbinary, чтобы увидеть содержимое
Похожие вопросы
Новые вопросы
ms-access
Microsoft Access, также известный как Microsoft Office Access, является средством разработки приложений и баз данных от Microsoft. Он сочетает в себе Microsoft Jet / ACE Database Engine с графическим интерфейсом пользователя и инструментами разработки программного обеспечения. Другие механизмы базы данных, такие как SQL Server, также могут использоваться в качестве сервера базы данных для приложений Access.
myTable
?NULL
. Таким образом, Access (и SQL Server) совместимы с ANSI, хотя некоторые основные базы данных — нет (в первую очередь Oracle). Кроме того, некоторые люди считают, что «пустая строка» означает нечто отличное от обоих: строку, содержащую только один или несколько пробелов.