Crystal Reports, группа подотчетов ссылок на дату - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь создать отчет, показывающий наше общее качество, изменяющееся со временем по месяцам или кварталам (в течение нескольких лет).В основном отчете будут показаны все наши поставки за указанный период времени, сгруппированные по месяцам / кварталам, а в дополнительном отчете будут показаны все поступления, введенные в течение этого месяца / квартала, которые привели к браку или переработке.

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

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

* Изменить для дополнительной информации

Я бы хотел, чтобы в подотчете отображались данные за каждый месяц или квартал за указанный период времени.Поэтому, если диапазон дат в отчете за 01.01.2008 г. - 30.09.2008 г. и данные сгруппированы по месяцам, я бы хотел, чтобы в подотчете отображались только данные из каждой группы по месяцам.Общая схема ниже.

Январь
Отгрузки
Возвраты (подотчет с данными за январь)

Февраль
Отгрузки
Возвращает (подотчет, показывающий данные за февраль)

* Второе редактирование, чтобы добавить скриншот и дополнительную информацию

Я удалил все параметры из подотчета, потому что не смог заставить работать ни один из них,Единственным параметром в основном отчете является диапазон дат, который запрашивает у пользователей дату начала и окончания.

Основной отчет содержит отгрузки в разделе сведений.

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

Quality Trend Layout

* Третье редактирование источника данных и примеров данных

Основные и вложенные отчеты извлекаются из таблиц в базе данных нашей компании.

Используется SQL-запросдля основного отчета.Только таблица «Выпуски» используется, чтобы показать, сколько и когда каждая часть была отправлена.DelType=0 указывает на доставку клиента.Диапазон дат определяется введенным пользователем параметром.

Основной отчет

SELECT 
"Releases"."DateComplete",  
"Releases"."DelType",  
"Releases"."PartNo",  
"Releases"."Qty",  
"Releases"."JobNo",  
"Releases"."PartDesc"  

FROM   "COMPANY"."dbo"."Releases" "Releases"  

WHERE  "Releases"."DelType"=0 AND  
("Releases"."DateComplete">={ts '2018-01-01 00:00:00'} AND  
"Releases"."DateComplete"<{ts '2018-10-01 00:00:00'})  

Я пытаюсь использовать CustReturn.DateEnt в качестве даты / времени для ссылки на Releases.DateCompleteв основном отчете (в настоящее время не связан с параметром, потому что он не работает), и выберите только те записи, которые возвращают клиенты, что приводит к переработке, утилизации, сортировке или ремонту.

Подотчет

SELECT 
"CustReturn"."DateEnt",  
"CustReturn"."CustRMANo",  
"CustReturnDet"."OrigJobNo",  
"CustReturnDet"."PartNo",  
"CustReturnDet"."QtyReturned",  
"CustReturnDet"."QtyToRework",  
"CustReturnDet"."QtyToRestock",  
"NonConformance"."Disposition",  
"NonConformance"."ReturnType",  
"CustReturn"."IssueDate",  
"NonConformance"."NonConfDate",  
"CustReturnDet"."PartDesc"  

FROM   
("COMPANY"."dbo"."CustReturn" "CustReturn" INNER JOIN "COMPANY"."dbo"."CustReturnDet" "CustReturnDet" ON "CustReturn"."CustRMANo"="CustReturnDet"."CustRMANo")    
LEFT OUTER JOIN "COMPANY"."dbo"."NonConformance" "NonConformance" ON "CustReturnDet"."NonConfNo"="NonConformance"."NonConfNo"

WHERE  ("NonConformance"."Disposition"='REPAIR' OR  
"NonConformance"."Disposition"='REWORK' OR  
"NonConformance"."Disposition"='SCRAP' OR  
"NonConformance"."Disposition"='SORT') AND  
"NonConformance"."ReturnType"='CUSTOMER'

Пример данных тренда качества

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Во-первых, я хочу поблагодарить Digital.Aaron.Мы очень ценим вашу помощь в решении этой проблемы.

Ваш ответ был очень близок к тому, что мне было нужно.Я все еще не мог получить подотчет, чтобы показать какие-либо данные после добавления дополнительных строк в оператор SQL, поэтому я попробовал что-то немного другое.Я сделал дополнительные утверждения в полях формул.

Основное поле отчета

DATEADD("D", -1*(DATEPART("D",{Releases.DateComplete})-1),{Releases.DateComplete})

