Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.10;
Скачать: CL | DM;

Вниз

Как грамотно отменить изменения в конкретном поле в TADOQuery?   Найти похожие ветки 

 
Opilki_Inside ©   (2006-10-04 12:03) [0]

Имеем следующий код:
var
 Q: TADOQuery
...
 q.Insert;
 q.FieldByName("code").AsString := "Тест";
 q.FieldByName("year").AsVariant := Null;
 q.FieldByName("year").Clear;
 q.Post;


Если в базе данных поле year определено скажем так:
year INT NOT NULL DEFAULT "2005"

То произойдет ошибка при посте, т.к. DataSet будет пытаться записать в поле year значение Null. Как очистить это поле и сделать так что бы DataSet понимал, что это поле не нужно передавать в запросе (т.к. оно будет формироваться в БД по умолчанию)?

Пробывал с OldValue NewValue - не помогло.

MS SQL Server 2005 EE
Delphi 2006


 
Stanislav ©   (2006-10-04 12:04) [1]

ничего не передавать :-)


 
clickmaker ©   (2006-10-04 12:05) [2]


> Opilki_Inside ©   (04.10.06 12:03)

ну так не включать его в insert


 
Opilki_Inside ©   (2006-10-04 12:07) [3]

Это я понимаю...
Ситуация немного сложнее - у меня есть один DataSet (в оперативной памяти), я пробегаюсь по нему (и соответственно по всем его полям) и записываю данные в другой DataSet, который подключен к базе.

Тогда задам вопрос по другому, как узнать что данное поле было изменено?


 
clickmaker ©   (2006-10-04 12:12) [4]


> как узнать что данное поле было изменено?

OldValue <> NewValue, но только ДО Post


 
Opilki_Inside ©   (2006-10-04 12:16) [5]

var  Q: TADOQuery
...  
 q.Insert;
 q.FieldByName("year").AsVariant := Null;
 if q.FieldByName("year").OldValue <> q.FieldByName("year").NewValue
  ShowMessage("Data was modified!");
 q.FieldByName("year").Clear;  q.Post;


В таком случае тоже произойдет исключение, и сообщение при этом не будет показано на экране... Я не могу отследить было оно изменено или нет, т.к. у него и OldValue и NewValue = Null


 
ANB ©   (2006-10-04 12:44) [6]


> Opilki_Inside ©   (04.10.06 12:16) [5]

см.

> clickmaker ©   (04.10.06 12:05) [2]

есть вариант №2 - считывать заранее дефолтные значения и ими оперировать, если в поле едет нулл, а оно нот нулловое.



Страницы: 1 вся ветка

Текущий архив: 2006.12.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
15-1163701134
Chort
2006-11-16 21:18
2006.12.10
День студента


15-1164115777
просто человек
2006-11-21 16:29
2006.12.10
преобразование из pascal в блок-схему


15-1164126797
Ламот
2006-11-21 19:33
2006.12.10
КПК + Приближающиеся морозы...


11-1139899673
BaryVetaL
2006-02-14 09:47
2006.12.10
Проект VCL2KOL


2-1164205377
Kolan
2006-11-22 17:22
2006.12.10
Как получить номер выделенной строки DBGrid?