Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.05;
Скачать: CL | DM;

Вниз

Исключить поле из update   Найти похожие ветки 

 
Goffman   (2004-08-12 13:34) [0]

Уважаемые коллеги, подскажите как можно исключить поле из из update-запроса при редактировании DataSet
Дело в том, что текст SQL выглядит примерно так

select t.rowid, t.*, get_marsh_bevel(marsh_id) bevel_val
from marsh t


т.е. последнее поле я выбираю из другой таблицы при помощи ХП, хотелось бы и заполнять его при помощи ХП.

Использую Oracle, DOA


 
Desdechado ©   (2004-08-12 13:57) [1]

так в чем сложность?
не можешь что ли перечислить нужные тебе поля? или решил на автоматику положиться?


 
Goffman   (2004-08-12 14:11) [2]


> так в чем сложность?


В том, что этого поля нет в таблице marsh
поэтому, если я выполню что-нибудь вроде

with dsMarsh do
 begin
   Edit;
   FieldByName("bevel_val").AsInteger:=1;
   Post;
 end;


то на оракле выполнится запрос
update MARSH
set BEVEL_VAL = :v58
where rowid = :doa__rowid
returning rowid into :doa__rowid


и вылетит законная ошибка Invalid column name

Вот я и не знаю, как сделать так, чтобы это поле bevel_val не включалось в update


 
DenK_vrtz ©   (2004-08-12 14:19) [3]

>Вот я и не знаю, как сделать так...

написать вьюху и триггер к ней (это как вариант)


 
Sergey13 ©   (2004-08-12 14:25) [4]

[2] Goffman   (12.08.04 14:11)
Да просто на поле в датасете ридонли в тру поставить.
И зачем, скажи, если тебе не надо редактировать это поле, ты делаешь
with dsMarsh do
begin
  Edit;
  FieldByName("bevel_val").AsInteger:=1;
  Post;
end;
?
Не делай.


 
Наталия ©   (2004-08-12 14:28) [5]

А тогда зачем так:

with dsMarsh do
begin
  Edit;
  FieldByName("bevel_val").AsInteger:=1;
  Post;
end;
Сам же говоришь "хотелось бы и заполнять его при помощи ХП".
Так и вызывай ХП, а не  Edit;
  FieldByName("bevel_val").AsInteger:=1;
  Post;


 
Goffman   (2004-08-12 14:46) [6]


> [3] DenK_vrtz ©   (12.08.04 14:19)

Это конечно решение, но мне просто неохота городить такой огород, если учесть что эта вьюха нигде не будет больше использоваться )


> ALL


Задумка такая, чтобы я смог редактировать поле, скажем, в DBGrid`e, a в обработчике OnApplyRecord вызвать для сохранения этого поля ХП.


 
Наталия ©   (2004-08-12 14:49) [7]

А сам update-запрос из DataSet как выглядит?


 
Goffman   (2004-08-12 14:52) [8]


> [7] Наталия ©   (12.08.04 14:49)


см. [2] Goffman   (12.08.04 14:11)


 
Sergey13 ©   (2004-08-12 14:54) [9]

2[6] Goffman   (12.08.04 14:46)
Ну дык Post и перехватывай. И делай там что надо.

2[7] Наталия ©   (12.08.04 14:49)
Его ДОА сам генерит.


 
Goffman   (2004-08-12 17:19) [10]

Все, вроде решил проблемку :)

Установил свойство FieldKind поля в fkInternalCalc,
В обработчике OnValidate вызываю ХП процедуру

Всем спасибо!


 
Desdechado ©   (2004-08-12 19:34) [11]

2 Sergey13
я поэтому и говорил, что автор решил на автоматику положиться...
если бы в OnApplyRecord он сам формировал запрос, все было бы ок


 
Goffman ©   (2004-08-13 06:06) [12]


> если бы в OnApplyRecord он сам формировал запрос, все было
> бы ок


Да нет, не все )
В таблице около 80-ти полей, из-за одного поля писать такой огромный запрос...



Страницы: 1 вся ветка

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
1-1092667695
Yakudza
2004-08-16 18:48
2004.09.05
WndProc у TPageControl


8-1087893466
PenguinX
2004-06-22 12:37
2004.09.05
И ещё раз FastDIB :)


14-1092981324
vecna
2004-08-20 09:55
2004.09.05
Порадуемся за коллег из Мелкомягких


1-1092884302
FastByte
2004-08-19 06:58
2004.09.05
Картинки в Excel


4-1090517704
juiceman
2004-07-22 21:35
2004.09.05
программировать в Windows устройства