2016-10-20 5 views
0

フィールド(テンポ)から時間を取得するのにHour(Fields!tempo.Value)を使用していました。問題は私が初めて "24:00"に来たときに来て、レポートには "#error"が表示されます。SSRS:Hour()for 24:00

は「時間」関数での説明は言った:

だから、その日 の時間を表す0〜23の整数値を返し、私は

に式を変更しました

=IIf(Fields!tempo.Value = "24:00", 0, Hour(Fields!tempo.Value))

しかし、まだ#errorがあります。そして、私が試した:

=IIf(Fields!tempo.Value = "24:00", 0, 1)

、正しく、私は残りの24:00の値と "1" のために "0" を得ます。

  1. Hour()IIf()で動作しない理由がわかりません。
  2. このケースでは、より良い回避策が存在する可能性がありますが、わかりません。

の進歩のおかげで

EDIT:

アイデアは(午前、午後と夜からフィルタイベントのため)毎日2時間の間で開始されたすべてのイベントを取得することです:

=IIf(Hour(Fields!tempo.Value) >= 22 Or Hour(Fields!tempo.Value) <= 6, SHOWTHIS, Nothing) 
+0

"24:00"はデータベースからのもので、そのフィールドのデータタイプは何ですか?また、データがストアドプロシージャの結果である場合は、レポートの前にt-sqlで変換する必要があります。 –

+0

フィールドはvarcharであり、ストアドプロシージャからのものではありません。 – HEDMON

+0

SSRSの埋め込みクエリですか?あなたはそれを見せますか? –

答えて

1

文字列を使用して時間を取得する作業を行う必要がない場合、データセットが文字列を返す場合でも、これは最も簡単な解決策(IMO)です。

この式を使用してみてください:

=IIF(LEFT(Fields!tempo.Value,2)="24","0",REPLACE(LEFT(Fields!tempo.Value,2),":","")) 

それでもHOUR機能を使用して時間を取得したい場合は、IIFにしてHOUR関数内で、二回あなたのフィールドを検証する必要があります。

=IIF(Fields!tempo.Value="24:00", 
0, 
HOUR(IIF(Fields!tempo.Value="24:00","0:00",Fields!tempo.Value)) 
) 

これが役に立ったら教えてください。

+0

Gracias!私は@Andrewの答えを直接問題を解決するために受け入れますが、私はあなたの時間を感謝し、もっと長い時間をかけても、それは解決策です。どうもありがとうございました。あなたは私のUVを持っています;) – HEDMON

+0

@HEDMON、アンデルが15分前に投稿した答え(実際にはコメント)は、40分前に投稿したのと同じ回答です。がんばろう。 –

+0

ああ!申し訳ありませんが、私はあなたの答えの最初のバージョンを探していましたが、あなたは正しいです。受け入れられました。 – HEDMON