0

レポート デザイナー V2.0 を使用してレポートを作成しようとしていますが、2 つの日付間の平日の日数を計算する VB 関数を作成しました。

vb.Net でコードを記述し、レポート内のカスタム コード タブに移植しました。

関数のシグネチャは次のようになります

    Public Function CalculateWorkdays(ByVal startdate As Date, ByVal enddate As Date) As String
        Return "Test"
    End Function

次に、レポート変数をこの関数に渡そうとします

    =Code.CalculateWorkdays(CDate(Parameter.MyStartDate), CDate(Parameter.MyEndDate))

これは実行に失敗します

署名を変更すると

      Public Function CalculateWorkdays(ByVal startdate As String, ByVal enddate As String) As String
             Return "Test"
      End Function

      =Code.CalculateWorkdays(Parameter.MyStartDate, Parameter.MyEndDate)

これは実行され、成功します。

したがって、関数呼び出しの前に文字列の日付をキャスト/変換しようとするのではなく、関数自体の中でそれを実行しようとしました。

     Dim startdate as Date
     startdate = Date.Parse(strstartdate)

ただし、関数内で文字列を日付型にキャスト/変換しようとすると失敗します。奇妙なことに、私は次のようなことができます

    Public Function CalculateWorkDays(ByVal strstartdate As String) As String
       Dim startDate as Date
       startDate = Today.AddDays(30)
       Return startDate.ToString()
    End Function

どんな助けでも大歓迎です。

4

1 に答える 1

0

渡していた日付文字列を Date 型が理解できるものに再フォーマットすることで、この問題を解決することができました。

私のクエリは、次の形式で日付を渡していました 30/01/2012 (dd/mm/yyyy)

日付文字列を (mm/dd/yyyy) に再フォーマットすることで、できるようになりました

 Dim mydate as Date   
 mydate = Date.Parse(strmydate)

日付をそのようにフォーマットする必要がある理由はまだわかりませんが、CultureInfoのデフォルトに関係していると思います。

これが誰かに役立つことを願っています。

于 2012-12-07T13:22:32.753 に答える