Возникла неожиданно проблема обнуления даты. База - Firebird.
Есть структура
S string(8)
SG group,pre(),over(S)
d date
t time
end
При добавлении записи делаем d=0 и все ок. На update ругается и все тут.
На d=0 орет, MAVCLEAR не помогает.
А в IBExpert команда
UPDATE Table SET D=null
проходит на ура
UPDATE Table SET D=0 - отфутболивается
Андрей, что делать ? Как ему подсунуть этот NULL ?
Обнуление даты
Модератор: Andrew™
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion и MAV который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Re: Обнуление даты
Для этого поля в БД должен быть разрешён NULL и если в проге поле пустое, в БД пойдёт NULL
MAVTRACE пользуйся - там видно, при первом обращении к БД идёт проверка соответсвия структуры в БД и в программе, в частности атрибут NULL для полей, покажи лог где идёт
и вообще - как ты делаешь этот UPDATE в программе?
MAVTRACE пользуйся - там видно, при первом обращении к БД идёт проверка соответсвия структуры в БД и в программе, в частности атрибут NULL для полей, покажи лог где идёт
Код: Выделить всё
SELECT * FROM ТвояТаблица WHERE 0 = 1
Код: Выделить всё
rec LIKE(MAVTABLE)
MAVTABLE:Ref = 1
IF NOT MAVGET(MAVTABLE)
MAVCOPY(rec,MAVTABLE,SIZE(MMAVTABLE))
CLEAR(MAVTABLE:Date_DATE)
IF MAVUPDATE(MAVTABLE,rec)
MAVSHOWERROR
END
END
-
- Старожил
- Сообщения: 263
- Зарегистрирован: 11 Февраль 2009, 8:41
- Откуда: г. Анапа
- Поблагодарили: 3 раза
Re: Обнуление даты
Спасибо,Андрей.
Трэйс использую, помогает. Поля в БД и словаре NULL. Проверил - поставил в словаре TRUE и меня стали посылать при добавлении нулевых дат.
Пример оч пригодился. Непонятно, зачем делается вот это
MAVCOPY(rec,MAVTABLE,SIZE(MAVTABLE))
И еще. Если я хочу обнулить даты по условию, т.е. более чем у одной записи
Update Table set date= ... where id=1
Что здесь подставить ? Пробовал date =' & '''' & FORMAT(date_date,@d10-) & '''' и меня обругали за вот это ' . . '
Трэйс использую, помогает. Поля в БД и словаре NULL. Проверил - поставил в словаре TRUE и меня стали посылать при добавлении нулевых дат.
Пример оч пригодился. Непонятно, зачем делается вот это
MAVCOPY(rec,MAVTABLE,SIZE(MAVTABLE))
И еще. Если я хочу обнулить даты по условию, т.е. более чем у одной записи
Update Table set date= ... where id=1
Что здесь подставить ? Пробовал date =' & '''' & FORMAT(date_date,@d10-) & '''' и меня обругали за вот это ' . . '
Re: Обнуление даты
в rec структуру скопировали оригинал записиgromov писал(а):Спасибо,Андрей.
Трэйс использую, помогает. Поля в БД и словаре NULL. Проверил - поставил в словаре TRUE и меня стали посылать при добавлении нулевых дат.
Пример оч пригодился. Непонятно, зачем делается вот это
MAVCOPY(rec,MAVTABLE,SIZE(MAVTABLE))
оригинал изменили
и если у MAVUPDATE есть второй параметр - то генерится UPDATE с SET не по всем полям, а только по изменённым
gromov писал(а): И еще. Если я хочу обнулить даты по условию, т.е. более чем у одной записи
Update Table set date= ... where id=1
Что здесь подставить ? Пробовал date =' & '''' & FORMAT(date_date,@d10-) & '''' и меня обругали за вот это ' . . '
Код: Выделить всё
sql MAVexecute
sql.BindParameter(MAVTABLE:Id,1)
IF sql.Run('update ' & MAVTABLENAME(NAVTABLE) & ' set ' & sql.field(MAVTABLE:Date) & ' =null where ' & sql.field(MAVTABLE:ID) & '=?')
MAVSHOWERROR
END