Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Помогите разобраться!!!!  [new]
velly
Member

Откуда:
Сообщений: 108
Есть базовый блок, поля которого заполняются и обновляются записями через курсор в тригере WHEN-LIST-CHANGE элемента LIST ITEM. В блок запрос выводит правильное количество записей, а при выходе из формы при commit_form в таблицу записываются записи в 2 раза больше. Как с этим бороться? Подскажите, пожалуйста
22 окт 07, 15:07    [4822909]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться!!!!  [new]
Roshal
Member

Откуда: Москва
Сообщений: 133
Сделать блок небазовым!
А лучше в триггере формы просто заполнять поля! И убрать insert into <table> из триггера!
22 окт 07, 15:24    [4823015]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться!!!!  [new]
velly
Member

Откуда:
Сообщений: 108
Дело в том, что insert into <table> у меня и нет. Я просто из курсора вывожу поля и заполняю поля блока.
А если я делаю блок небазовым, то тогда данные при commit_form не сохраняются.
22 окт 07, 15:41    [4823146]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться!!!!  [new]
FRM-42100
Member

Откуда: UA
Сообщений: 753
velly
Я просто из курсора вывожу поля и заполняю поля блока.
Не надо этого делать. Раз блок базовый, то через Set_Block_Property( ..., DEFAULT_WHERE, ... ) накладывайте нужное условие и Go_Block(...); Do_Key('Execute_Query');
22 окт 07, 15:52    [4823248]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться!!!!  [new]
velly
Member

Откуда:
Сообщений: 108
может быть я не так объяснила...
запрос в базовом блоке зависит от выбраного значения элемента List Item. Поэтому в тригере when-list-change я с помощью CURSOR выбираю записи. Привожу текст:

PROCEDURE VYBORKA IS
CURSOR CUR IS SELECT GTK_S05_V.K_S05,GTK_S05_V.CEH,SPER.KPER,SPER.NP, GTK_S05_V.NEKS,GTK_S05_V.KRU,GTK_S05_V.NPOG,GTK_S05_V.NRAZ,GTK_S05_V.PRIZ,GTK_S05_V.PR
FROM GTK_S05_V,SPER
WHERE GTK_S05_V.CEH=:BLOCK40.R_CEH and GTK_S05_V.kper=sper.kper
AND rtrim(SPER.NPER)=:BLOCK40.R_KPER
ORDER BY GTK_S05_V.NEKS;
BEGIN
GO_BLOCK('GTK_S03_V');
CLEAR_BLOCK(NO_VALIDATE);
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'BUSY');
----------------------------------------------
FOR REC IN CUR LOOP
:GTK_S03_V.K_S05 :=REC.K_S05;
:GTK_S03_V.CEH :=REC.CEH;
:GTK_S03_V.KPER :=REC.KPER;
:GTK_S03_V.NP :=REC.NP;
:GTK_S03_V.NEKS :=REC.NEKS;
:GTK_S03_V.KRU :=REC.KRU;
:GTK_S03_V.PRIZ :=REC.PRIZ;
:GTK_S03_V.NPOG :=REC.NPOG;
:GTK_S03_V.NRAZ :=REC.NRAZ;
:GTK_S03_V.PR :=REC.PR;
NEXT_RECORD;
END LOOP;
COMMIT;
-------------
FIRST_RECORD;
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
---------------------------------------
END;
22 окт 07, 16:20    [4823467]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться!!!!  [new]
FRM-42100
Member

Откуда: UA
Сообщений: 753
velly
PROCEDURE VYBORKA IS

Зачем это все? Почему не простое Set_Block_Property( 'GTK_S03_V', DEFAULT_WHERE, ... ); Go_Block('GTK_S03_V'); Do_Key('Execute_Query');
22 окт 07, 16:25    [4823508]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться!!!!  [new]
velly
Member

Откуда:
Сообщений: 108
дело в том, что я выбираю данные из двух таблиц. И в условии DEFAULT_WHERE я не могу просто написать столбец совершенно другой таблицы.
22 окт 07, 16:41    [4823640]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться!!!!  [new]
velly
Member

Откуда:
Сообщений: 108
я выбираю значение в LIST ITEM и в базовом столбце должны высветиться строки, удовлетворяющие этому значению, а также столбцу другой таблицы
22 окт 07, 17:08    [4823859]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться!!!!  [new]
FRM-42100
Member

Откуда: UA
Сообщений: 753
Думайте о блоке как о таблице базы данных. Присвоение значений это insert/update соответствующих записей в базе. Оно вам надо?.. Сомневаюсь. Особенно, по каждому клику на listitem-е. Вывод - дизайн кривейший по причине не понимания основ формсов. Срочно учить матчасть.
22 окт 07, 18:09    [4824257]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться!!!!  [new]
velly
Member

Откуда:
Сообщений: 108
Спасибо большое, что объясняете, но что-то я совершенно запуталась...Перевожу комплекс с Visual Fox Pro. И там организация форм такая - каждый раз при выборе значения List_Item обновляется grid, т.е. применимо к формсам - блок.
я пробовала сделать как вы указали с помощью set_block_property, но запрос вообще не срабатывает при выборе значений List_Item.
22 окт 07, 20:42    [4824714]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить