以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] datacolchanged 事件  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=87984)

--  作者:zcgmxf
--  发布时间:2016/7/24 10:24:00
--  [求助] datacolchanged 事件

老师,我的一个表的datacolchanged 有多个 sqlfind 和 SQLDeleteFor 导致打开窗口时速度明显变慢,

是否可以将其写到窗口的控件上?

 

If e.DataCol.Name = "确认狂苗费"  Then
    If e.DataRow("确认狂苗费") = True Then
        Dim nma() As String = {"部门","接诊医生","科室单号","病人姓名","狂苗名称","狂苗单位","狂苗售价","购买疫苗数量","狂苗生产厂家","狂苗规格","剂型","确认首次接种"}  \'A表数据来源列
        Dim nmb() As String = {"收费部门","开单人","科室单号","缴费人","收费项目","单位","单价","数量","生产厂家","规格","剂型","确认开单"}  \'B表数据接收列
        Dim dh As  DataRow = DataTables("收费明细").SQLFind("[科室单号] = \'" & e.DataRow("科室单号") & "\' and [收费项目] = \'" & e.DataRow("狂苗名称") & "\'")
        If dh Is Nothing Then
            dh = DataTables("收费明细").AddNew()
        End If
        For i As Integer = 0 To nma.Length - 1
            dh(nmb(i)) = e.DataRow(nma(i))
        Next
        dh.save
    Else
        DataTables("收费明细").SQLDeleteFor("[科室单号] = \'" & e.DataRow("科室单号") & "\'and [收费项目] = \'" & e.DataRow("狂苗名称") & "\'")
    End If
End If


--  作者:大红袍
--  发布时间:2016/7/24 10:45:00
--  
 你是不是重置列了?如果你不重置列,不会触发datacolchanged事件,不执行事件,是不会触发代码的。
--  作者:zcgmxf
--  发布时间:2016/7/24 10:47:00
--  
这个表里没有重置列,另外的表有重置列
--  作者:zcgmxf
--  发布时间:2016/7/24 10:51:00
--  

这个表里没有重置列,另外的表有重置列。这个表绑定的窗口中的控件有引用下拉窗口, 那个窗口中的表有重置列(DropDownForm )窗口。 如果把这个表datacolchanged 事件中的 sqlfind SQLDeleteFor 去掉后

打开窗口就很快。我一直在想,打开窗口怎么会触发datacolchanged 事件。

[此贴子已经被作者于2016/7/24 10:55:27编辑过]

--  作者:大红袍
--  发布时间:2016/7/24 11:02:00
--  

 datacolchanged事件加入msgbox,看看是否执行了。

 

 如果执行了,肯定是你有代码影响。