【问题标题】:MS Access Variable declaration/Overflow issueMS Access 变量声明/溢出问题
【发布时间】:2016-07-12 14:35:50
【问题描述】:

我一直在为我的工作解决这个问题。我正在尝试在 Excel 中创建与 NetworkDays 类似的函数。这将返回两个日期之间的工作日,不包括节假日。这是我重新输入并尝试调整以使其工作的代码示例。变量 dateInc 是一个递增的 var。当我尝试将值设置为等于 startDate 数字时,这似乎溢出了。这个 startdate 反过来会使 dateInc 从开始日期计算到结束日期。我只是不确定这是一个业余错误还是我需要了解的真正问题。我试图添加错误处理以跳过错误并恢复,但这只是所有这些。我对所有建设性的批评持开放态度,欢迎任何关于编码实践和解决方案的建议。

注意:我已尝试适应潜在的不均匀日期值与时间。尽管这并没有改变任何东西,而且我的数据恰好在日期值中没有时间。

Function Workdays(ByRef startDate As Date, ByRef endDate As Date) As Integer
    Dim countDays&, dateInc#, startLong#, endLong#, strSQL$
    Dim rs As Recordset
    Dim db As Database
    'intialize variables to avoid overflow|Note dates are converted to a double
    countDays = 0
    dateInc = 0
    startLong = CDbl(startDate)
    endLong = CDbl(endDate)
    'SQL select statement
    strSQL = "Select holDate from Holidays"
    'Open database using SQL
    Set db = CurrentDb
    Set rs = db.OpenRecordset(strSQL)

    'set the date comparison to the start date's number format
    dateInc = startLong
    Do Until dateInc = endLong

        Select Case Weekday(CDate(dateInc))
            Case vbSaturday
            'Nothing happens
            Case vbSunday
            'Nothing happens

            Case Else
                rs.FindFirst ("holDate = # " & Format(CDate(dateInc), "mm/dd/yyyy") & "#")
                If rs.NoMatch = True Then
                    countDays = countDays + 1
                    End If
        End Select
        dateInc = dateInc + 1
    Loop
    Set rs = Nothing
    Set db = Nothing
    dateInc = 0
    Workdays = countDays
    End Function

【问题讨论】:

  • 您是否尝试过在开始时将变量声明为 Double?
  • @Benno Grimm 是的,我已经尝试过 long 和 double。它没有任何区别。 dateInc 数字似乎总是递增或以某种方式设置为最大值。
  • 我真的不知道为什么会这样,但如果你知道发生溢出的行,用户 MsgBoxes 来检查变量的值(所有变量)和当前数据类型(msdn.microsoft.com/en-gb/library/s4zz68xc.aspx ).. 也许故障排除会在这里为您提供帮助
  • 类型名有用我试试,谢谢!
  • 希望您能找到错误(如果是这样,请考虑为未来遇到相同问题的用户发布答案;))

标签: vba date ms-access overflow


【解决方案1】:

有效!我在家里试过这个,效果很好......我知道我做错了什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-11
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    相关资源
    最近更新 更多