以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  死机  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=157898)

--  作者:nbsugu_z
--  发布时间:2020/11/2 10:18:00
--  死机
老师,以下是将wy_cpd0表所有记录 加到总表wy_cpd中,不重复加。为什么在运行时一直程序死机,二个表结构一样的


Dim Result As DialogResult
Result = MessageBox.Show("您确认要结转数据到总数据库吗? ", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If Result = DialogResult.Yes Then
    \'结转电费
    DataTables("wy_cpd").AllowEdit = True
    For Each dr1 As Row In Tables("wy_cpd0").Rows
        Dim dr2 As DataRow = DataTables("wy_cpd").find("yy= " & dr1("yy") & " and yy1=" & dr1("yy1") & " and  khbh=\'" & dr1("khbh") & "\'")
        If dr2 Is Nothing Then
            dr2 = DataTables("wy_cpd").AddNew()
            For Each dc As DataCol In DataTables("wy_cpd0").DataCols
                dr2(dc.Name) = dr1(dc.name)
            Next
        End If
    Next
    
    \'保存所有表
    For Each dt As DataTable In DataTables
        dt.Save()
    Next
    MessageBox.Show("结转成功!", "提示")
 End If

--  作者:有点蓝
--  发布时间:2020/11/2 10:19:00
--  
添加了多少行数据?如果数据比较多,等待代码运行结束肯定是需要比较长时间的,这个时间内程序肯定无法做其它操作的
--  作者:nbsugu_z
--  发布时间:2020/11/2 10:26:00
--  
100行左右
--  作者:有点蓝
--  发布时间:2020/11/2 10:50:00
--  
1、去掉保存所有表的代码,如果代码只改了一个表的数据,就只保存这个表。如果其它表增加和修改了比较多的数据,保存也是要时间的,特别是远程数据库,保存需要更多的时间
2、检查wy_cpd和需要其它保存数据的表的表事件,修改和保存也会触发相应的表事件,这些都是要时间的

--  作者:nbsugu_z
--  发布时间:2020/11/2 12:42:00
--  
OK