Пустая строка в Fb

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
ndStar
Сообщения: 16
Зарегистрирован: 25 окт 2005, 17:53

Пустая строка в Fb

Сообщение ndStar » 25 окт 2005, 18:02

Задаю поле tt varchar(4) not null. Пытаюсь при вставке записи присвоить ему значение '' (пустая строка). Ругается что значение = null. Но позвольте, null и '' разные вещи! Причем при хитрой манипулции, когда вставляется какое-то значение, а потом оно стирается (:='') все проходит гладко. Что это, глюк FB? И что с этим делать?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 25 окт 2005, 18:16

КАК ты присваиваешь '' столбцу? Может, это используемые тобой компоненты придуряются, конвертируя '' в null....

ndStar
Сообщения: 16
Зарегистрирован: 25 окт 2005, 17:53

Пустая строка в Fb

Сообщение ndStar » 26 окт 2005, 09:51

AppendRecord([cnt,ss]) где ss=''. Что Используя TpFibDataSet, что IBTable. Результат один, в табличке появляется null. Если через DbExpert - тоже самое, задать ему пустую строку удается только сначала забив какое-нибудь значение, а потом его стереть.
IBTable проглатывает ситуацию
T.AppendRecord([1,'kyky']); T.Edit; Tss.value:=''; T.Post;
а TpFibDataSet упорно при Tss.value:='' выдает null

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 26 окт 2005, 11:27

про IBX я может быть еще бы поверил, а вот про FIBPlus - не верю. Смотри свойства столбца, может там что есть, что преобразует '' в null. Насчет ibexpert - естественно, если столбец не заполнял, то он считается null. когда написал и стер - уже не null. Может, у тебя какой defaul или триггер на это дело есть?

ndStar
Сообщения: 16
Зарегистрирован: 25 окт 2005, 17:53

Пустая строка в Fb

Сообщение ndStar » 26 окт 2005, 12:26

Можно не верить, но у меня написана простенькая программа

Тавлица создавалась BDExpertом
CREATE TABLE "Ad2Plo" (
"Ord" BIGINT NOT NULL,
"Ag" VARCHAR(4) NOT NULL);
Какие еще тут свойства могут быть и где их искать?
Может BDExpert какие-то свои ограничения накладывает?

Ad2Plo.AppendRecord([2,'1']); Проходит
Ad2Plo.AppendRecord([1,'']); Выдает ошибку, мол нельзя полю Ag присваивать NULL.

Никаких триггеров и умолчаний не стоит, все проще пареной репы.
Вот такие пироги, не знаю что с этим делать.

С уважением, Nd

@ndrey
Сообщения: 5
Зарегистрирован: 16 авг 2005, 12:59

Сообщение @ndrey » 26 окт 2005, 13:12

В свойствах датасета, в PrepareOptions поле psSetEmptyStrToNull попробуй поставить False

ndStar
Сообщения: 16
Зарегистрирован: 25 окт 2005, 17:53

Пустая строка в Fb

Сообщение ndStar » 26 окт 2005, 13:38

Спасибо ОГРОМНОЕ! Все получается!

Ответить