以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  窗体AfterClose事件代码【运行时导致系统一直在写数据,程序出现假死,怎么解决呢?】  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=173022)

--  作者:cnsjroom
--  发布时间:2021/11/11 11:09:00
--  窗体AfterClose事件代码【运行时导致系统一直在写数据,程序出现假死,怎么解决呢?】
窗体AfterClose事件代码【运行时导致系统一直在写数据,程序出现假死,怎么解决呢?】
Tables("镜片物料").Filter = ""
Tables("镜片物料").DataTable.Save
Functions.Execute("遍历增加镜片到物料表")
Functions.Execute("遍历增加")
For Each r As Row In Tables("镜片物料").rows
    If r.Locked=False Then
        r.Locked=True
    End If
Next



Functions.Execute("遍历增加镜片到物料表")内部函数事件代码如下:
Dim dr1 As Table = Tables("物料表")
Dim dr As DataRow
Dim Products As List(Of String)
Products = DataTables("镜片物料").GetValues("uuid")
For Each Product As String In Products
    output.Show("库存uuid:"& Product)
    dr = DataTables("物料表").Find("uuid = \'" & Product & "\'")
    If dr IsNot Nothing Then \'如果找到的话
        output.Show("镜架uuid:"& Product)
    Else
        output.Show("不存在的镜架uuid:"& Product)
        dr1.AddNew
        dr1.Current("uuid")= Product
        dr1.Current("类别")= "镜片"
        dr1.DataTable.Save
    End If
Next
DataTables("物料表").DataCols("uuid").RaiseDataColChanged()

遍历追加内部 函数代码如下:
Dim dr As DataRow
Dim dr1 As Table
Dim Products As List(Of String())
Products = DataTables("镜片物料").GetValues("uuid|产品名|初始库存")
For Each Product As String() In Products
    dr = DataTables("库存表").Find("uuid = \'"&Product(0)&"\'and 类别=\'镜片\'")
    If dr IsNot Nothing Then \'如果找到的话
        dr("入库")=Product(2)
    Else
        dr1 = Tables("库存表")
        dr1.AddNew
        dr1.Current("产品名")=Product(1)
        dr1.Current("入库")=Product(2)
        dr1.Current("日期")=now.today
        dr1.Current("类别")="镜片"
        dr1.Current("uuid")=Product(0)
        dr1.Save
    End If
Next

--  作者:有点蓝
--  发布时间:2021/11/11 11:38:00
--  
在函数最后保存一次即可,没有必要每添加一行就保存一次。

一直在写数据】是否正常的写数据?如果行数比较多,程序在等待执行完毕,这个是正常的。