Поле подотчета

DATEADD("D", -1*(DATEPART("D",{CustReturn.DateEnt})-1),{CustReturn.DateEnt})

Я использовал эти поля в качестве связи между основным отчетом и вложенным отчетом, но все еще не мог отобразить данные.Проблема оказалась в том, что они задавали друг друга как = в формуле выбора записи в подотчете.Я назвал формулы DatePeriod

Выбор исходной записи

{@DatePeriod} = {?Pm-@DatePeriod}

Изменение измененной записи

{@DatePeriod} in Date({?Pm-@DatePeriod})

Как только я внес изменение, все стало на свои места.

Еще раз спасибо,

Джефф

0 голосов
/ 03 октября 2018

Похоже, вы группируете на Releases.DateComplete.Давайте предположим, что это значение одинаково для всех записей, связанных с данным месяцем.Давайте также предположим, что следующие (упрощенные) примеры данных для Shipments:

ShipmentDate | PartNo | Qty | DateComplete
01/01/2018   | 0001   | 1   | 01/31/2018
01/05/2018   | 0031   | 10  | 01/31/2018
01/31/2018   | A314   | 4   | 01/31/2018

Ваши данные Returns должны будут выглядеть примерно так:

ReturnDate   | PartNo | Qty | DateComplete
01/15/2018   | 0031   | 7   | 01/31/2018

Обратите внимание, что они обаиметь столбец DateComplete.

Теперь в своем шаблоне Crystal Report вы будете использовать поле DateComplete из набора результатов основного отчета в качестве входных данных для вашего параметра подчиненного отчета.Ваш макет дизайна выглядит так, как будто он будет правильным здесь, так как вы хотите, чтобы подотчет вызывался в нижнем колонтитуле группы.

РЕДАКТИРОВАТЬ: Таким образом, похоже, что DateComplete не одинакова для всех записей в данном месяце,Все в порядке.Мы собираемся добавить столбец как к основному запросу, так и к запросу подотчета, который будет одинаковым для всех записей за данный месяц и который мы затем сможем использовать для связывания записей.

Ваш основной запросстанет:

SELECT 
    Releases.DateComplete,  
    Releases.DelType,  
    Releases.PartNo,  
    Releases.Qty,  
    Releases.JobNo,  
    Releases.PartDesc,
    DatePeriod = DATEADD(DAY, -1*(DATEPART(DAY,Releases.DateComplete)-1),Releases.DateComplete) 
FROM   COMPANY.dbo.Releases Releases  
WHERE  Releases.DelType=0 
    AND (Releases.DateComplete>={ts '2018-01-01 00:00:00'} AND  Releases.DateComplete<{ts '2018-10-01 00:00:00'}) 

Тогда ваш запрос на подотчет станет:

SELECT 
    CustReturn.DateEnt,  
    CustReturn.CustRMANo,  
    CustReturnDet.OrigJobNo,  
    CustReturnDet.PartNo,  
    CustReturnDet.QtyReturned,  
    CustReturnDet.QtyToRework,  
    CustReturnDet.QtyToRestock,  
    NonConformance.Disposition,  
    NonConformance.ReturnType,  
    CustReturn.IssueDate,  
    NonConformance.NonConfDate,  
    CustReturnDet.PartDesc,
    DatePeriod = DATEADD(DAY, -1*(DATEPART(DAY,CustReturn.DateEnt)-1),CustReturn.DateEnt)  
FROM COMPANY.dbo.CustReturn CustReturn 
INNER JOIN COMPANY.dbo.CustReturnDet CustReturnDet ON CustReturn.CustRMANo = CustReturnDet.CustRMANo    
LEFT OUTER JOIN COMPANY.dbo.NonConformance NonConformance ON CustReturnDet.NonConfNo = NonConformance.NonConfNo
WHERE  NonConformance.ReturnType='CUSTOMER'
AND (   
        NonConformance.Disposition='REPAIR' 
        OR NonConformance.Disposition='REWORK' 
        OR NonConformance.Disposition='SCRAP' 
        OR NonConformance.Disposition='SORT'
    ) 

DatePeriod всегда будет датой первого дня месяца.Теперь мы можем использовать это как поле Связи между основным отчетом и вложенным отчетом.Вы также можете сделать это поле, в котором вы группируете, вместо значения месяца.

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