Crystal reports 如何在crystal report中指定两个不同的参数?

Crystal reports 如何在crystal report中指定两个不同的参数?,crystal-reports,parameters,Crystal Reports,Parameters,实际上我想在crystal报告中设置两个参数。 其中代理类型(主、分销商、主经销商、经销商)和状态(活动、未签名、终止、暂停) 我实际上得到了参数。但当我选择代理类型或状态时,我只能逐个选择并查看报告。例子: 对于代理类型,我选择Distributor,状态选择Active。它肯定会给出正确的报告 但假设我现在想查看具有所有状态的分销商。但它不起作用,即使我尝试放置“%e%”。结果真的不可能出来。 我想要一个包含具有不同状态的分销商的列表,或者包含具有一种状态的不同代理类型的列表,或者在报告中查

实际上我想在crystal报告中设置两个参数。 其中代理类型(主、分销商、主经销商、经销商)和状态(活动、未签名、终止、暂停)

我实际上得到了参数。但当我选择代理类型或状态时,我只能逐个选择并查看报告。例子: 对于代理类型,我选择Distributor,状态选择Active。它肯定会给出正确的报告

但假设我现在想查看具有所有状态的分销商。但它不起作用,即使我尝试放置“%e%”。结果真的不可能出来。
我想要一个包含具有不同状态的分销商的列表,或者包含具有一种状态的不同代理类型的列表,或者在报告中查看所有内容。

在Crystal中,我能想到的处理此问题的最简单方法是使用select expert公式中的switch语句

在本例中,您可以有如下内容:

select 
(distributor_code+ '-' +master_dealer_code+ '-' +state_code+ '-' +dealer_code) as agent_code, 
agent_type, company,contact_person, status, created_date as date,
(CASE
 WHEN contact_mobile_no IS NOT NULL THEN contact_mobile_no
 WHEN contact_mobile_no IS NULL and contact_office_no IS NOT NULL THEN contact_office_no
 ELSE NULL
END) as contact_no

from sdms_agent  

where agent_type ='{?AgentType}' and status ='{?Status}'

order by (distributor_code+ '-' +master_dealer_code+ '-' +state_code+ '-' +dealer_code)
如果您使用的是SQL Server,那么更好的方法是在查询中使用以下内容处理它:

switch ( 
{?AgentType} = "Distributor", {table1;1.agent_type} = "Distributor",
{?AgentType} = "Other", {table1;1.agent_type} = "other",
true, true
)
在查询中,如果希望它显示所有的AgentType,则传入一个空字符串;如果希望它显示所有的状态,则传入一个-1

希望能有帮助

select (distributor_code+ '-' +master_dealer_code+ '-' +state_code+ '-' +dealer_code)as agent_code , agent_type, company,contact_person, status, created_date as date, (CASE WHEN contact_mobile_no IS NOT NULL THEN contact_mobile_no WHEN contact_mobile_no IS NULL and contact_office_no IS NOT NULL THEN contact_office_no ELSE NULL END )as contact_no
from sdms_agent
where agent_type = case @AgentType when '' then agent_type else @AgentType end
and status = case @Status when -1 then status else @Status end
order by (distributor_code+ '-' +master_dealer_code+ '-' +state_code+ '-' +dealer_code)