Расширение графика MS-Access с 1 значением суммарной суммы до 5 значений суммарной суммы, выбранных пользователем - PullRequest
1 голос
/ 13 апреля 2020

У меня есть рабочая форма, которая создает отчет графика доступа на основе значения, выбранного пользователем в форме доступа. SQL для создания данных графика:

SELECT AccountBalances.RecDate, 
       Sum(AccountBalances.[End Balance]) AS [SumOfEnd Balance], 
       CombinedFSLineItems.[CFS LineDescription]    
FROM (CombinedFSLineItems 
INNER JOIN AccountNumbers  
     ON CombinedFSLineItems.[CFS LineItem] = AccountNumbers.[CFS LineItem]) 
INNER JOIN AccountBalances 
     ON AccountNumbers.[Account#] = AccountBalances.[Account#]
GROUP BY AccountBalances.RecDate, 
         CombinedFSLineItems.[CFS LineDescription], 
         AccountBalances.StoreID, CombinedFSLineItems.[CFS LineItem]
HAVING (((AccountBalances.RecDate) >= [TempVars]![varStartDate] 
  AND (AccountBalances.RecDate) <= [TempVars]![varDate]) 
  AND ((AccountBalances.StoreID) = [TempVars]![varStoreID]) 
  AND ((CombinedFSLineItems.[CFS LineItem]) = [TempVars]![varCFSLineItem]));

Небольшой фон помог бы здесь. В запросе используются 3 таблицы

  1. CombinedFSLineItems : таблица определения отчета, которая определяет элементы строки финансового отчета. Соответствующими полями для этого обсуждения являются [CFS LineItem] и [CFS LineDescription].

  2. AccountNumbers : таблица, в которой перечислены все номера счетов и атрибуты, например, какой CFS Report LineItem отчета он является частью и с каким магазином он связан. Соответствующие поля для этого обсуждения: [StoreID], [CFS LineItem] и [Account#].

  3. AccountBalances : таблица, содержащая ежемесячные данные для каждой учетной записи для каждого хранить. Соответствующие поля для этого обсуждения: [StoreID], [Account#] и [End Balance].

Пользователь выбирает хранилище и CFS LineItem будет отображаться в форме, которая устанавливает TempVars: [varStoreID] и [varCFSLineItem]. Запрос является источником данных графического отчета. Он суммирует все счета, которые составляют эту позицию CFS для этого магазина, а затем на графике представлены данные за месяцы, доступные в данных.

Теперь я бы хотел, чтобы пользователь мог выбрать до 5 строк. Предметы и создайте график всех 5. Будем признательны за любые идеи о том, как лучше всего это сделать.

Спасибо! Майк

РЕДАКТИРОВАТЬ 4/13/20 1:30 вечера


Пример данных ...

  1. Комбинированные FSLineItems Tbl

    CFS, LineItemCFS, Line, Description  
    1, Actual Cash  
    2, Contracts in Transit         
    7, Customer COD  
    19, Fixed Assets  
    …  
    
  2. AccountNumbers Tbl

    StoreID, Account#, CFS LineItem  
    1, 101, 1  
    1, 102, 1 
    1, 103, 1  
    1, 104, 2  
    1, 105, 2  
    1, 106, 19  
    1, 107, 19  
    1, 108, 19  
    2, 101, 7  
    2, 102, 1  
    2, 106, 1  
    
  3. AccountBalances Tbl

    Account#, StoreID, End Balance, RecDate  
    101, 1, 10,000.00, 1/1/2020  
    101, 1, 15,000.00, 2/1/2020    
    101, 1, 5,000.00, 12/1/2019  
    102, 1, 1,000.00, 1/1/2020  
    102, 1, 500.00, 2/1/2020  
    102, 1, 1,000.00, 12/1/2019  
    104, 1, 2,500.00, 1/1/2020  
    104, 1, 3,000.00, 2/1/2020  
    104, 1, 1,500.00, 12/1/2019  
    105, 1, 1,000.00, 1/1/2020  
    105, 1, 1,500.00, 2/1/2020  
    105, 1, 1,000.00, 12/1/2019  
    104, 2, 3,000.00, 1/1/2020  
    104, 2, 4,000.00, 12/1/2019  
    104, 2, 5,000.00, 2/1/2020  
    105, 2, 1,500.00, 1/1/2020  
    
    ***
    

Используя приведенные выше примеры данных, если бы пользователь выбрал магазин 1 и CFS LineItem 1 и CFS LineItem 2, я бы хотел получить график с двумя строками:

  • Линия 1 представляет собой CFS LineItem1, имеющий значения 6000 11 000 15,500 для De c Jan Фев
  • Линия 2 - CFS LineItem2 со значениями 2500 3500 4500 для De c Янв Фев

Я также хотел бы назвать Линии на графике на основе Поле объединенной таблицы FS LineItems [CFS LineDescription].

В идеале я мог бы создать оператор SQL, который мог бы использоваться в качестве исходных данных для графа отчета о доступе. Если требуется код VBA или макросы, это нормально.

Спасибо!

1 Ответ

0 голосов
/ 13 апреля 2020

Поскольку Графики MS Access обычно следуют модели данных сводной таблицы Excel, вам просто потребуется запрос длиннее с той же структурой (то есть, больше строк), который может обрабатываться с помощью IN предложение более TempVars .

Рассмотрим следующую корректировку с varCFSLineItem1-5 переменных. Кроме того, приведенный ниже запрос преобразует HAVING в WHERE и использует псевдонимы таблиц для удобства чтения и повторяет те же столбцы в GROUP BY в SELECT. Обязательно настройте график на нужные поля:

SELECT b.RecDate, 
       b.StoreID, 
       c.[CFS LineDescription],
       c.[CFS LineItem],
       SUM(b.[End Balance]) AS [SumOfEnd Balance]  

FROM (CombinedFSLineItems c
INNER JOIN AccountNumbers a
     ON c.[CFS LineItem] = a.[CFS LineItem]) 
INNER JOIN AccountBalances b
     ON a.[Account#] = b.[Account#]

WHERE (b.RecDate >= [TempVars]![varStartDate] 
  AND  b.RecDate <= [TempVars]![varDate]) 
  AND (b.StoreID = [TempVars]![varStoreID]) 

  AND (c.[CFS LineItem] IN ([TempVars]![varCFSLineItem1],
                            [TempVars]![varCFSLineItem2],
                            [TempVars]![varCFSLineItem3],
                            [TempVars]![varCFSLineItem4],
                            [TempVars]![varCFSLineItem5])
      )

GROUP BY b.RecDate, 
         c.[CFS LineDescription], 
         b.StoreID, 
         c.[CFS LineItem]
...