Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Исключить поле из 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]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо