[ОТВЕТИТЬ]
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 - показывает все остатки, в том числе и нулевые.
Иначе только ненулевые

Вот вроде и все. Конечно, возможно, что внутри пакета в зависимости от этих параметров есть свои ньюансы, которые сложно узнать не видя исходников :)
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;
Все.
29.09.2008 13:33
Mihon
 
Спасибо. в SQL Plus получилось.
В DOA никак не хочет... :(
Притом, на "calc" сейчас не ругается, просто молчит и все. LogOff не делаю.
Как будто игнорит...
29.09.2008 14:41
kadr
 
Я OracleScript не испоьзую, использую Query
30.09.2008 08:49
Mihon
 
Цитата:
kadr Я OracleScript не испоьзую, использую Query
Приведи, пожалуйста, пример использования этого скрипта в ADOQuery...
30.09.2008 10:59
kadr
 
ADO не использую, когда писал Query подразумевал TOracleQuery из DOA
30.09.2008 11:34
Mihon
 
Черт! буковки местами перепутал:)
DOA то есть...
TOracleQuery...
30.09.2008 15:55
kadr
 
Пример в приложении, для BDS2006 ну думаю разберёшься
Вложения
Тип файла: zip dd.zip (544.1 Кб, 180 просмотров)
01.10.2008 03:26
isi
 
Функция полезна, но в редких случаях. так как считает по всем артикулам по всем МХ, что в реальной практике используется редко, соответственно используем свой метод подсчета
01.10.2008 12:07
Mihon
 
Цитата:
kadr Пример в приложении, для BDS2006 ну думаю разберёшься
Нет, не разобрался. В архиве файл без расширения с именем "dd", внутри кракозябры.
01.10.2008 16:48
kadr
 
внутри вообще-то папка с именем dd


ПыСы, скачал - проверил, открывает нормально
01.10.2008 21:36
YuraZ
 
Цитата:
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;
при выполнении пишет ошибку

Запускал из под sys и из под supermag'а - не видит он процедуру calc.
Как этот скрипт можно запустить в SQL Plus чтобы увидеть результаты?
1.024.6 SP5
Мне даже стало интересно. Запустил у себя. Действительно выдает ошибку. Ковырял и так и эдак. Пришел к выводу, что необходимо в слове "Calc" последнюю РУССКУЮ букву "с" заменить на латинскую "c" :)
02.10.2008 10:50
Mihon
 
Цитата:
YuraZ Мне даже стало интересно. Запустил у себя. Действительно выдает ошибку. Ковырял и так и эдак. Пришел к выводу, что необходимо в слове "Calc" последнюю РУССКУЮ букву "с" заменить на латинскую "c" :)
Блин! Блин!
Вот до чего доводит нежелание печатать ручками, и обычный copy-paste...
12.02.2011 12:14
toffee
 
спасибо, очень помогло
12.02.2011 12:17
toffee
 
Цитата:
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]»

Вот, еще я такое нашла
supermag.FixRemIncome.Calc(to_date(’31.01.2011’, ‘dd.mm.yyyy’)); -- рез-т в ttremincome
описание см. для FFremincome
считает остатки по приходным накладным
Опции темы


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

 

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