Помогите с задачей!!!Срочно (складская БД и нужно подсчитать остаток)

zozo_give4
Дата: 20.09.2005 22:40:44
Здравствуйте!Очень срочно нужна помощь для завершения проекта!Есть складская БД и нужно подсчитать остаток по разным товарам за день по схеме:Остаток за предыдущий день+приход за текущий день-расход за текущий день!Пробовал использовать RunningSum но особого прогресса не вышло!Поэтому очень прошу помочь!Заранее благодарен!
аффтор
Дата: 20.09.2005 23:54:08
Лично тебе, со скидкой, 400$
AndrewNico
Дата: 21.09.2005 00:00:22
А какая помощь ожидается?

Я думаю, что надо начать с описания базы данных. И того, какое решение требуется.
Ukraina
Дата: 21.09.2005 00:01:07
Создаешь 3 соответствующих запроса, потом их объединяешь, потом проводишь вычисления... Не мудри...
Кстати что такое РаннингСум?

Но если сказать честно, то мне не нравиться получение данных из принципа "Остаток за предыдущий день", лучше подумать и сделать запрос "Остаток товара вообще минус сегодняшний день"...
Слишком много вычислений....в твоем варианте...
kotkov
Дата: 21.09.2005 00:45:35
С проектом у вас что то не так сделано как надо.Очень просто ето можно задать на SQL-е-задать вычисление столбцов.Купи хорошею книгу-например "все об Акцессе"(1200страниц) дерзай.Я от нее учился.Прекрасная штука.
Rupali
Дата: 21.09.2005 08:46:48
чтобы суммировались пустые поля, рекомендую val(format(...))
создать [запрос1]:
select товар.tov,val(format(сальдо.kol))+val(format(приход.kol))-val(format(расход.kol)) as остаток_пред_день,0 as приход_день,0 as расход_день,
FROM ((товар LEFT JOIN сальдо ON товар.tov= остатки.tov) LEFT JOIN приход ON товар.tov= приход.tov) LEFT JOIN расход ON товар.tov= расход.tov
where сальдо.data=#01/09/05# and приход.data between = #01/09/05# and #30/09/05# and расход.data between = #01/09/05# and #29/09/05#

union

select товар.tov,0,kol,0 from товар LEFT JOIN приход ON товар.tov= приход.tov
where data between = #30/09/05#

union

select товар.tov,0,kol,0 from товар LEFT JOIN расход ON товар.tov= расход.tov
where data between = #30/09/05# ;

итоговый запрос :
select tov,sum(остаток_пред_день) as остаток_пред_день, sum(приход_день) as приход_день, as sum(расход_день) as приход_день,
sum(остаток_пред_день+приход_день-расход_день) as остаток
from [запрос1]
group by tov


рекомендую сохранять остатки на 1 день месяца в таблице [сальдо]
Rupali
Дата: 21.09.2005 08:48:20
здесь between лишне
select товар.tov,0,kol,0 from товар LEFT JOIN приход ON товар.tov= приход.tov
where data = #30/09/05#

union

select товар.tov,0,kol,0 from товар LEFT JOIN расход ON товар.tov= расход.tov
where data = #30/09/05# ;
Rupali
Дата: 21.09.2005 08:50:11
и еще поправка kol в последний столбец

select товар.tov,0,0,kol from товар LEFT JOIN расход ON товар.tov= расход.tov
where data = #30/09/05#
Iskander68
Дата: 21.09.2005 15:17:46

Стандартный выход в таких случаях - функция NZ().

--
Regards
Alexander Artamonov


"Rupali" <nospam@sql.ru> сообщил/сообщила в новостях следующее:
news:1898431@sql.ru...

к.г./а.м.

в чем вопрос?
Тема Ответить

Posted via ActualForum NNTP Server 1.3

Rupali
Дата: 22.09.2005 06:52:13
спасибо за nz!