Foxtable(狐表)用户栏目专家坐堂 → 重置列或者在项目代码中设置重置列代码系统接近司机状态


  共有3052人关注过本帖树形打印复制链接

主题:重置列或者在项目代码中设置重置列代码系统接近司机状态

帅哥哟,离线,有人找我吗?
段虎成
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:446 积分:3234 威望:0 精华:0 注册:2019/11/18 9:44:00
重置列或者在项目代码中设置重置列代码系统接近司机状态  发帖心情 Post By:2020/4/1 9:30:00 [只看该作者]

老师您好,下面的代码在重置列或者项目事件中写入强制充值列代码后,系统接近死机状态,代码哪里有问题么老师?请老师帮忙看一下,谢谢!

 

' 自动填充客户分类

(表事件DataColChanged代码)
If e.DataCol.name = "客户信息_客户名称" Then
    Dim dr As DataRow
    dr = DataTables("销售报表").SQLfind("客户名称 = '" & e.DataRow("客户信息_客户名称") & "'") '在默认销售报表不加载的情况下,直接从后台查找
    If e.DataRow("客户信息_客户名称") IsNot Nothing  And dr IsNot Nothing  Then
        e.DataRow("客户信息_客户分类") = "签约客户"
    ElseIf e.DataRow("客户信息_客户名称") IsNot Nothing  And dr Is Nothing Then
        e.DataRow("客户信息_客户分类") = "意向客户"
    End If
End If

'自动计算填写距离最近一次联系时间间隔天数
If e.DataCol.name = "资源跟踪_最近一次联系时间"  Then
    Dim dt1 As Date = e.DataRow("资源跟踪_最近一次联系时间")
    Dim dt2 As Date =e.DataRow("客户信息_客户建档日期")
    Dim dt3 As Date = Date.Today
    Dim JGTS1 As TimeSpan = dt3 - dt2 '没有联系记录
    Dim JGTS2 As TimeSpan = dt3 - dt1 '有联系记录
    Dim TS1 As Integer = JGTS1.Days '没有联系记录
    Dim TS2 As Integer = JGTS2.days  '有联系记录
    If e.DataRow("客户信息_客户分类") = "意向客户"   Then
        If e.DataRow("资源跟踪_最近一次联系时间") <>  #1/1/1 00:00:00#  Then
            e.DataRow("资源跟踪_距离最近一次联系时间间隔天数") = TS2
        Else
            e.DataRow("资源跟踪_距离最近一次联系时间间隔天数") = TS1
        End If
        If e.DataRow("客户信息_客户分类") = "签约客户"   Then
            e.DataRow("资源跟踪_距离最近一次联系时间间隔天数") = 0
        End If
    End If
End If

 

 

' 每次打开之后强制充值列

(项目事件代码)
DataTables("客户管理系统").DataCols("客户信息_客户名称").RaiseDataColChanged()
DataTables("客户管理系统").DataCols("资源跟踪_最近一次联系时间").RaiseDataColChanged()
DataTables("客户管理系统").DataCols("资源跟踪_距离最近一次联系时间间隔天数").RaiseDataColChanged()

 


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110450 积分:562116 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/1 9:57:00 [只看该作者]

RaiseDataColChanged会导致所有一级加载的数据都重新触发DataColChanged代码进行计算,当然会费时。

"客户信息_客户名称"没有必要重算吧,也没有关于时间间隔天数列的触发,重置下面即可
DataTables("客户管理系统").DataCols("资源跟踪_最近一次联系时间").RaiseDataColChanged()

 回到顶部
帅哥哟,离线,有人找我吗?
段虎成
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:446 积分:3234 威望:0 精华:0 注册:2019/11/18 9:44:00
  发帖心情 Post By:2020/4/1 10:12:00 [只看该作者]

时间间隔天数这个,有一段代码内有上传。

 

'跟踪异常客户自动划转到公海
Select Case e.DataCol.Name
    Case  "资源跟踪_距离最近一次联系时间间隔天数"
        If e.NewValue > 7  Then
            Dim nmsKHK() As String = {"客户信息_客户名称","客户信息_所属行业","客户信息_主营产品","客户信息_省份或直辖市","客户信息_市","客户信息_经营地址","客户信息_社会统一信用代码","客户信息_法人代表","客户信息_联系人","客户信息_联系电话","客户信息_客户来源","资源位置_库主姓名","客户信息_客户建档日期","资源位置_分支机构"}
            Dim nmsYCK() As String = {"客户信息_客户名称","客户信息_所属行业","客户信息_主营产品","客户信息_省份或直辖市","客户信息_市","客户信息_经营地址","客户信息_社会统一信用代码","客户信息_法人代表","客户信息_联系人","客户信息_联系电话","客户信息_客户来源","原资源位置_库主姓名","客户信息_客户建档日期","原资源位置_分支机构"}
            Dim dr As DataRow = DataTables("异常跟踪资源库").AddNew
            For i As Integer = 0 To nmsKHK.Length - 1
                dr(nmsYCK(i)) = e.DataRow(nmsKHK(i))
           Next
        End If
End Select
DataTables("客户管理系统").DeleteFor("资源跟踪_距离最近一次联系时间间隔天数 > 7")
DataTables("客户管理系统").SQLDeleteFor("资源跟踪_距离最近一次联系时间间隔天数 > 7")

 

 

另外如果客户名称不重置的话,客户分类能自动计算么老师?

 

我应该怎样优化一下这个代码使系统快一点?

 

比如我只对客服分类是意向客户的行进行重置,我代码应该怎样优化?谢谢老师。


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110450 积分:562116 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/4/1 10:36:00 [只看该作者]

Select Case e.DataCol.Name
    Case  "资源跟踪_距离最近一次联系时间间隔天数"
        If e.NewValue > 7  Then
            Dim nmsKHK() As String = {"客户信息_客户名称","客户信息_所属行业","客户信息_主营产品","客户信息_省份或直辖市","客户信息_市","客户信息_经营地址","客户信息_社会统一信用代码","客户信息_法人代表","客户信息_联系人","客户信息_联系电话","客户信息_客户来源","资源位置_库主姓名","客户信息_客户建档日期","资源位置_分支机构"}
            Dim nmsYCK() As String = {"客户信息_客户名称","客户信息_所属行业","客户信息_主营产品","客户信息_省份或直辖市","客户信息_市","客户信息_经营地址","客户信息_社会统一信用代码","客户信息_法人代表","客户信息_联系人","客户信息_联系电话","客户信息_客户来源","原资源位置_库主姓名","客户信息_客户建档日期","原资源位置_分支机构"}
            Dim dr As DataRow = DataTables("异常跟踪资源库").AddNew
            For i As Integer = 0 To nmsKHK.Length - 1
                dr(nmsYCK(i)) = e.DataRow(nmsKHK(i))
           Next
        End If
这种代码放在外面,所有单元格数据更改都会触发,没有必要。建议不要放到表事件里,再说完全没有必要频繁删除数据,项目打开后删除一次即可
DataTables("客户管理系统").DeleteFor("资源跟踪_距离最近一次联系时间间隔天数 > 7")
DataTables("客户管理系统").SQLDeleteFor("资源跟踪_距离最近一次联系时间间隔天数 > 7")
End Select


 回到顶部
帅哥哟,离线,有人找我吗?
段虎成
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:446 积分:3234 威望:0 精华:0 注册:2019/11/18 9:44:00
  发帖心情 Post By:2020/4/1 10:52:00 [只看该作者]

好的老师谢谢!我再研究一下图片点击可在新窗口打开查看

 回到顶部