我知道Access不直接支持网络日。我还知道我可以使用VBA来求解网络天数中表单上一条记录的任意两个值。然而,我想解决一个表中所有记录的网络天数。示例:需要找到在少于一定数量的“工作周天数”内打开/完成/任何记录的百分比)要做到这一点,我需要一列每个项目花费了多少网络日。
我在查询设计中尝试了以下方法来创建新字段。
2)+1
(工作日([起始日期],3)>5) -(工作日([关闭日期],3)-4)*(工作日([关闭日期],3)>4)
((旁注:在设计视图中,我在查询的“字段”区域中输入了一个连续的行。有点像你如何通过使用…Newfieldname:[Field1]*[Field2]直接创建一个新字段。我只是在有人认为有必要编辑我的帖子并将测试移到自己的行时提出这个问题的。谁知道可能我使用测试:([广泛的东西])是问题的一部分!!!?如果有人真的在说“这是我在某处“拥有”的“东西”,那就别管原始帖子了。)
我尝试过的另一个选择是在VBA中创建一个新字段,但具有fld。表达式引用函数。(我认为我做不到,甚至可能做得不正确……)
注意:“tblVBA是一个临时表(我不存储这些计算值。)
Private Sub btncreate_Click()
Dim db As DAO.Database
Dim TD As DAO.TableDef
Dim fld As DAO.Field
Set db = CurrentDb()
Set TD = db.TableDefs("tblVBA")
Set fld = TD.CreateField("TotNetWrkDays", dbInteger)
fld.Expression = wNetworkdays([Initiated Date], [Closed Date])
TD.Fields.Append fld
MsgBox "Added"
End Sub
Public Function wNetworkdays(beginDt As Date, endDt As Date) As Integer
Dim tempDt As Date
Dim count As Integer
tempDt = beginDt
For i = 1 To DateDiff("d", beginDt, endDt)
tempDt = DateAdd("d", 1, tempDt)
If Weekday(tempDt, 2) = 6 Or Weekday(tempDt, 2) = 7 Then 'Define your scheduled day off, you can define weekday instead of weekend
count = count + 1
End If
Next i
wNetworkdays = DateDiff("d", beginDt, endDt) + 1 - count
End Function
我可以在excel中完成这一切当然。。。但是,在excel中只能找到db之外的一些简单统计信息,这将是不幸的。
更新:2017年11月2日下午2:30
*我仍然需要为所有关闭日期不可用的情况添加一个返回Null。。但不管怎样,问题都回答了谢谢!