以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教条件筛选重置列问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=187990)

--  作者:18920118515
--  发布时间:2023/8/25 11:23:00
--  请教条件筛选重置列问题

DataColChanged事件代码如下

Dim RKRQ As DataRow = e.DataRow
    If RKRQ("已售") = False
        If e.NewValue Is Nothing Then
            e.DataRow("库存天数") =  Nothing
            e.DataRow("入库") =  False
            e.DataRow("资源匹配后到车日期") =  Nothing
        Else
            Dim KC As TimeSpan = Date.today - CDate(e.DataRow("入库日期"))
            e.DataRow("库存天数") = KC.TotalDays
            e.DataRow("入库") =  True
            Dim zx As DataRow = e.DataRow
            If zx("入库日期") >= zx("资源匹配日期") And zx.IsNull("资源匹配日期") = False Then
                zx("资源匹配后到车日期") = zx("入库日期")
            ElseIf zx("入库日期") < zx("资源匹配日期") And zx.IsNull("资源匹配日期") = False Then
                zx("资源匹配后到车日期") = zx("资源匹配日期")
            End If
        End If
重置列代码如下:
Dim Filter As String
    Filter = "已售 = false"
    DataTables("商品车库存基础表").DataCols("生产日期").RaiseDataColChanged(Filter)
    DataTables("商品车库存基础表").DataCols("入库日期").RaiseDataColChanged(Filter)


请教老师,按照条件重置列后,DataColChanged事件代码执行错误,执行过程不辩别“库存天数”是否为空,这是什么原因,该如何解决

--  作者:有点蓝
--  发布时间:2023/8/25 11:25:00
--  
先看看:http://www.foxtable.com/webhelp/topics/1522.htm

然后说明一下这个代码想实现什么功能

--  作者:18920118515
--  发布时间:2023/8/25 11:35:00
--  
老师:
1- DataColChanged事件代码的目的是针对“入库日期”计算库存天数
2- 重置列代码的目的是每天重算库存天数

--  作者:有点蓝
--  发布时间:2023/8/25 11:54:00
--  
Dim zx As DataRow = e.DataRow
Select
 Case e.DataCol.Name
    
Case "
入库日期"
   If zx("已售") = False
        If zx.isnull("入库日期") Then
            zx("库存天数") =  Nothing
            zx("入库") =  False
            zx("资源匹配后到车日期") =  Nothing
        Else
            Dim KC As TimeSpan = Date.today - CDate(zx("入库日期"))
            zx("库存天数") = KC.TotalDays
            zx("入库") =  True
            If zx("入库日期") >= zx("资源匹配日期") And zx.IsNull("资源匹配日期") = False Then
                zx("资源匹配后到车日期") = zx("入库日期")
            ElseIf zx("入库日期") < zx("资源匹配日期") And zx.IsNull("资源匹配日期") = False Then
                zx("资源匹配后到车日期") = zx("资源匹配日期")
            End If
        End If
End Select
--  作者:18920118515
--  发布时间:2023/8/25 12:16:00
--  
谢谢老师