Foxtable(狐表)用户栏目专家坐堂 → 改后的代码,求帮忙看下,有没有什么问题,谢谢!


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

主题:改后的代码,求帮忙看下,有没有什么问题,谢谢!

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


加好友 发短信
等级:四尾狐 帖子:902 积分:8258 威望:0 精华:0 注册:2012/10/19 13:55:00
改后的代码,求帮忙看下,有没有什么问题,谢谢!  发帖心情 Post By:2019/7/27 11:04:00 [只看该作者]

1、AfterOpenProject中,加入代码:

DataTables("客户表").datacols("客户").RaiseDataColChanged()


2、客户表的表属性DataColChanged,加入代码:

e.DataRow("用户名") = user.name


If e.DataCol.Name = "客户" Then

    e.DataRow("日志时间") = Date.Now

End If


Dim d As Date = Date.Now

DataTables("客户表").ReplaceFor("日志", True, "日志时间 <= #" & d.AddMinutes(-10) & "#")

DataTables("客户表").ReplaceFor("日志", False, "日志时间 > #" & d.AddMinutes(-10) & "#")


'没做天数:

If e.DataCol.name = "客户" Then

    If e.DataRow.IsNull("客户")  Then

            e.DataRow("没做天数") = Nothing        

    Else

        Dim fdr = DataTables("入库表").find("客户='" & e.DataRow("客户") & "' and 入库日期 <= #" & Date.now & "#", "入库日期 desc")

        If fdr Is Nothing Then

            e.DataRow("没做天数") = -1

        Else

            Dim sp As TimeSpan = Date.now - cdate(fdr("入库日期"))

            e.DataRow("没做天数") = sp.TotalDays

        End If

    End If

End If


结果导致重复重算,拖慢运行速度。


现该代码为:


1、控件按钮的单击事件:

DataTables("客户表").datacols("客户").RaiseDataColChanged()


2、客户表的表属性DataColChanged,加入代码:

'没做天数:

If e.DataCol.name = "客户" Then

    If e.DataRow.IsNull("客户")  Then

        e.DataRow("没做天数") = Nothing

    Else

        Dim fdr = DataTables("入库表").find("客户='" & e.DataRow("客户") & "' and 入库日期 <= #" & Date.now & "#", "入库日期 desc")

        If fdr Is Nothing Then

            e.DataRow("没做天数") = -1

        Else

            Dim sp As TimeSpan = Date.now - cdate(fdr("入库日期"))

            e.DataRow("没做天数") = sp.TotalDays

        End If

    End If

End If


If e.DataCol.Name = "用户名"

    e.DataRow("用户名") = user.name

End If


Select Case e.DataCol.Name

    Case "客户","日志时间"

        If e.DataCol.Name = "客户" Then

            e.DataRow("日志时间") = Date.Now

        End If

End Select


Dim d As Date = Date.Now

Select Case e.DataCol.Name

    Case "日志","日志时间"

        DataTables("客户表").ReplaceFor("日志", True, "日志时间 <= #" & d.AddMinutes(-10) & "#")

        DataTables("客户表").ReplaceFor("日志", False, "日志时间 > #" & d.AddMinutes(-10) & "#")

End Select


问题:

1、改后,每次点击该控件按钮重置列后,在项目中,每点选一行,该行左侧的序号都会变橘红色,直至项目保存数据才能恢复正常,求解决?

2、改后的代码,求帮忙看下,有没有什么问题,谢谢!


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110825 积分:564069 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/27 11:21:00 [只看该作者]

橘红色表示列被修改了,RaiseDataColChanged就会触发DataColChanged事件,在事件里有改了某个列的值,使得这一行的状态变成了被修改的状态,这不是很正常吗?

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


加好友 发短信
等级:四尾狐 帖子:902 积分:8258 威望:0 精华:0 注册:2012/10/19 13:55:00
回复:(有点蓝)橘红色表示列被修改了,RaiseDataCol...  发帖心情 Post By:2019/7/27 11:29:00 [只看该作者]

能帮我看下,这上面,改好的代码,有没有问题吗?或者有什么可以修改的地方?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110825 积分:564069 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/27 11:42:00 [只看该作者]

