Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.03 c
15-1164193806
Footballer
2006-11-22 14:10
2006.12.10
Интернет-карты


3-1159767855
Tab
2006-10-02 09:44
2006.12.10
Локальная база данных


2-1164380949
Ryder
2006-11-24 18:09
2006.12.10
Пара вопросов


2-1164115226
Mishenka
2006-11-21 16:20
2006.12.10
Как в Image загрузить PCX файл?


10-1126267280
Nick Denry
2005-09-09 16:01
2006.12.10
Microsoft Character Agent




   Наверх