powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / АХТУНГ!!! Where [Поле] = Null
7 сообщений из 7, страница 1 из 1
АХТУНГ!!! Where [Поле] = Null
    #32531970
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В недрах унаследованного софта (Access 97) нашел такой кусочек кода:

Set rst = CurrentDb.OpenRecordset("Select * From [Таблица] Where [Поле] = Null")

И эта собака дикая - работает!!! Причем работает так, как (по всей видимости) задумывал неизвестный педераст - автор этой программы. Т.е. в полученном рекордсете содержаться записи, в которых [Поле] Is Null

Обнаружил при переходе на Access 2002, который интерпретируют "[Поле]=Null" правильно, т.е. False при любом значении (в том числе отсутствии значения) в Поле

Это глюк? Фича? Или это я америку открыл и на граблю наступил?

З.Ы. Почему нет блюющего смайлика?
...
Рейтинг: 0 / 0
АХТУНГ!!! Where [Поле] = Null
    #32531993
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторкоторый интерпретируют "[Поле]=Null" правильно, т.е. False

Не знаю как в Аксе, но, вообще-то он не в false преобразовывает, а в Null

Можно проверить

1. ([поле]=Null) = false
2. ([поле]=Null) is null

ЗЫ: проверил - 1 первый вариант не выдает полей, а 2 - выдает все :)
...
Рейтинг: 0 / 0
АХТУНГ!!! Where [Поле] = Null
    #32532016
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сори
Сравнение с Null'ом дает в итоге не False, конечно же, а Null
Суть от этого не меняется. Null в предложении Where записей выводить не должен.
Однако в 97-ом аксесе - сравнение с Null'ом (=Null) работает как проверка на Null (Is Null)

Хочу блюющий смайлик. Как представлю, сколько таких мест еще осталось...
...
Рейтинг: 0 / 0
АХТУНГ!!! Where [Поле] = Null
    #32532035
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ЛП

В MSSQL есть спец опция:
SET ANSI_NULLS ON|OFF

Вот она как раз такое и проделывает
Т.е. если ON, то сравнение с NULL допустимы, иначе чисто NULL будет возвращать :)

Может для 97 ANSI стандарт ближе?
...
Рейтинг: 0 / 0
АХТУНГ!!! Where [Поле] = Null
    #32532437
TriAxp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Q237992

SYMPTOMS
When using an SQL statement with a WHERE clause that contains a test for NULL using the = operator, records that match the query are not returned in the recordset.

These queries worked correctly with Jet 3.5 and returned the records as expected.
This behavior will only be exhibited on computers with MDAC 2.1 and later that have Jet 4.0 installed.

CAUSE
Jet 4.0 made some changes to the SQL syntax and is now more SQL ANSI 92 compliant than before. Especially SQL ANSI 92 NULL behavior was implemented. Also remember that the result of a Boolean expression can have three results - TRUE, FALSE and NULL (in some documents referred as UNKNOWN).

RESOLUTION
Use the IS keyword in queries that test for NULL. This change will not break on systems with Jet 3.5 as Jet 3.5 accepted both types of queries.

STATUS
This behavior is by design.
...
Рейтинг: 0 / 0
АХТУНГ!!! Where [Поле] = Null
    #32532483
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну вот, опять меня носом в хелп ткнули

Однако непонятен мне такой by disign
Откуда вообще взялось в 97-м аксесе сравнение с Null'ом через знак равенства? В целях совместимости со 2-м аксесом что-ли?
Кто-нибудь Access 2.0 помнит? Или 1.0? Может там не было слова Is, потому через "=" и сделали?
...
Рейтинг: 0 / 0
АХТУНГ!!! Where [Поле] = Null
    #32532499
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Я начинал на Аксессе Втором. Но сколько себя помню - всегда знал, что нельзя писать =Null. Впрочем, возможно, у меня это сидит в голове из хелпа про VBA, в котором это касалось ифов. А на селекты я распространил сам... ХЗ.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / АХТУНГ!!! Where [Поле] = Null
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]