Страница 1 из 1

SETNULL

Добавлено: 26 Май 2010, 0:05
samo_let
Добрый день!
Суть проблемы:
Имеем таблицу MyTable, содержащую поле MyData типа DateTime
В словаре поле описано типовым образом - строка, на которую через OVER наложена группа из полей типа DATE и TIME

В программе :
CLEAR(MyTable)
Mytable.Field1 = ..
...
Mytable.Fieldn = ..

(Полю MyData не присваиваем значение. В таблице на сервере для поля разрешен NULL)

Пытаемся добавить запись:
IF MAVINSERT(MyTable)
MAVSHOWERROR()
END
Получаем сообщение об ошибке - нельзя добавить значение 0 в поле типа DateTime.

Вопрос:
Имеется ли какая-либо возможность не делать перед insert / update проверку на ноль и принудительное присвоение SETNULL таким полям?
(вроде User Option в словаре или вроде того...)

Re: SETNULL

Добавлено: 26 Май 2010, 0:44
Admin
Если я правильно понимаю все должно работать.
Пробуй MAVCLEAR(MyTable)

Re: SETNULL

Добавлено: 26 Май 2010, 9:27
Andrew™
samo_let писал(а):Имеется ли какая-либо возможность не делать перед insert / update проверку на ноль и принудительное присвоение SETNULL таким полям?
(вроде User Option в словаре или вроде того...)
забудте про SENULL, это функция нужна только при работе FILE,DRIVER, в моей библиотеке при первом доступе к структурам их DCT делается проверка соответствия типов данных в DCT и в БД, а также - разрешён NULL или нет для поля

так вот, если для поля разрешён в БД NULL и в INSERT, UPDATE есть такие поля нулевые, то в БД идёт NULL

другое дело, если Вы хотите вместо NULL записать НОЛЬ, а в БД для поля NULL разрешён, для этого в DCT для поля в Field User Option прописываем

NOTNULL=TRUE