[ОТВЕТИТЬ]
Опции темы
16.09.2008 19:09  
fbdp
Долго ползали по темам и ковыряли запросы и вот до чего дошли :

Как получить остатки на дату –

begin
Supermag.Remains.Calс ('13/09/2008',FALSE,23, 0, FALSE);
End;

Далее во временно табличке SUPERMAG.TTREMAINS получаем все артикулы с остатками на конец 13/09/2008

Для производства

begin
Supermag.Remains.Calcprod ('13/09/2008',FALSE,23, 0, FALSE);
End;

Далее во временно табличке SUPERMAG.TTREMAINSPROD
получаем все артикулы с остатками на конец 13/09/2008


Время работы «SQL2.sql: Выполнение завершено успешно [1,020 c]»
 
17.09.2008 07:37  
kadr
Очень хорошо, надо бы в тему по функциям это закинуть
 
17.09.2008 07:42  
OlegON
сказал "спасибо", а другие параметры, кроме даты, разобрать не пытались?
 
17.09.2008 13:11  
fbdp
разбираемся, как только разберемся , выложу
 
17.09.2008 14:56  
Mihon
АААААААА от души! Просто необходимая вещь!
Только бы еще заработала эта штука........

Откуда запускать надо?
Я через DOA компонент запускаю этот скрипт - молчит...
Из-под supermag попробовал и из-под sys попробовал. тишина.
Табличку проверил-пусто
Не нужно, случайно, перед запуском пользователей выгонять или службы останавливать? commit в конце не нужно ставить? или вначале execute immediate ""?
 
17.09.2008 15:20  
kadr
Mihon почитай про временные таблицы Oracle. Необходимо выполнять скрипт и читать данные из временной таблицы в рамках одной сессии. Т.е. если ты делаешь через DOA компонент, то тебе сначала надо выполнить скрипт, а потом уже читать данные из таблицы при этом необходимо учитывать что и исполнение скрипта, и чтение данных должно происходить в рамках одного OracleSession и не отключаться между исполнением скрипта и чтением данных
Вроде есть понятие контекста сессии, и используя этот контекст можно читать данные из временной таблицы заполненной в другой сессии, но я про это мало знаю, в каком-то месте могу и ошибаться
 
17.09.2008 15:26  
Mihon
Хм... это остобенность табличек, начинающихся с ТТ (как я понял)
То есть я подключился, выполнил скрипт, logoff не делаю, в табличке данные будут. После logoff табличка очистится. ясно.
А в FFRemains никак перетащить нельзя, например? или сделать так, чтобы не очищалась?
(просто есть мысль одна... у нас много самописных отчетов и формочек к ним, было бы неплохо, чтобы в форме ввода параметров, когда пользун нажал кнопку "выполнить", прога запустила бы скрипт на выбранную дату, а потом сам отчет юзал бы заполнееную табличку. вот)
 
26.09.2008 21:58  
YuraZ
PROCEDURE CALC(I_DATE IN DATE, I_ISADDINGDATA IN BOOLEAN, I_DOCSTATEMODE IN NUMBER, I_CALCMODE IN NUMBER, I_ISALLREMAINS IN BOOLEAN)

I_DATE - ну тут понятно

I_ISADDINGDATA - будет ли расчет добавляться к уже существующему.
Иначе предварительно чистится таблица TTRemains.

I_DOCSTATEMODE:
0 - DocState = 0
2 - DocState = 2
23 - DocState >= 2

I_CALCMODE:
2 - считать остатки от текущих, т.е. как остатки из smgoods - приходы/расходы
с датой больше I_DATE
3 - считать остатки взяв за основу заранее расчитанные остатки в
административном модуле
иначе - считать остатки на основании документов

I_ISALLREMAINS - показывает все остатки, в том числе и нулевые.
Иначе только ненулевые

Вот вроде и все. Конечно, возможно, что внутри пакета в зависимости от этих параметров есть свои ньюансы, которые сложно узнать не видя исходников :)
 
"Спасибо" YuraZ от:
29.09.2008 10:04  
Mihon
У меня, как обычно, со скриптами проблема.
Запускаю в рамках одной сессии в DOA,
Код:
OracleScript1.Lines.Clear;
  OracleScript1.Lines.Append('BEGIN');
  OracleScript1.Lines.Append('  Supermag.Remains.Calс (''23/09/2008'',FALSE,23, 0, FALSE);');
  OracleScript1.Lines.Append('END; ');
  OracleScript1.Execute;
при выполнении пишет ошибку
Цитата:
ORA-06550: Строка 2, столбец 20:
PLS-00302: Компонента 'CALC' должна быть объявлена
Запускал из под sys и из под supermag'а - не видит он процедуру calc.
Как этот скрипт можно запустить в SQL Plus чтобы увидеть результаты?
1.024.6 SP5
 
29.09.2008 12:08  
YuraZ
Цитата:
Сообщение от Mihon
Запускал из под sys и из под supermag'а - не видит он процедуру calc.
Как этот скрипт можно запустить в SQL Plus чтобы увидеть результаты?
1.024.6 SP5
Заходишь в sql plus.
Пишешь:
execute supermag.remains.calc('10/01/2008', false, 23, 0, false);
select * from supermag.ttremains;
Все.
 
 


Опции темы



Часовой пояс GMT +3, время: 23:27.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.