2016-03-21 8 views
0

Ich habe eine Zeile in einer Tabelle, die als Kopfzeile fungiert. Es kann mit zwei Diff-Parametern angezeigt oder nicht angezeigt werden. Bisher habe ichZeigen/Verbergen der Zeilen Sichtbarkeit von Parameter

=IIF(((InStr(join(Parameters!PRO.Value,", "),"-1") AND Parameters!ShowPro.Value="N")) ,true, false) 
    or 
     IIF(((Instr(join(Parameters!PRO.value,","),"-1") and Parameters!ShowPro.value="Y")),false,true) 

Grundsätzlich sagen Wenn PRO-Wert = -1 (alle auswählen) und ShowPro Wert = Nein (dieser Parameter schaltet eine Spalte), dann verstecken Zeile oder das Gegenteil passiert. Alles auswählen und ShowPro = Ja Zeile anzeigen. Dies funktioniert so, als ob die Zeile angezeigt werden soll, dann erscheint der ReportItem PRO.value in dieser Zeile "header" und es gibt einen Seitenumbruch zwischen jeder Gruppe, die diese Gruppe PRO.value anzeigt.

Was ich jetzt versuche, ist eine dritte Option hinzufügen, wenn ich nicht alle (-1) auswählen, aber immer noch die Zeile anzeigen (ShowPro = "Y") und dann die PRO.Values ​​in diesem ausgewählt anzeigen "Kopfzeile" Zeile und jeder Seitenumbruch. Ich habe verschiedene Formen von

IIF(not((Instr(join(Parameters!PRO.value,","),"-1") and Parameters!ShowPro.value="Y")),true,false) 

ausprobiert und ich kann es einfach nicht zur Arbeit bekommen. Jede Hilfe sehr geschätzt. Hoffe, ich habe es klar erklärt.

Antwort

1

Ich denke, Ihr Problem kann in der Or-Logik sein, die passiert, und dass Sie stattdessen verschachtelte iif-Anweisungen verwenden möchten. Momentan wertet Ihr Code beide iif-Anweisungen einzeln aus und gibt einen booleschen Wert (Wahr/Falsch) für jeden Wert zurück. Die Erklärung wird vereinfachen dann

= True or False 

, die true zurückgibt oder vielleicht

= False or False 

die falsch zurückgibt. Werfen Sie in eine dritte Bedingung, und Sie können mit so etwas wie

= False or True or False 

, die würden immer noch zu wahren bewerten aufzuwickeln, kann aber nicht sein, was Sie suchen. verschachtelt iif-Anweisungen würde wie folgt aussehen:

=IIF(((InStr(join(Parameters!PRO.Value,", "),"-1") AND Parameters!ShowPro.Value="N")) ,true, IIF(((Instr(join(Parameters!PRO.value,","),"-1") and Parameters!ShowPro.value="Y")),false, IIF(not((Instr(join(Parameters!PRO.value,","),"-1") and Parameters!ShowPro.value="Y")),true,false))) 

Dies wertet jede Aussage, und wenn es wahr ist, gibt den Wert angegeben. Wenn es falsch ist, geht es weiter zum nächsten iif und wertet diese Aussage aus. Wenn die letzte if-Anweisung false ist, wird false zurückgegeben. Möglicherweise müssen Sie diese Antwort für Ihre Zwecke optimieren, aber ich denke, es wird Ihr Problem beheben.

+0

Danke, ich ging eine andere Richtung, aber Sie beantworteten meine ursprüngliche Frage und markierten als Antwort. – mrbungle

Verwandte Themen