![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Исключить поле из update
Goffman © (2004-08-12 13:34:00)Уважаемые коллеги, подскажите как можно исключить поле из из update-запроса при редактировании DataSet
Дело в том, что текст SQL выглядит примерно так
select t.rowid, t.*, get_marsh_bevel(marsh_id) bevel_val
from marsh t
т.е. последнее поле я выбираю из другой таблицы при помощи ХП, хотелось бы и заполнять его при помощи ХП.
Использую Oracle, DOA
Goffman (2004-08-13 06:06:00) [1]
> если бы в OnApplyRecord он сам формировал запрос, все было
> бы ок
Да нет, не все )
В таблице около 80-ти полей, из-за одного поля писать такой огромный запрос...
Desdechado (2004-08-12 19:34:00) [2]2 Sergey13
я поэтому и говорил, что автор решил на автоматику положиться...
если бы в OnApplyRecord он сам формировал запрос, все было бы ок
Goffman (2004-08-12 17:19:00) [3]Все, вроде решил проблемку :)
Установил свойство FieldKind поля в fkInternalCalc,
В обработчике OnValidate вызываю ХП процедуру
Всем спасибо!
Sergey13 (2004-08-12 14:54:00) [4]2[6] Goffman (12.08.04 14:46)
Ну дык Post и перехватывай. И делай там что надо.
2[7] Наталия © (12.08.04 14:49)
Его ДОА сам генерит.
Goffman (2004-08-12 14:52:00) [5]
> [7] Наталия © (12.08.04 14:49)
см. [2] Goffman (12.08.04 14:11)
Наталия (2004-08-12 14:49:00) [6]А сам update-запрос из DataSet как выглядит?
Goffman (2004-08-12 14:46:00) [7]
> [3] DenK_vrtz © (12.08.04 14:19)
Это конечно решение, но мне просто неохота городить такой огород, если учесть что эта вьюха нигде не будет больше использоваться )
> ALL
Задумка такая, чтобы я смог редактировать поле, скажем, в DBGrid`e, a в обработчике OnApplyRecord вызвать для сохранения этого поля ХП.
Наталия (2004-08-12 14:28:00) [8]А тогда зачем так:
with dsMarsh do
begin
Edit;
FieldByName('bevel_val').AsInteger:=1;
Post;
end;
Сам же говоришь "хотелось бы и заполнять его при помощи ХП".
Так и вызывай ХП, а не Edit;
FieldByName('bevel_val').AsInteger:=1;
Post;
Sergey13 (2004-08-12 14:25:00) [9][2] Goffman (12.08.04 14:11)
Да просто на поле в датасете ридонли в тру поставить.
И зачем, скажи, если тебе не надо редактировать это поле, ты делаешь
with dsMarsh do
begin
Edit;
FieldByName('bevel_val').AsInteger:=1;
Post;
end;
?
Не делай.
DenK_vrtz (2004-08-12 14:19:00) [10]>Вот я и не знаю, как сделать так...
написать вьюху и триггер к ней (это как вариант)
Goffman (2004-08-12 14:11:00) [11]
> так в чем сложность?
В том, что этого поля нет в таблице 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
Desdechado (2004-08-12 13:57:00) [12]так в чем сложность?
не можешь что ли перечислить нужные тебе поля? или решил на автоматику положиться?