以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]日期判断  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=143498)

--  作者:lgj716330
--  发布时间:2019/11/26 21:06:00
--  [求助]日期判断
For Each nm() As String In DataTables("统计表2").GetValues("开店日期|关店日期")
    Dim dr As DataRow = DataTables("费用情况_Table1").AddNew()
    dr("开店日期") = nm(0)
    dr("关店日期") = nm(1)
    dr("销售金额") =DataTables("统计表2").Compute("Avg(销售金额)","开店日期 = \'" & nm(0) & "\' And 关店日期 = \'" & nm(1) & "\'")
next

出现以下提示
详细错误信息:
无法在 System.DateTime 和 System.String 上执行“=”操作。



--  作者:有点蓝
--  发布时间:2019/11/27 9:21:00
--  
For Each nm() As String In DataTables("统计表2").GetValues("开店日期|关店日期")
    Dim dr As DataRow = DataTables("费用情况_Table1").AddNew()
msgbox(nm(0) & "|" & nm(1)) ‘这里显示什么内容’
    dr("开店日期") = nm(0)
    dr("关店日期") = nm(1)
    dr("销售金额") =DataTables("统计表2").Compute("Avg(销售金额)","开店日期 = #" & nm(0) & "# And 关店日期 = #" & nm(1) & "#")
next

--  作者:lgj716330
--  发布时间:2019/11/28 20:36:00
--  
Dim d1 As Date = e.DataRow("开店日期")
Dim d2 As Date = e.DataRow("关店日期")
Dim d3 As Date = e.DataRow("查询截止日期")
Dim d4 As Date = e.DataRow("查询初始日期")
Dim y1 As Integer = d1.year
Dim y2 As Integer = d2.year
Dim y3 As Integer = d3.year
Dim y4 As Integer = d4.year
Dim m1 As Integer = d1.month
Dim m2 As Integer = d2.month
Dim m3 As Integer = d3.month
Dim m4 As Integer = d4.month

Select Case e.DataCol.Name 
Case "查询截止日期","开店日期","关店日期","查询初始日期"
If d1>=d4 And d1<=d3 And e.DataRow.IsNull("开店日期") = False And e.DataRow.IsNull("关店日期") Then
e.DataRow("当期经营月数") = (e.DataRow("查询截止日期")-e.DataRow("开店日期") + 1)/30
ElseIf (d1>=d4 And d1<=d3) And (d2>=d4 And d2<=d3) And e.DataRow.IsNull("开店日期") = False And e.DataRow.IsNull("关店日期")= False  Then
e.DataRow("当期经营月数") = (e.DataRow("关店日期")-e.DataRow("开店日期") + 1)/30
ElseIf (d2<d4 And e.DataRow.IsNull("关店日期")= False)  Or d1>d3  Then
e.DataRow("当期经营月数") = 0
Else
e.DataRow("当期经营月数") = m3-m2+1
End If
End Select


重置其中一列的时候出现以下错误信息
详细错误信息:
调用的目标发生了异常。
重载决策失败,因为没有 Public“+”可以用这些参数调用:
    \'Public Shared Operator +(t1 As System.TimeSpan, t2 As System.TimeSpan) As System.TimeSpan\':
        与参数“t2”匹配的参数无法从“Integer”转换为“TimeSpan”。

--  作者:有点蓝
--  发布时间:2019/11/29 9:05:00
--  
e.DataRow("当期经营月数") = (e.DataRow("查询截止日期")-e.DataRow("开店日期") + 1)/30

改为:
e.DataRow("当期经营月数") = ((cdate(e.DataRow("查询截止日期"))-cdate(e.DataRow("开店日期"))).TotalDays+ 1)/30


Dim y,m,d As Integer
DateYMD(e.DataRow("开店日期"),e.DataRow("查询截止日期"),y,m,d)
e.DataRow("当期经营月数") = m + 1