Показать сообщение отдельно
  #21  
Старый 30.11.2010, 22:42
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Надо, надо. Давно бы перешел. Если не хочется все переделывать, то переходи на MS SQL Server (тот же ADO) или есть такая штука как MSDE (SQL Server с некоторыми ограничениями). только они все довольно тяжелые. так что я бы все-таки подумал в сторону FireBird.

Теперь по предыдущему вопросу.
Нам надо в итог вывести с плюсом все приходы (кстати, кроме списания у и отпуска/отгрузки у тебя еще должен быть обратный документ - возврат) и с минусов все расходы. я бы в тип документы добавил бы доп. поле, например, WH_MUL, куда бы для приходных на склад документов поставил бы 1, а для расходных -1. Для всех остальных 0.

Тогда:
Код:
SELECT 
  G.Name, SUM(T.WH_MUL * I.Quantity)
FROM 
  DocItems I LEFT JOIN 
  Docs D ON I.DocID = D.ID LEFT JOIN 
  DocTypes T ON D.TypeID = T.ID LEFT JOIN 
  Goods D ON I.GoodID = G.ID
GROUP BY
  G.NAME

DocTypes - таблица типов документов;
Docs - таблица документов;
DocItems - таблица позиций документов;
Goods - справочник товаров.

Да, если ты сдела инвентаризационный документ, то тогда можно суммировать не все, а только те документы, которые идут после этого документа. Тогда надо будет еще дописать условие, а в типах документов поставить для этого документа множитель 1 (приходный).

ЗЫ. И что за манера называть таблицы русскими буквами. Хочешь потом иметь кучу проблем?
Ответить с цитированием