Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Вниз

Oborotno-saldovaya vedemost   Найти похожие ветки 

 
spogi   (2006-03-08 20:27) [0]

Zdrasti..
Xocu sozdat ob.-saldovaya vedemost.
primerno:
01.01.01 | +15
05.01.01 | -7
08.01.01 | +22
11.01.01 | +17
22.01.01 | -11
31.01.01 | +28
--------------
 itogi:    | 64    (Eto ya delayu s pomoshyu Sum.QRExpr)

A vot kak polucit:

s 10.01.01 po 20.01.01

Do perioda | V period | V konec perioda
--------------------------------------
    30            +17             47

Pasibki...


 
paul_k ©   (2006-03-09 08:23) [1]

1. Заполнять временную таблицу
2. заполнять временное что угодно откуда есть желание и  возможность вывести в отчет.
без циклической обработки строк отчета тут не обойтись, насколько мне известно


 
spogi   (2006-03-10 03:30) [2]

Ya koe-cego ciklicheski perebirayu, no vot ne mogu poymat moment. Vot posle Filter, ta chast kotoraya ostaetsya <<Do perioda>> vivoju na otdelnuyu tablicu so skritom filtrom, napr. Ot ... do 10.01.01, dlya etogo skritoy tablici, sozdayu eshe odnu skrituyu QReport, qde v konce polucayu otvet 30 s pomoshyu QExpr, no kak etot 30 vzyat ottuda i vstavit na QReport polzovatelya i eto doljno bit do togo poka QReport2 ne oyavilsya na ekrane, to est BeforePreview...???
ili est druqie varianti resheniya???


 
paul_k ©   (2006-03-10 11:42) [3]

> ne mogu poymat moment.

момент чего?
считаем остаток на начало периода InSum и сохраняем его в InSumTmp
получаем запросом обороты по операциям в отчетном периоде в отсортированые по дате-времени операции  (OpDate,OpSum)
в цикле по запросу проделываем следующее
OutSumTmp=OpSum+InSumTmp
пишем во временное хранилище
OpDate,InSumTmp,OpSum,OutSumTmp
InSumTmp=OutSumTmp
к началу цикла
Отчет строим по временному хранилищу. Как его организовать в Парадоксе - второй вопрос


 
vovnuke ©   (2006-03-10 16:06) [4]

select :BEFORE_DATE, sum(SUMMMA), :BEFORE_DATE+sum(SUMMA)
from table
where (dt >= :DT1) and (dt <= :DT2)
При условии что поле dt обязятельное, и передаются обе границы


 
paul_k ©   (2006-03-10 16:13) [5]

и это работает? мдя... сумневаюсь что-то...
итог то нарастающий должен быть.
по каждой записи а не по всей сумме. Двойка вам


 
vovnuke ©   (2006-03-10 16:15) [6]

итог, должен быть, как я понимаю, один для всего периода. Или как?


 
paul_k ©   (2006-03-13 08:08) [7]

неверно.станлартная форма оборотки
входящий остаток на начало  X
дата вход сумма исход
d     x    s     x+s=y
dd    y    s1    x+s1=yy
.......................
итого      sum(s)
исходящий остаток за период YYYY
не видел пока чтоб оную в один запрос собирали, да ещё для парадокса


 
paul_k ©   (2006-03-13 08:08) [8]

неверно.станлартная форма оборотки
входящий остаток на начало  X
дата вход сумма исход
d     x    s     x+s=y
dd    y    s1    x+s1=yy
.......................
итого      sum(s)
исходящий остаток за период YYYY

не видел пока чтоб оную в один запрос собирали, да ещё для парадокса


 
msguns ©   (2006-03-13 09:42) [9]

Ответ в [3]. Все остальное - от лукавого.


 
paul_k ©   (2006-03-13 14:47) [10]

> [9] msguns ©   (13.03.06 09:42)
> Ответ в [3]. Все остальное - от лукавого.

ну почему от лукавого.. от трепа и т.д..


 
vovnuke ©   (2006-03-13 17:04) [11]

ну уж не от трепа, а в крайнем случае от не такого как вы понимания задачи,
Откуда взялась цифра 30 в вопросе, если алгоритм такой как вы написали?
И вообще что надо получить если будет в период входить несколько дат из базы?


 
msguns ©   (2006-03-13 17:08) [12]

>vovnuke ©   (13.03.06 17:04) [11]

Стандарт оборотной сальдовки таков:

Наименование товара  Остаток на начало  Приход  Расход  Остаток на конец

Движение дается суммарно.

То же, что подразумевает автор, называется накопительной ведомостью и имеет несколько другой вид. Что, очевидно, он не понимает


 
paul_k ©   (2006-03-14 08:42) [13]

> [11] vovnuke ©   (13.03.06 17:04)
> ну уж не от трепа, а в крайнем случае от не такого как вы
> понимания задачи,
> Откуда взялась цифра 30 в вопросе, если алгоритм такой как
> вы написали?


> s 10.01.01 po 20.01.01
>
> Do perioda | V period | V konec perioda
> --------------------------------------
>    30            +17             47

30 - входящий остаток (+15-17+22) - все что было ДО 10-го числа
с 10-го по 20-е одна операция, на +17 единиц учета, что и отражено в примере


 
Danilka ©   (2006-03-14 10:02) [14]

в local sql есть Case или нет? просто не помню. если есть, то, кажись, можно и одним запросом.
но с каждым месяцем формировацца будет медленнее и медленнее.
что-то типа:
select xxx,
 sum(case then move_date < :begin_date when amount else 0 end) begin_amount,
 sum(case then ((move_date between :begin_date and :end_date) and (amount>0)) when amount else 0 end) amount_plus,
 sum(case then ((move_date between :begin_date and :end_date) and (amount<0)) when -amount else 0 end) amount_minus,
 sum(amount) end_damount
from my_table
group by xxx


 
Danilka ©   (2006-03-14 10:16) [15]

гы. then / when местами перепутал :))


 
paul_k ©   (2006-03-14 10:26) [16]

> [14] Danilka ©   (14.03.06 10:02)

точно?? проверял? работает? нарастающий итог дает по входящим/исходящим остаткам?
не может быть...
по каждой записи должено идти изменение. то есть если бы автор взял период до 01/02/01 то должно было быть

> 01.01.01 | +15
> 05.01.01 | -7
> 08.01.01 | +22
> 11.01.01 | +17
> 22.01.01 | -11
> 31.01.01 | +28
> --------------
> itogi:    | 64    (Eto ya delayu s pomoshyu Sum.QRExpr)
>
>

> s 10.01.01 po 20.01.01
>
> Do perioda | V period | V konec perioda
> --------------------------------------
>    30            +17             47

    47            -11             36
    36            +28             64
----------------------------------------
и таки в один запрос? Разъясни как детальнее плиз


 
Danilka ©   (2006-03-14 10:32) [17]

[16] paul_k ©   (14.03.06 10:26)
ой, блин, я для оборотно-сальдовой ведомости, согласно теме, запрос написал.. :)
а у автора савсэм не она.


 
Danilka ©   (2006-03-14 10:39) [18]

а по теме тоже можно одним запросом, без всяких ХП и врем.переменных.
Но в орокле. :)
а как для парадокса расписано ишшо в [1].


 
paul_k ©   (2006-03-14 11:03) [19]

> [17] Danilka ©   (14.03.06 10:32)

так то что я привел в примере и есть оборотно-сальдовая:) или я опять что-то спутал?

а, кстати, в оракле как запрос выглядеть будет? любопытно, однако.. а то вдруг что-то подобное можно и не тока в оракле изобразить.


 
Danilka ©   (2006-03-14 12:36) [20]

[19] paul_k ©   (14.03.06 11:03)
> так то что я привел в примере и есть оборотно-сальдовая:)
> или я опять что-то спутал?

В каком примере? То, что просит автор, бухгалтера говорят, называецца "Журнал-ордер".


> а, кстати, в оракле как запрос выглядеть будет?

С помощью аналитических функций. Например, sum может выступать как аналитическая функция.
Самый простейший вариант:

CREATE TABLE test2
   (id  NUMBER(*,0),
   tn   VARCHAR2(100),
   s    NUMBER(15,2))
/
INSERT INTO test2
VALUES (1,"ttt",10)
/
INSERT INTO test2
VALUES (2,"ttr",12)
/
INSERT INTO test2
VALUES (3,"tr",5)
/
INSERT INTO test2
VALUES (4,"dd",8)
/

