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

Вниз

Не происходит RefreshRecord в Oracle   Найти похожие ветки 

 
Тфьу   (2007-05-31 13:40) [0]

Использую DOA
Мне надо обновить одно значение.
//qItems.FieldByName("normal_qty").AsInteger = 153
В TOracleDataSet на OnApplyRecord делаю:
 if Action="R" then
 begin
   qItemsRefresh.SetVariable("unit_id",qItems.GetVariable("session_id"));//unit_id поля нет в qItems
   qItems.DeclareQueryVariables(qItemsRefresh);
   qItems.SetQueryVariables(qItemsRefresh);
   qItemsRefresh.Execute;
//qItems.FieldByName("normal_qty").AsInteger = 153
//qItemsRefresh.FieldAsItneger("normal_qty") = 152
   qItems.GetQueryVariables(qItemsRefresh);
//qItems.FieldByName("normal_qty").AsInteger = 153
   Applied:=True;
 end;

В чем подстава? Почему не обновляется?


 
ANB ©   (2007-05-31 13:51) [1]


> В чем подстава? Почему не обновляется?

Не вижу рефрешрекорда. Насколько я помню, чтобы в DOA работал рефрешрекорд нужно явно затянуть в запросе rowid. И тогда нужно просто вызвать метод.
К чему этот код - непонятно.


 
Тфьу   (2007-05-31 14:05) [2]

Если в запросе агрегирующие функции или union, то Refresh по rowid не работает (RTFM Allroundautomations) приходится самому писать RefreshSQL и вот этим синтаксисом он должен из RefreshSQL подтягивать данные. Но не подтягивает. :(

Если тебе интересен именно рефрешрекорд то он вызывается просто из кода на:
qItems.RefreshRecord

Я привел тут только эвент OnApplyRecord


 
Sergey13 ©   (2007-05-31 14:09) [3]

> [2] Тфьу   (31.05.07 14:05)
> Если в запросе агрегирующие функции или union

Тогда что ты там меняешь?


 
Тфьу   (2007-05-31 14:20) [4]

У меня есть запрос вида:

select item_id, item_name, normal_qty
from
(
select item_id, sum(normal_qty) normal_qty
from norm_values
where unit_id = :unit_id
) v, dict_norm d
where d.item_id = v.item_id

мне надо normal_qty обновить для определенного item_id

Я пишу RefreshSQL:
select sum(normal_qty) normal_qty
from norm_values
where unit_id = :unit_id
 and item_id = :item_id


 
Sergey13 ©   (2007-05-31 14:36) [5]

> [4] Тфьу   (31.05.07 14:20)
> У меня есть запрос вида:

И он работает? Сомнительно мне что-то.


 
Тфьу   (2007-05-31 14:51) [6]

select d.item_id, d.item_name, v.normal_qty
from
(
select item_id, sum(normal_qty) normal_qty
from norm_values
where unit_id = :unit_id
) v, dict_norm d
where d.item_id = v.item_id

Вот так работает. Я просто не хочу тут приводить полный запрос на полторы страницы.

Народ, если вы не знаете, как делается RefreshRecord в DOA, а тем более сделанный через DeptAPI - не флудите тут.


 
Тфьу   (2007-05-31 15:05) [7]

Сам нашел в чем дело.
GetQueryVariables ,берет значения только из параметров. Поэтому пришлось делать практологически:

select sum(normal_qty) normal_qty
from norm_values
where unit_id = :unit_id
and item_id = :item_id
 and (1=1 or :normal_qty = :normal_qty)

А OnApplyRecord:

 qItemsRefresh.SetVariable("unit_id",qItems.GetVariable("session_id"));
  qItems.DeclareQueryVariables(qItemsRefresh);
  qItems.SetQueryVariables(qItemsRefresh);
  qItemsRefresh.Execute;
 qItemsRefresh.SetVariable("normal_qty",qItemsRefresh.FieldAsInteger("normal_qty" ));
  qItems.GetQueryVariables(qItemsRefresh);

Вот так все работает.



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
15-1189175757
Dr. Andrew
2007-09-07 18:35
2007.10.07
Как вставить формулу в текстовом виде в функцию?


15-1189203161
самовар
2007-09-08 02:12
2007.10.07
Агент для форума phpbb


15-1188302433
Внук
2007-08-28 16:00
2007.10.07
Съездили в Москву


1-1185338016
DmitriyZ
2007-07-25 08:33
2007.10.07
Как зарарить файл в программе ?


2-1189331798
zzz0001
2007-09-09 13:56
2007.10.07
В ЧЕМ ОШИБКА???