2013-07-30 1 views
1

Я пытаюсь создать диаграмму (строку или строку) в кристалле из одной таблицы в моей базе данных (Sage CRM).Создайте диаграмму, используя записи определенного типа, сгруппированные по месяцам, с подвижным балансом

Записи являются

CustomerId  Date   Invoice    Amount 

1234   3/4/2013  Cust Invoice   3322.00 
1234   3/4/2013  Payment    2445.00 
1234   4/5/2013  A/c transaction   322.00 
1234   5/6/2013  interest     32.00 
1234   6/6/2013  payment     643.00 

Так что я хотел бы иметь отчет, который отвечает следующим критериям

  1. Только записи за последние 12 месяцев, сгруппированных в месяц
  2. только счета-фактуры виды платежей, счетов-фактур и процентов
  3. Движущийся баланс, который вычисляет все суммы счетов-фактур, т.е.

(при отображении информации за июль 2012 года скользящим остатком будет общая сумма всех счетов-фактур до этой даты. Без этого поля я могу создать диаграмму без проблем с помощью эксперта select, но теперь я не уверен, что делать)

Должен ли я использовать крестик? если да, то как я сделаю выбор, чтобы показывать только счета-фактуры и диапазон дат, который я хочу?

+0

Можете ли вы посоветовать немного больше о вашей настройке? У вас есть возможность создавать хранимые procs в базе данных? Если это так, я бы рекомендовал создать хранимую процедуру с некоторыми параметрами @. Таким образом, вы можете устанавливать даты и типы счетов, когда вы обновляете отчет в кристалле. Движущийся баланс может быть легко создан с использованием текущего общего поля ... Если вы предоставите больше информации, я был бы рад помочь. –

+0

Привет, Алек, Ситуация в том, что я нахожусь на 13-недельном рабочем эксперименте, я начал 3 недели назад, и мне некому наставлять меня, поскольку нет другого человека (только бухгалтера, который знает очень мало). Я устанавливаю wampserver, чтобы создать хранимую процедуру. Есть ли что-то еще, что вы хотите узнать? – Rachsherry

ответ

1

Проведя почти неделю на этой проблеме, при большой помощи эксперта я наконец получил решение.

Для того, чтобы создать сумму, которая является суммой всех записей для компании, месяц и счет типа с начала времени, в то время как только отображения записей за последний год, я создал команду SQL

Select 
    //All of the fields for the report, 
    movingBalance.Amount 
from myInvoiceTable as mit 
    <join to any other tables for the report> 
    left join (
    select customerID, sum(amount) as Amount 
    from myInvoiceTable 
    where Record_Type in ('Payment', 'Invoice','Interest') 
     and Date < {?Report Start Date} 
    group by customerID) movingBalance 
    on mit.customerID = movingBalance.customerID 
where mit.RecordType in ('Payment', 'Invoice','Interest') 
    and mit.Date >= {?Report Start Date} 
    and mit.Date <= {?Report End Date} 

Есть несколько трюков, используя команды:

  1. из соображений производительности вы вообще хотите включить все данные для отчета в одной команде. Избегайте объединения нескольких команд или объединения одной или нескольких таблиц в команду.
  2. Отфильтруйте данные в команде, а не в разделе «Выбор эксперта» в отчете.
  3. Создайте любые параметры в редакторе команд, а не в основном отчете. Параметры, созданные в отчете, не будут работать в редакторе команд.

Это сделало трюк.

+0

Отличное спасибо за то, что вы поделились с вами! –

0

Дата создания Параметры в отчете, чтобы отфильтровать записи во время получения данных, когда вы запустите отчет, который у вас остался, с данными, которые вам нужны.

Теперь вы можете manuplate данные внутри отчета с помощью полей формулы.

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

0

В этом случае Rachsherry я бы рекомендовал следующее.

Для элементов критериев 1 & 2 Я думаю, что вместо использования хранимых процедур вам может быть проще использовать формулу.

Для счетов-фактур правой кнопкой мыши на поле счета-фактуры, а затем «Формат поля» на вкладке общего рядом с опцией Подавить есть кнопка формула, введите следующее ...

IF {YourInvoiceField} IN ["Payment", "Invoice", "Interest] THEN FALSE ELSE TRUE 

Для вашего требования дат необходимо использовать формулу выбора ... код, который должен выглядеть как этот

{YourDateHere} > DateAdd ("yyyy", -1, CurrentDate) AND {YourDateHere} < CurrentDate 

Приведенный выше код в основном смотрит на даты между днем ​​отчет выполняется, и ровно год назад.

Для вашего движущегося баланса, вы должны быть в состоянии для того чтобы достигнуть, что с руководством here

Edit - Альтернативой этому является использование полей параметров (которые я лично не нравится) это просто означает наличие вводите параметры каждый раз, когда отчет обновляется, они сами объясняют, но вы можете найти руководство. here

+0

Привет, Алек, я попробовал то, что вы предложили выше, но этого недостаточно, чтобы ограничить данные для диаграммы, хотя он останавливает отображение записей в отчете, они все еще появляются на диаграмме. – Rachsherry