запрос, один из вариантов:
SELECT id, tn, s, sum(s) over(order by id) xxx FROM test2

возвращает:
ID TN S XXX
------------
1 ttt 10 10
2 ttr 12 22
3 tr 5 27
4 dd 8 35


 
paul_k ©   (2006-03-14 13:25) [21]

понял то есть сумма идет нарастающим итогом. Отлично
это понятно вполне. а вот чтоб в строке было

   SumIn                     |   OpSum          |    SumOut
__________________________________________________________________
<SumOut из предидущей строки> | <сумма операции> | <SumIn+OpSum>



от это не понятно, блин..


 
msguns ©   (2006-03-14 13:30) [22]

>Danilka ©   (14.03.06 12:36) [20]
>То, что просит автор, бухгалтера говорят, называецца "Журнал-ордер".

нет. Журнал ордер - это сводный документ. Он же просит во-первых, подробных, во-вторых, накопительный


 
Danilka ©   (2006-03-14 14:08) [23]

[21] paul_k ©   (14.03.06 13:25)
SELECT id, tn, sum(s) over(order by id)-s pref_xxx, s, sum(s) over(order by id) xxx FROM test2
:)

[22] msguns ©   (14.03.06 13:30)
Вобщем, да. Тогда как его обозвать? :)


 
msguns ©   (2006-03-14 14:38) [24]

Вообще-то это похоже на журнал регистрации документов, но лишь слегка. В бухгалтерии, насколько знаю, подобного "стандарта" нет. Есть складские документы (оборотная, сальдовая, накопительно-сальдовая, картотека с движением) и бухгалтерские (журналы, ордера, ведомости, шахматки). Но все это не то..
У него какой-то суррогат. Видимо, кто-то очень "вумный" заказал ему подобый шедевр, в котором "будет все"


 
программист   (2006-03-15 00:13) [25]

> [23] Danilka ©   (14.03.06 14:08)

И такое работает? мдя.. а не в оракле такой самолет не летает???? типа в микрософте, сайбейзе?


 
atruhin ©   (2006-03-15 05:55) [26]

>>Видимо, кто-то очень "вумный" заказал ему подобый шедевр, в котором "будет все"
А что Вам в этом шедевр не нравится? У  нас его называют документ движения товара. Т.е. в одном списке получаем остаток на начало периода, и список всех документов изменяющих остаток, на сколько изменился, какой стал. В системах ресторанского учета - один из самых часто используемых документов.


 
Danilka ©   (2006-03-15 09:46) [27]

[25] программист   (15.03.06 00:13)
Аналитические функции это чисто орокловая фича, а не стандарт sql, поэтому в других его нет.
По-крайней мере в микрософте точно нет, про сайбейс незнаю, не видел его.


 
msguns ©   (2006-03-15 09:56) [28]

>atruhin ©   (15.03.06 05:55) [26]

Сказать, для чего и кому нужна такая "убывающе-прибывающая" картина ?


 
atruhin ©   (2006-03-15 10:46) [29]

>>Сказать, для чего и кому нужна такая "убывающе-прибывающая" картина ?
Догадываюсь, что скажешь! :)
На самом деле в ресторанном учете не все так просто, там неизбежны постоянные пересортицы, ошибки ввода и т.д. Приходят документы, написано балык 10 кг, (копченый балык(деликатес), балык с.м. и т.д.) не понятно, начинают догонять, выяснять. В барах с винами та же пробемма снабженец ввел одно, в калькуляции поменяли название, бармен выбил другое по цене. Поэтому приходится поднимать движение товаров сверять, местами перепроводить :).


 
msguns ©   (2006-03-15 11:28) [30]

>atruhin ©   (15.03.06 10:46) [29]

Можно все, что ты сказал, выразить одним словом.



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

Форум: "Базы";
Текущий архив: 2006.05.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.01 c
15-1145073126
grisme
2006-04-15 07:52
2006.05.07
AC97


2-1144997274
Igorntk
2006-04-14 10:47
2006.05.07
Переход к незаполненному TEdit


6-1137685582
Ibrox
2006-01-19 18:46
2006.05.07
Трафик


15-1144955727
Yozh_Programmer
2006-04-13 23:15
2006.05.07
Проблема с телевизором Toshiba


1-1143486404
Shnaider
2006-03-27 23:06
2006.05.07
Загрузка dll вместе с windows





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский