Главная страница
    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.066 c
2-1164262886
Marat
2006-11-23 09:21
2006.12.10
Показ связанных таблиц


1-1161943972
Alex_C
2006-10-27 14:12
2006.12.10
Как реализовать метод SelLength в своем мемо?


4-1154297383
Andrewk88
2006-07-31 02:09
2006.12.10
NetUserGetGroups


6-1152805949
Георгий А.
2006-07-13 19:52
2006.12.10
Как заставить перегрузиться сетевую карту


2-1164473612
maltsevaanna
2006-11-25 19:53
2006.12.10
Сохдание простого help





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский