2010-01-07 4 views
0

Im en utilisant la requête dans le rapport de cristal comme:compte de rapport crytal records total

if({?User Name}) <>"ALL" 
then 
{COMN_USER_RESP_LINK_T.APPL_USER_NAME}={?User Name} 
else 
{COMN_USER_RESP_LINK_T.APPL_USER_NAME} ={COMN_USER_RESP_LINK_T.APPL_USER_NAME} 
and 
{COMN_USER_RESP_LINK_T.ENABLED}="Y" 

c'est la requête réelle dans sql: (nom d'utilisateur)

SELECT 
      C.APPL_USER_NAME, 
      A.RESP_NAME, 
      B.MENU_NAME, 
      B.DESCRIPTION, 
      B.MODULE_NAME, 
      C.APPL_RESP 
    FROM COMN_RESPONSIBILITY_T A, 
     COMN_RESP_MENU_LINK_T B, 
     COMN_USER_RESP_LINK_T C 
    WHERE A.COMP_CODE = B.COMP_CODE 
    AND B.COMP_CODE = C.COMP_CODE 
    AND C.COMP_CODE = A.COMP_CODE 
    AND A.RESP_NAME = B.RESP 
    AND C.APPL_RESP = A.RESP_NAME 
    AND B.ENABLED = 'Y' 
    AND C.APPL_USER_NAME = c.APPL_USER_NAME 
      CASE @ACCT_CODE_FROM 
       WHEN 'ALL' THEN C.APPL_USER_NAME 
       ELSE @ACCT_CODE_FROM 
      END 
    ORDER BY APPL_USER_NAME, 
     RESP_NAME 

je sélectionner le nom d'utilisateur dans le champ des paramètres , si je sélectionne ALL alors je dois montrer tous les enregistrements ({COMN_USER_RESP_LINK_T.APPL_USER_NAME})

Est-ce que la requête ci-dessus est correcte?

+0

vous devez formater cette requête ... il me fait devenir aveugle. – dotjoe

Répondre

0

Je reformulerais probablement quelque chose comme:

SELECT C.APPL_USER_NAME, A.RESP_NAME, B.MENU_NAME, B.DESCRIPTION, 
    B.MODULE_NAME, C.APPL_RESP 
FROM COMN_RESPONSIBILITY_T A 
    INNER JOIN COMN_RESP_MENU_LINK_T B ON A.COMP_CODE = B.COMP_CODE 
     AND A.RESP_NAME = B.RESP 
    INNER JOIN COMN_USER_RESP_LINK_T C ON B.COMP_CODE = C.COMP_CODE 
     AND C.APPL_RESP = A.RESP_NAME 
WHERE ((@ACCT_CODE_FROM = 'ALL') AND (B.ENABLED = 'Y')) 
    OR (C.APPL_USER_NAME = @ACCT_CODE_FROM) 
ORDER BY APPL_USER_NAME, RESP_NAME 

Cela vous obtient soit les détails:

  • lorsque ALL est sélectionné, tous les comptes qui sont activés; ou
  • juste le code utilisateur est entré
+0

donner une solution dans le rapport de cristal (requête) – Domnic

0

je ne lis pas votre code, car il est très sale! mais je pense que vous pouvez utiliser SelectionFormula dans Crystal Report. Certes, vous pouvez définir dans le code:

crystalReportViewer1.SelectionFormula ="(({?User Name}= 'ALL') AND ({B.ENABLED} = 'Y')) OR ({C.APPL_USER_NAME} = @ACCT_CODE_FROM)"

+0

Je pourrais avoir -1 votre réponse, mais vous avez épargné. Si vous postez une réponse, vous pouvez "penser/deviner" c'est la réponse. Pour deviner il y a un commentaire – aMazing