如何在水晶报告中指定2个不同的PARAMETER?

时间:2009-10-19 02:48:07

标签: crystal-reports parameters

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)

实际上我想在水晶报告中设置两个参数。 agent_type(主要,分销商,主要经销商,经销商)&状态(有效,无符号,终止,暂停)。

我实际上得到了参数。但是当我选择agent_type或status时,我只能逐个选择并查看报告。例: 对于agent_type,我选择Distributor,status选择Active。肯定会为它提供正确的报告。

但是,假设我现在想查看具有所有状态的分销商。但它没有用,即使我尝试了'%e%'。它真的不能得出结果。 我想要一个列表,其中包含具有不同状态的分销商,或者具有一个状态的不同agent_type,或者在报告中查看全部。

1 个答案:

答案 0 :(得分:1)

我能想到的解决Crystal中最简单的方法是使用select expert的公式中的switch语句。

在这个例子中你可以有类似的东西:

switch ( 
{?AgentType} = "Distributor", {table1;1.agent_type} = "Distributor",
{?AgentType} = "Other", {table1;1.agent_type} = "other",
true, true
)

如果您使用的是SQL Server,那么更好的方法是使用以下内容在查询中处理它:

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)

在查询中,如果您希望它显示所有AgentTypes,则传入一个空字符串;如果您希望它显示所有状态,则传入-1。

希望它有所帮助。