Как мне легко отрицать выражение в MS Report? - PullRequest
3 голосов
/ 11 января 2012

Я конвертирую отчет Crystal в отчет MS. Мое выражение в отчете «Кристалл» было таким:

=IIF(Fields!foo.Value Is Nothing and Fields!bar.Value Is Nothing,
0,
IIF(Fields!foo.Value Is Not Nothing and Fields!bar.Value Is Nothing,
Fields!foo.Value,
IIF(Fields!foo.Value Is Nothing and Fields!bar.Value Is Not Nothing,
Fields!bar.Value * -1,
IIF(Fields!foo.Value Is Not Nothing and Fields!bar.Value Is Not Nothing,
Fields!foo.Value,
0
))))

Not здесь не работает, даже если текст синий.

Могу ли я использовать Not или что-то вроде ! или я должен сойти с ума от IsNothing()

Ответы [ 3 ]

2 голосов
/ 11 января 2012

О, я понял это, мне просто нужно было переместить Not в начало выражения.Это была синтаксическая ошибка VB.NET от меня.Прошу прощения из C #, отчеты VB.NET и MS являются новыми для меня, извините.

=IIF(Fields!foo.Value Is Nothing and Fields!bar.Value Is Nothing,
0,
IIF(Not Fields!foo.Value Is Nothing and Fields!bar.Value Is Nothing,
Fields!foo.Value,
IIF(Fields!foo.Value Is Nothing and Not Fields!bar.Value Is Nothing,
Fields!bar.Value * -1,
IIF(Not Fields!foo.Value Is Nothing and Not Fields!bar.Value Is Nothing,
Fields!foo.Value,
0
))))
2 голосов
/ 11 января 2012

Вы должны быть в состоянии упростить свое выражение до:

IIF(Not Fields!foo.Value Is Nothing, 
    Fields!foo.Value,
    IIF(Not Fields!bar.Value Is Nothing,
        Fields!bar.Value * -1,
        0))

РЕДАКТИРОВАТЬ: чтобы вернуть foo.Value - bar.Value, когда ни один не является нулевым, попробуйте:

= IIF(Not Fields!foo.Value Is Nothing, Fields!foo.Value, 0) -
  IIF(Not Fields!bar.Value Is Nothing, Fields!bar.Value, 0)
0 голосов
/ 11 января 2012

Попробуйте это:

=IIF((Fields!foo.Value.Equals(System.DBNull.Value)), "YES", "NO")
=IIF((Fields!foo.Value is System.DBNull.Value), "YES", "NO")
...