2011-11-03 17 views
5

Bu ifadeyi raporlama hizmetleriyle çalışırken alamadım. IF ve ELSE IF ifadelerini kullanmalıyım. Önerileriniz için teşekkürler.Switch'i kullanarak raporlama hizmetleri ifadesi

İşte yapmaya çalıştığım şey budur.

If(IsNothing(Fields!field_date.Value)) Then ""; 

ElseIf Fields!set_flag.Value=1 Then "Declined"; 

Else Fields!field_name.Value 
+0

Anahtar deyiminde ne tür bir hata var? –

cevap

7

SSRS, VB Çalışma Zamanı Kitaplığı'nı kullanmıyor mu? Bu durumda, anahtar deyimi documented here şeklindedir ve bir bile öğesinin geçtiği öğelerinizin olması gerektiğini belirtir. Sorununuz buysa, muhtemelen bir ArgumentException atılıyor demektir. Varsayılan bir dönüş değerine sahip olmak istiyorsanız

, her zaman doğru olarak değerlendirilir bir kukla durumuna eklemek olurdu: GBN önerdi gibi

= Switch(IsNothing(Fields!field_date.Value),"", Fields!set_flag.Value=1,"Declined", True, Fields!field_name.Value) 
+0

Efendim, Nedense ifade çalışmaz. – nav100

+0

Hata nedir? –

+0

Bu bir hata atmıyor. Yine de alan isminin set_flag = 1 olmasına rağmen görüntülendiğini görebiliyorum. – nav100

0

Ben bir kod bloğu kullanmak. Okuması daha kolay olacak. Raporlama Hizmetlerinde kullanılan kod blokları hakkında Microsoft'tan bir kod yazılır: http://msdn.microsoft.com/en-us/library/ms156028%28v=sql.100%29.aspx

Bir kod bloğu kullanmak istemiyorsanız ifadenizde IIF ifadelerini zincirleyebilirsiniz. senin Örneğin baktığımızda o

=IIF(IsNothing(Fields!field_date.Value),"",IIF(Fields!set_flag.Value=1,"Declined",Fields!field_name.Value) 

Herhangi 2'den fazla IIF ya da sadece bir değer döndürmek daha karmaşık şey gibi bir şey olurdu, o zaman kesinlikle bir kod bloğu için gider. Aksi halde, raporu sizden sonra korumak zorunda olan kişi için daha da kötüleştiriyorsunuz.

+0

Birden fazla IIF kullanırsam hata atarım. – nav100

İlgili konular