以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 改后的代码,求帮忙看下,有没有什么问题,谢谢! (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=138279) |
||||||||
-- 作者:fengwenliuyan -- 发布时间: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、改后的代码,求帮忙看下,有没有什么问题,谢谢! |
||||||||
-- 作者:有点蓝 -- 发布时间:2019/7/27 11:21:00 -- 橘红色表示列被修改了,RaiseDataColChanged就会触发DataColChanged事件,在事件里有改了某个列的值,使得这一行的状态变成了被修改的状态,这不是很正常吗? |
||||||||
-- 作者:fengwenliuyan -- 发布时间:2019/7/27 11:29:00 -- 回复:(有点蓝)橘红色表示列被修改了,RaiseDataCol... 能帮我看下,这上面,改好的代码,有没有问题吗?或者有什么可以修改的地方? |
||||||||
-- 作者:有点蓝 -- 发布时间:2019/7/27 11:42:00 -- 看不懂这个代码到底要做什么? |
||||||||
-- 作者:fengwenliuyan -- 发布时间:2019/7/27 16:18:00 -- 回复:(有点蓝)看不懂这个代码到底要做什么? 问题项目已经上传,请老师看一下? 橘红色表示列被修改了,RaiseDataColChanged就会触发DataColChanged事件,在事件里有改了某个列的值,使得这一行的状态变成了被修改的状态,这很正常, 但是,请按照我的测试方案下来,就会发现问题了! 1、在完全进入项目之后,进入客户表,左侧的序号全是红的, 2、先保存,变成蓝色后, 3、再点击左侧的重置列按钮,会发现此时的客户表序号都是蓝色的, 4、但是再点选其他行,接下来选择的每一行都会变成橘红色,这就不正常了吧!? 这是修改前的项目:
这是修改后的项目:
这是我针对,客户表属性的DataColChanged事件中的重复重置问题,修改了的代码,但貌似效果不好,求指正?
|
||||||||
-- 作者:有点蓝 -- 发布时间:2019/7/27 17:22:00 -- 我边测试正常。这个应该是一些电脑系统刷新的问题,可以加代码强制刷新一下 Tables("客户表").StopRedraw DataTables("客户表").datacols("客户").RaiseDataColChanged() Tables("客户表").ResumeRedraw |
||||||||
-- 作者:fengwenliuyan -- 发布时间: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 -- 发布时间:2019/7/28 16:37:00 -- 回复:(fengwenliuyan)回复:(有点蓝)我边测试正常... 求帮助 |
||||||||
-- 作者:有点蓝 -- 发布时间: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 |