Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.01.2012, 18:14
Dieria Dieria вне форума
Прохожий
 
Регистрация: 26.01.2012
Сообщения: 4
Репутация: 10
По умолчанию Формирование отчета остатка (Delphi XE2)


1. id (Счетчик)
2. ENTRYCODE (Текстовый) – Номенклатурный номер материала
3. Name (Текстовый) – Название материала
4. Measure (Текстовый) – Единица измерения материала.
5. Width (Текстовый) - Размер материала
6. Sort (Текстовый) – Сорт материала
7. Price (Числовой) - Цена материала

1. id (Счетчик)
2. Document (Текстовый) – Название документа
3. Date (Дата/время) – Дата введения записи об отпуске/поступлении материала на склад.
4. Good (Числовой) – ID материала который присваивается из таблицы goods.
5. Count (Числовой) - Количество поступившего/отпущенного материала
6. MovingType (Текстовый) – Определяет поступление (+) или отпуск (-) материала
7. Debet (Текстовый) - Содержит значения «Дебет» который вводится кладовщиком
8. Credit (Текстовый) – Содержит значения «Кредит» которые вводятся кладовщиком

Нужно рассчитать остаток материала в любой момент и вывести отчет (отчет буду выводить с помощью FastReport)
Подскажите как реализовать расчет остатка (работаю в Delphi XE2) Нужно создавать дополнительную таблицу? Ниже привел примерную форму отчета.
Ответить с цитированием
  #2  
Старый 26.01.2012, 19:37
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

Все довольно просто (по крайней мере в субд Oracle) в общем как-то так:
vGoods - твоя таблица goods
vGoodMoving - твоя таблица GoodMoving
date1 - твое поле date (в оракле нельзя создать поля с именем date)
Код:
SELECT m.*,
       g.enterycode AS Номенклатурный_номер,
       g.name || ' ' || g.Width || ' ' || g.sort
          AS Название_размер_сорт,
       g.price AS Цена,
       g.price * m.kol AS Количество
  FROM    (  SELECT m.good,
                    (NVL (SUM (CASE WHEN m.movingtype = '+' THEN m.COUNT END),
                          0)
                     - NVL (
                          SUM (CASE WHEN m.movingtype = '-' THEN m.COUNT END),
                          0))
                       AS kol
               FROM vGoodMoving m
              WHERE date1 BETWEEN SYSDATE - 50 AND SYSDATE + 50
           GROUP BY m.good) m
       LEFT JOIN
          vGoods g
       ON m.good = g.id;
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием
  #3  
Старый 26.01.2012, 19:48
Dieria Dieria вне форума
Прохожий
 
Регистрация: 26.01.2012
Сообщения: 4
Репутация: 10
По умолчанию

Ах, совсем забыл указать, что БД написана на Access
Ответить с цитированием
  #4  
Старый 26.01.2012, 21:16
Dieria Dieria вне форума
Прохожий
 
Регистрация: 26.01.2012
Сообщения: 4
Репутация: 10
По умолчанию

Можете написать запрос для Access, в SQL пока не очень...
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter