Другие сведения, полезные при разработке запросов

а). Значения Null. Если поле таблицы или запроса (равно как и элемент управления формы) не содержит никакого значения, то оно считается неопределенным (Null). Такая ситуация возникает, когда в поля таблицы, не являющиеся обязательными для ввода, не вводят никакого значения. Кроме того, значения Null можно присваивать полям и напрямую. Для этого нужно удалить все символы из ячейки в режиме таблицы или задать значение Null при помощи оператора присваивания в запросах на обновление или в программах на языке Visual Basic. Например, [Клиенты].[Область]=Null. После такого присваивания поле Область текущей записи таблицы Клиенты будет иметь неопределенное значение, независимо от того, какое значение оно имело до этого. Не следует путать значение Null для текстового поля со значением пустая строка. Значение пустая строка ("" — две подряд идущие двойные кавычки) является определенным значением, в то время как Null — неопределенным. Значение Null такжеотличается от значения Empty, которое означает, что переменная типа Variant программного модуля не была инициализирована.

Для выборки из таблицы записей, определенное поле которой содержит значения Null, можно воспользоваться конструкцией Is Null. Например, если нужно выбрать из таблицы Заказы все заказы, которые еще не исполнены (у таких записей поле Дата-Исполнения имеет значение Null), необходимо поместить это поле в бланк запроса и установить для него условие отбора Is Null. Если поставить условие отбора в Is Not Null, то выбираться будут только те записи, в которых соответствующее поле содержит значение, отличное от Null. Возвращаясь к нашему примеру, скажем: в этом случае будут выбраны все выполненные заказы.

Для проверки на значения Null можно также использовать функцию Visual Basic ISNull (выражение). Выражение может быть либо числовым, либо текстовым (строковым), В частности, выражение может содержать имя поля таблицы или запроса. Функция возвращает значение Истина (True), если выражение принимает значение Null, и Ложь (Falsе) — в противоположном случае.

Значения Null могут существенным образом повлиять на результаты работы запроса. Как уже упоминалось, при обработке записей с использованием статистических функций SQL (Sum, Count и др.) Null -значения не учитываются. В большинстве случаев это не приводит к возникновению ошибок. Например, при суммировании значений полей при помощи функции Sum, игнорирование Null -значений просто равносильно замене их нулем, что обычно и требуется. Однако при подсчете количества записей функцией Count можно получить ошибочный результат. Кроме того, при вычислении выражений, содержащиххотя бы одно значение Null, будет возвращено значение Null для всего выражения. Например, необходимо выбрать информацию о заказах, включающую количество товаров, их цену и скидки, а затем добавить вычисляемое поле с информацией о полной стоимости (см. рис. 2.4). Если некоторые записи будут содержать в поле Скидка Discount) значения Null, то полная стоимость для этих записей тоже будет содержать значение Null. Избежать этого можно несколькими способами. Можно задать для поля Скидка таблицы Заказы в конструкторе таблиц значение по умолчанию, равное нулю. Тогда при добавлении новых записей в поле Скидка будет помещен 0, если не указано другое значение. Другим способом является использование функции Nz.

б). Функция Nz предназначена для преобразования значений Null в какие-либо определенные значения. Синтаксис Nz.

Nz(переменная[, значение]),

где:

· переменная — переменная типа Variant. В частности, может содержать имя поля таблицы или запроса, проверяемое на значение Null.

· значение — необязательный параметр. Задает значение, возвращаемое в случае, если переменная имеет значение Null. Если значение не указано, то возвращается либо 0, либо пустая строка — в зависимости от контекста.

в). Функция IIf имеет следующий синтаксис:

IIf(выражение, значение если_истина, значение_если_ ложь),

· выражение должно возвращать логическое значение Истина (True) или Ложь (False).

· значение_если_истина возвращается функцией в случае истинности выражения. Может быть любым выражением, в частности, может содержать другую функцию IIf.

· значение_если_ложь возвращается в случае, когда выражение принимает значение Ложь (False). Может быть любым выражением, в частности, может содержать другую функцию IIf.

Функцией IIf удобно пользоваться в определении вычисляемого поля запроса для построения сложных выражений.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: