Форум: "Базы";
Текущий архив: 2007.10.07;
Скачать: [xml.tar.bz2];
ВнизНе происходит 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.047 c