2009-10-19 9 views
0
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) 

En fait, je veux définir deux paramètres dans le rapport de cristal. où agent_type (principal, répartiteur, concessionnaire principal, concessionnaire) & status (active, unsigned, terminate, suspend).Comment attribuer 2 PARAMETER différents dans le rapport de cristal?

En fait, j'obtiens le paramètre. Mais quand je choisis l'agent_type ou l'état, je ne peux que choisir et visualiser un par un sur le rapport. Exemple: Pour agent_type, je choisis Distributeur, statut que je choisis Actif. Il va sûrement sortir avec le bon rapport pour cela. Mais disons que je veux maintenant voir le distributeur avec tout le statut. Mais ça ne marche pas, même si j'ai essayé de mettre '% e%'. Il ne peut vraiment pas sortir avec le résultat. Je veux une liste qui contient des distributeurs avec un statut différent, ou bien un autre type d'agent avec un statut, ou tout afficher dans le rapport.

Répondre

1

Le moyen le plus simple dans Crystal que je puisse envisager pour gérer cela est avec une instruction switch dans la formule de l'expert select.

Dans cet exemple, vous pourriez avoir quelque chose comme:

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

Si vous utilisez SQL Server alors la meilleure approche serait de gérer dans la requête avec quelque chose comme ce qui suit:

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) 

Dans la requête, vous passeriez une chaîne vide si vous vouliez qu'elle affiche tous les types d'agent ou -1 si vous le vouliez pour afficher tous les statuts.

Espérons que ça aide.

Questions connexes