Вниз
Скачать: 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.026 c
11-1140316470
vvp
2006-02-19 05:34
2006.12.10
Как получить индексы выделенных элементов в ListBox е?


1-1161949357
Sania
2006-10-27 15:42
2006.12.10
Защита CD


2-1164378916
Pauchok++
2006-11-24 17:35
2006.12.10
Преобразование типов


2-1164131457
Фесс
2006-11-21 20:50
2006.12.10
Работа со списком


3-1160038014
Lex_!
2006-10-05 12:46
2006.12.10
Вычисляемые поля при динамическом формировании колумов




   Наверх