Форум: "Базы";
Текущий архив: 2006.12.10;
Скачать: [xml.tar.bz2];
ВнизКак грамотно отменить изменения в конкретном поле в 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.066 c