Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.051 c
15-1163687787
Calibr
2006-11-16 17:36
2006.12.10
Физикам


6-1152988616
Kilima
2006-07-15 22:36
2006.12.10
idPop3, idSmtp, idMessage


2-1163934179
Lebedev
2006-11-19 14:02
2006.12.10
Ошибка «Данное имя устройства уже используется приложением в каче


2-1164095901
Сатир
2006-11-21 10:58
2006.12.10
Именованные массивы


2-1164103100
Андрей Сенченко
2006-11-21 12:58
2006.12.10
TResourceStream.CreateFromID () "из себя"





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский