Страница 1 из 1
					
				Обнуление даты
				Добавлено: 05 Июль 2012, 19:32
				 gromov
				Возникла неожиданно проблема обнуления даты. База - 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 ?
			 
			
					
				Re: Обнуление даты
				Добавлено: 10 Июль 2012, 9:04
				 Andrew™
				Для этого поля в БД должен быть разрешён NULL и если в проге поле пустое, в БД пойдёт NULL
MAVTRACE пользуйся - там видно, при первом обращении к БД идёт проверка соответсвия структуры в БД и в программе, в частности атрибут NULL для полей, покажи лог где идёт 
и вообще - как ты делаешь этот UPDATE в программе?
Код: Выделить всё
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
 
			 
			
					
				Re: Обнуление даты
				Добавлено: 12 Июль 2012, 8:23
				 gromov
				Спасибо,Андрей.
Трэйс использую, помогает. Поля в БД и словаре NULL. Проверил - поставил в словаре TRUE и меня стали посылать при добавлении нулевых дат.
Пример оч пригодился. Непонятно, зачем делается вот это
MAVCOPY(rec,MAVTABLE,SIZE(MAVTABLE))
И еще. Если я хочу обнулить даты по условию, т.е. более чем у одной записи
Update Table set date= ... where id=1
  
Что здесь подставить ? Пробовал date =' & '''' & FORMAT(date_date,@d10-) & '''' и меня обругали за вот это '  .  .  '
			 
			
					
				Re: Обнуление даты
				Добавлено: 12 Июль 2012, 9:58
				 Andrew™
				gromov писал(а):Спасибо,Андрей.
Трэйс использую, помогает. Поля в БД и словаре NULL. Проверил - поставил в словаре TRUE и меня стали посылать при добавлении нулевых дат.
Пример оч пригодился. Непонятно, зачем делается вот это
MAVCOPY(rec,MAVTABLE,SIZE(MAVTABLE))
в rec структуру скопировали оригинал записи
оригинал изменили
и если у 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
 
			 
			
					
				Re: Обнуление даты
				Добавлено: 12 Июль 2012, 13:47
				 gromov
				Еще раз спасибо.
Ну вот, теперь видно, как этот NULL подсунуть 

))