【问题标题】:QRY returning error if value is blank?如果值为空,QRY 返回错误?
【发布时间】:2012-07-19 18:53:18
【问题描述】:

我正在运行以下表达式来比较 2 个日期的差异。如果两个日期都在单元格中,我希望它返回 0,但如果 Date2 为空白,我希望显示差异。现在,如果 date2 中没有日期,我只会得到 #ERROR。任何想法将不胜感激。

expr2: NetWorkDays([Date1],[Date2])

Option Compare Database 

Public Function NetWorkdays(dteStart As Date, dteEnd As Date) As Integer 

Dim intGrossDays As Integer 
Dim dteCurrDate As Date 
Dim i As Integer 

intGrossDays = DateDiff("d", dteStart, dteEnd) 
NetWorkdays = 0 

For i = 0 To intGrossDays 
dteCurrDate = dteStart + i 
If Weekday(dteCurrDate, vbMonday) < 6 Then 
End If 
Next i 

End Function

【问题讨论】:

  • 你打算用NetWorkdays = 0做什么
  • 有时该字段是空白的,如果是这样,我需要知道自从输入第一个字段日期以来它已经空白了多长时间
  • 你能把代码贴在你调用函数的地方吗?
  • 我只使用 NetWorkDays([Date1],[Date2]) 而 Date2 是空白的。如果我做 NetWorkdays(#2012-1-1#,Null),我会得到无效使用 Null

标签: ms-access


【解决方案1】:

如果您不从函数中删除 NetWorkdays = 0,该函数将始终返回 0,如果您不将调用函数的位置包装在如下 if 语句中,您将继续收到错误:

If Not IsNull(Date2) Then
txtResult = NetWorkdays(Date1, Date2)
Else
txtResult = 0
End If

txtResult 是您要在其中显示结果的文本框。

您可能想查看此链接http://msdn.microsoft.com/en-us/library/bb258196(v=office.12).aspx。这是一个用于计算两个日期之间的工作日数的函数。

使用这个函数,你应该得到你想要的结果:

If Not IsNull(Date2) Then
txtResult = 0
Else
txtResult = Work_Days(Date1, Now())
End If

【讨论】:

  • 仍然收到#ERROR not sure
  • 谢谢,如果单元格为空,我正在尝试区分 date1 和 Now()/todays 日期。如果 date2 包含一个日期输出一个零。
  • 假设您要使用提供的链接中的功能,我会调整我的答案以解决这个问题。
  • 对不起,我一直在编辑我的答案。我对date2感到困惑。你确实想说 Not IsNull。该功能也是复制/粘贴。您根本不必编辑它。
  • 我在尝试该链接/代码时收到类型不匹配错误? Work_Days(#2012-1-1#, "") 感谢您的帮助 如果日期 2 中有日期,则代码可以工作,但是当 date2 为“”时我需要它工作,所以这将是 date1 和 now
猜你喜欢
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-06
  • 1970-01-01
  • 2014-02-07
  • 2021-04-29
相关资源
最近更新 更多