Указание значения NULL для параметров
Значение NULL показывает отсутствие значения в поле или присутствие неопределенного значения. Для числовых полей значение 0 и пустая строка " для строковых полей - это вполне определенные значения, отличные от NULL (значение неопределенное).
Часто при добавлении или корректировки записей (SQL-операторы INSERT, UPDATE) необходимо указать значение NULL для какого-либо параметра. Для этого следует выполнить метод Clear компонента ТРаrат:
procedure Clear;
Например,
пусть для корректировки записи в таблице RASHOD используется компонент TQuery с именем UpdateQuery, в свойстве SQL которого указан операторUPDATE RASHOD
SET DAT_RASH = :new_DAT_RASH,
KOLVO = :new_KOLVO,
TOVAR = :new_TOVAR,
POKUP = :new_POKUP
WHERE
(N_RASH = :old_N_RASH)
Пусть, в частности, значение параметра :new_POKUP (название покупателя) вводится пользователем в компонент TEdit с именем Pokup_Edit. Пусть на значение поля POKUP в таблице RASHOD наложено ограничение, согласно которому значение поля должно либо быть равным NULL, либо совпадать с одним из значений поля POKUP в таблице POKUPATELI.
Если пользователь ввел в поле ввода компонента Pokup_Edit пустую строку ("), присваивание
UpdateQuery.ParamByName('new_POKUP').Value := Pokup_Edit.Text;
и последующее выполнение метода UpdateQuery.ExecSQL приведет к ошибке, поскольку в таблице POKUPATELI нет записи со значением " в поле POKUP. Поэтому в случае, если в Pokup_Edit введена пустая строка, параметру :new_POKUP присваивается значение NULL:
IF Pokup_Edit.Text = '' THEN
ParamByName('new_POKUP').Clear
ELSE
ParamByName('new_POKUP').Value := Pokup_Edit.Text;