0

我正在尝试使用报表设计器 V2.0 创建一个报表,并编写了一个 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)

但是在函数中将字符串转换/转换为 Date 类型的任何尝试都失败了。奇怪的是我可以做类似的事情

    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 回答