看不懂这个代码到底要做什么?

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


加好友 发短信
等级:四尾狐 帖子:902 积分:8258 威望:0 精华:0 注册:2012/10/19 13:55:00
回复:(有点蓝)看不懂这个代码到底要做什么?  发帖心情 Post By:2019/7/27 16:18:00 [只看该作者]

问题项目已经上传,请老师看一下?

橘红色表示列被修改了,RaiseDataColChanged就会触发DataColChanged事件,在事件里有改了某个列的值,使得这一行的状态变成了被修改的状态,这很正常,
但是,请按照我的测试方案下来,就会发现问题了!
1、在完全进入项目之后,进入客户表,左侧的序号全是红的,
2、先保存,变成蓝色后,
3、再点击左侧的重置列按钮,会发现此时的客户表序号都是蓝色的,
4、但是再点选其他行,接下来选择的每一行都会变成橘红色,这就不正常了吧!?

这是修改的项目:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:cs111.zip



这是修改的项目:
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:cs222.zip



这是我针对,客户表属性的DataColChanged事件中的重复重置问题,修改了的代码,但貌似效果不好,求指正?

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110825 积分:564069 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/27 17:22:00 [只看该作者]

我边测试正常。这个应该是一些电脑系统刷新的问题,可以加代码强制刷新一下

Tables("客户表").StopRedraw
DataTables("客户表").datacols("客户").RaiseDataColChanged()
Tables("客户表").ResumeRedraw

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


加好友 发短信
等级:四尾狐 帖子:902 积分:8258 威望:0 精华:0 注册:2012/10/19 13:55:00
回复:(有点蓝)我边测试正常。这个应该是一些电脑系...  发帖心情 Post By:2019/7/28 0:36:00 [只看该作者]

按照您的代码修改后,还是有十几秒的滞缓时间,
我将客户表DataColChanged事件代码中的其余部分都去掉后,发现完全没有滞缓状态了,也就是DataColChanged事件代码改为:
'没做天数:
If e.DataCol.name = "客户" Then
    If e.DataRow.IsNull("客户")  Then
        e.DataRow("没做天数") = Nothing
    Else
        Dim fdr = DataTables("入库表").find("客户='" & e.DataRow("客户") & "' and 入库日期 <= #" & Date.now & "#", "入库日期 desc")
        If fdr Is Nothing Then
            e.DataRow("没做天数") = -1
        Else
            Dim sp As TimeSpan = Date.now - cdate(fdr("入库日期"))
            e.DataRow("没做天数") = sp.TotalDays
        End If
    End If
End If

现在就是求客户表DataColChanged事件代码中余下的这部分代码应该怎么改,才能使不滞缓?:

e.DataRow("用户名") = user.name

If e.DataCol.Name = "客户" Then
    e.DataRow("日志时间") = Date.Now
End If

Dim d As Date = Date.Now
DataTables("客户表").ReplaceFor("日志", True, "日志时间 <= #" & d.AddMinutes(-10) & "#")
DataTables("客户表").ReplaceFor("日志", False, "日志时间 > #" & d.AddMinutes(-10) & "#")

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


加好友 发短信
等级:四尾狐 帖子:902 积分:8258 威望:0 精华:0 注册:2012/10/19 13:55:00
回复:(fengwenliuyan)回复:(有点蓝)我边测试正常...  发帖心情 Post By:2019/7/28 16:37:00 [只看该作者]

求帮助

 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110825 积分:564069 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/28 22:53:00 [只看该作者]

e.DataRow("用户名") = user.name放到datarowadding

If e.DataCol.Name = "客户" Then
    e.DataRow("日志时间") = Date.Now
End If

If e.DataCol.Name = "日志时间" Then
Dim d As Date = Date.Now
DataTables("客户表").ReplaceFor("日志", True, "日志时间 <= #" & d.AddMinutes(-10) & "#")
DataTables("客户表").ReplaceFor("日志", False, "日志时间 > #" & d.AddMinutes(-10) & "#")
end if

 回到顶部