以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] compute计算时间的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=124003)

--  作者:81538475
--  发布时间:2018/8/28 18:55:00
--  [求助] compute计算时间的问题
下面这个代码计算的时候,每个任务的第一行修改的时候用时都非常久,下面的行用时却很快。


图片点击可在新窗口打开查看此主题相关图片如下:qq图片20180828185245.png
图片点击可在新窗口打开查看
datacolchanged 代码:

Se/ect Case e.DataCol.name                          
    Case "当月人天","任务人天","任务"  
sum2 = DataTables("XMFP").Compute("Sum(当月人天)","BH =  \'" & e.DataRow("BH") & "\' ")
                dr = DataTables("xmzb").find("BH = \'" & E.DataRow("bh") & "\'")

Dim st As Date = Date.Now
                dr("剩余") = dr("apc") - sum2
                dr("总") = sum2
MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")
end se/ect
[此贴子已经被作者于2018/8/28 18:55:22编辑过]

--  作者:有点甜
--  发布时间:2018/8/28 18:59:00
--  

试试

 

http://www.foxtable.com/webhelp/scr/2218.htm

 


--  作者:81538475
--  发布时间:2018/8/28 21:52:00
--  
放在datacolchanged里面吗
--  作者:有点蓝
--  发布时间:2018/8/28 21:58:00
--  
Select Case e.DataCol.name
    Case "当月人天","任务人天","任务"
SystemReady = False
        sum2 = DataTables("XMFP").Compute("Sum(当月人天)","BH =  \'" & e.DataRow("BH") & "\' ")
        dr = DataTables("xmzb").find("BH = \'" & E.DataRow("bh") & "\'")
        
        Dim st As Date = Date.Now
        dr("剩余") = dr("apc") - sum2
        dr("总") = sum2
SystemReady = True
        MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")
End Select

--  作者:81538475
--  发布时间:2018/8/28 22:18:00
--  
真的好了。这个是因为 有其他事件的代码影响了吗
--  作者:有点蓝
--  发布时间:2018/8/28 22:21:00
--  
是的,应该是触发了其他事件。建议检查一下,这些事件的触发是否必须的,如果是必须的就不能使用SystemReady了
--  作者:81538475
--  发布时间:2018/8/28 23:21:00
--  
找到问题代码在哪里了。。但是看不懂为什么。。
当我改变 当月人天的时候  combobox4 会不停的抖动。
把下面的代码注释掉就好了。可是我看不出来哪里的问题。

图片点击可在新窗口打开查看此主题相关图片如下:2018828-231549.jpg
图片点击可在新窗口打开查看

有一个窗口 combobox1的valuechanged 代码:

Dim cmb As WinForm.ComboBox
Dim cmb3 As WinForm.ComboBox
Dim cmb4 As WinForm.ComboBox
cmb =  Forms("任务插入").Controls("ComboBox1")
cmb3 =  Forms("任务插入").Controls("ComboBox3")
cmb3.ComboList = DataTables("人员信息表").sqlGetComboListString("二级部门"," 部门 = \'" & cmb.value & "\' ")
cmb4 =  Forms("任务插入").Controls("ComboBox4")
If cmb3.text <> "" Then
    cmb4.ComboList = DataTables("人员信息表").sqlGetComboListString("姓名"," 部门 = \'" & cmb.value & "\'and  二级部门 = \'" & cmb3.value & "\'and 状态 <> \'离职\' ")
Else cmb4.ComboList = DataTables("人员信息表").sqlGetComboListString("姓名"," 部门 = \'" & cmb.value & "\'and 状态 <> \'离职\' ")
    
    
End If

If cmb.value <>"" Then
    cmb4.value =""
    cmb3.value = ""
End If

[此贴子已经被作者于2018/8/28 23:21:08编辑过]

--  作者:81538475
--  发布时间:2018/8/28 23:39:00
--  
上面的代码中,找一段,好像影响了 combobox4.。。。
dr("剩余") = dr("apc") - sum2
                dr("总") = sum2


--  作者:有点甜
--  发布时间:2018/8/29 10:13:00
--  
你 cmb4.ComboList  这种代码,应该写到cmb4控件的enter事件才对,不要写到valueChanged事件去。