Crystal reports 使用Crystal报告的多参数条件

Crystal reports 使用Crystal报告的多参数条件,crystal-reports,Crystal Reports,我的选择专家中有以下内容: ( if {?Job} <> "All" then {SPSYSPRO_PO_CapexJobs;1.MJob} = {?Job} else true ) OR ( if {?Supplier} <> "All" then {SPSYSPRO_PO_CapexJobs;1.MJob}= {?Job} else true ) ( 如果{?作业}“全部”,则 {SPSYSPRO_PO_CapexJobs;1.MJob}={?Job

我的选择专家中有以下内容:

(
if {?Job} <> "All" then
 {SPSYSPRO_PO_CapexJobs;1.MJob} = {?Job}
else
  true
) OR
(
if  {?Supplier} <> "All" then
  {SPSYSPRO_PO_CapexJobs;1.MJob}= {?Job}
else
  true
)
(
如果{?作业}“全部”,则
{SPSYSPRO_PO_CapexJobs;1.MJob}={?Job}
其他的
真的
)或
(
如果{?供应商}“全部”,则
{SPSYSPRO_PO_CapexJobs;1.MJob}={?Job}
其他的
真的
)
但是它没有做我想做的^^ 我需要的是,如果作业未选择值,则使用供应商列表获取数据。 所以,如果工作没有价值,供应商=多个价值,它应该给我所有这些供应商的工作,反之亦然。。。 如果我选择Job=All并选择多个供应商的,则应为我返回所选供应商的所有工作,反之亦然

嘿,我只是想在这里添加我的SP,那么你可能会明白我在寻找什么,因为你的公式在这方面不起作用

SELECT SUBSTRING(PD.PurchaseOrder,9,7) PurchaseOrder
          ,PD.[Line]
          ,PD.[MStockCode]
          ,PD.[MStockDes]
          ,PD.[MOrderQty]
          ,PD.[MReceivedQty]
          ,SUBSTRING(RD.Supplier,9,7) Supplier
          ,AP.SupplierName  
          ,PH.OrderEntryDate CreateDate
          ,PH.OrderStatus
          ,PD.[MLatestDueDate]
          ,PD.[MLastReceiptDat]
          ,PD.[MDiscValue]
          ,PD.[MPrice]
          ,PD.[MForeignPrice]
          ,PD.MJob 
          ,PD.[MRequisition]
          ,PD.[MRequisitionLine]

      FROM [SysproCompanyR].[dbo].[PorMasterDetail] PD
      INNER JOIN [SysproCompanyR].[dbo].[PorMasterHdr] PH
       on PD.PurchaseOrder = PH.PurchaseOrder
        INNER JOIN [SysproCompanyR].[dbo].ReqDetail RD
        on PD.MRequisition = RD.Requisition and PD.MRequisitionLine = RD.Line 
        INNER JOIN [SysproCompanyR].[dbo].ApSupplier AP
        on RD.Supplier = AP.Supplier  
      Where SUBSTRING(PD.MJob,1,1)= 'C'
      and PD.MCompleteFlag <> 'Y'
      and PH.OrderStatus <> '*'
选择子字符串(PD.PurchaseOrder,9,7)PurchaseOrder
,PD.【线路】
,PD.[MStockCode]
,PD.[MStockDes]
,PD.【现代数量】
,PD.[MReceivedQty]
,子串(研发供应商,9,7)供应商
,美联社,供应商名称
,PH.OrderEntryDate CreateDate
,博士学位
,PD.[MLatestDueDate]
,PD.[MLastReceiptDat]
,PD.[MDiscValue]
,PD.[MPrice]
,PD.[MForeignPrice]
,PD.MJob
,PD.[MRequisition]
,PD.[MRequisitionLine]
来自[SysproCompanyR].[dbo].[PorMasterDetail]PD
内部联接[SysproCompanyR].[dbo].[PorMasterHdr]PH
在PD.PurchaseOrder=PH.PurchaseOrder上
内部联接[SysproCompanyR].[dbo].ReqDetail RD
在PD.MRequisition=RD.Requisition和PD.MRequisitionOnline=RD.Line上
内部联接[SysproCompanyR].[dbo].ApSupplier AP
道路供应商=AP供应商
其中,子串(PD.MJob,1,1)='C'
和PD.mcompletteflag'Y'
和PH.OrderStatus'*'

如果您只需要选定供应商的工作,那么最好使用子报告

在主报表中为供应商和作业创建参数,并将供应商参数传递给子报表,并将主报表中的作业参数链接到子报表 使用子报表链接并在子报表
记录选择公式中写入以下公式

为参数创建两个默认值
All
None
和您的正常列表

if {?Job} = "All" and ({?suppliers} <> "ALL" and {?suppliers} <> "none") then
 {SPSYSPRO_PO_CapexJobs;1.MJob} = {?Job} and
 {SPSYSPRO_PO_CapexJobs;1.Msuppliers} in ("list of comma saperated suppliers")
//For above case you need to have relation between jobs and suppliers
else if 
(({?Job} = "All" or {?suppliers} = "none") and {?suppliers} <> "ALL")
then {SPSYSPRO_PO_CapexJobs;1.MJob} = {?Job}
else if 
({?Job} <> "All" and ({?suppliers} = "ALL" or {?Job} = "none"))
then {SPSYSPRO_PO_CapexJobs;1.MJob}= {?Job}
如果{Job}=“All”和({suppliers}“All”和{suppliers}“none”),那么
{SPSYSPRO_PO_CapexJobs;1.MJob}={?Job}和
{SPSYSPRO_PO_CapexJobs;1.Msuppliers}in(“逗号化供应商列表”)
//对于上述情况,您需要在工作和供应商之间建立关系
否则如果
(({Job}=“All”或{suppliers}=“none”)和{suppliers}“All”)
然后{SPSYSPRO_PO_CapexJobs;1.MJob}={?Job}
否则如果
({作业}“全部”和({供应商}=“全部”或{作业}=“无”))
然后{SPSYSPRO_PO_CapexJobs;1.MJob}={?Job}
如果不想使用子报告,请检索所有记录并在crystal reports中进行选择

if 
    (({?Job} = "All" or {?suppliers} = "none") and {?suppliers} <> "ALL")
    then {SPSYSPRO_PO_CapexJobs;1.MJob} = {SPSYSPRO_PO_CapexJobs;1.MJob}        else if 
    ({?Job} <> "All" and ({?suppliers} = "ALL" or {?Job} = "none"))
    then {SPSYSPRO_PO_CapexJobs;1.MJob}= {SPSYSPRO_PO_CapexJobs;1.Supplier}
if
(({Job}=“All”或{suppliers}=“none”)和{suppliers}“All”)
然后{SPSYSPRO_PO_CapexJobs;1.MJob}={SPSYSPRO_PO_CapexJobs;1.MJob}如果
({作业}“全部”和({供应商}=“全部”或{作业}=“无”))
然后{SPSYSPRO_PO_CapexJobs;1.MJob}={SPSYSPRO_PO_CapexJobs;1.Supplier}

希望它能有所帮助

Hi-Siva,我已经尝试了不带子报告的查询,因为我的查询或sp如下所示,我认为我不需要子报告。我添加了我的sp代码,因此您可能会更好地了解我想要什么。您好,Siva,如果我选择“无”作为“作业”,则查询仍然不起作用,仅一个特定供应商,即使该供应商有作业,它也不会返回任何内容。如果选择“全部”和“一个供应商”,它将返回所有数据,而不仅仅是该供应商的数据。因此,我需要说,例如,Job=All和Supplier=A,然后我想返回该供应商或多个供应商的所有作业。然后,如果我选择作业=A、B、C,并选择供应商=全部,则我希望显示该作业的所有作业,而不管供应商是谁。查看这是否是要求……然后使用子报告,否则检索全部并显示所需内容,并取消剩余内容