以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何等待一个窗口关闭后再执行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=123940)

--  作者:rjh4078
--  发布时间:2018/8/27 16:30:00
--  如何等待一个窗口关闭后再执行
有一段代码是等待某个窗口里最后保存的数据结果来判断是否执行下一步,但是用独立窗口的时候,这个代码会直接执行,不会等到窗口关闭后执行,如果用模式窗口,因为要参考其他表的内容,又不方便操作,有什么好办法。


--  作者:有点甜
--  发布时间:2018/8/27 16:42:00
--  

先执行代码

 

vars("结束") = False
Do Until vars("结束") = True
    Application.DoEvents
Loop
msgbox("结束了")

 

然后执行

 

vars("结束") = True


--  作者:rjh4078
--  发布时间:2018/8/27 17:58:00
--  
好像不行  这个窗口会被反复打开 

 If e.NewValue IsNot Nothing Then
Do Until  forms("预检单").opened=false then
            If Functions.Execute("预检",e.DataCol.name.Replace("人",""),e.DataRow("_identify"),e.DataTable.name)=False Then
                e.Cancel=True
                MessageBox.show("制程预检未确认,当前操作撤销!","提示")
            End If
            loop
        End If





预检函数

Dim lc As String=args(0)
Dim id As Integer=args(1)
Dim dn As String=args(2)
Dim lt As List(of DataRow)=DataTables("预检项目").SQLSel ect("单据名称=\'" & dn & "\' and 流程名称=\'" & lc & "\'")
Dim lst As List(of DataRow)=DataTables("预检单").SQLSel ect("单据名称=\'" & dn & "\' and 单据ID=\'" & id  & "\' and 流程名称=\'" & lc & "\'")
If lt.count=0 Then
    Return True
Else
    If lst.count=0 Then
        For Each dr As DataRow In lt
            Dim r As Row=Tables("预检单").addnew
            r("预检人")=_username
            Dim time As Date=Functions.Execute("服务器时间")
            r("预检时间")=time
            r("单据名称")=dn
            r("流程名称")=lc
            r("预检项目")=dr("项目名称")
            r("单据id")=id
        Next
        vars("节点")=lc & "预检"
        Forms("预检单").show
        If Forms("预检单").Opened=False Then
            If  vars("预检")=False OrElse DataTables("预检单").sqlSe lect("单据id=\'" & id & "\' and 预检结果_确认=0").count>0 Then
                Return False
            Else
                Return True
            End If
        End If
        
        
    Else
        DataTables("预检单").LoadFilter="单据名称=\'" & dn & "\' and 单据ID=\'" & id & "\' and 流程名称=\'" & lc & "\'"
        DataTables("预检单").Load
        vars("节点")= lc & "预检"
        Forms("预检单").show
        If Forms("预检单").Opened=False Then
            If  vars("预检")=False OrElse DataTables("预检单").sqlSelect("单据id=\'" & id & "\' and 预检结果_确认=0").count>0 Then
                Return False
            Else
                Return True
            End If
        End If
        
    End If
End If


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

1、看懂2楼的代码;

 

2、理解不了的话,单独做个实例发上来测试。


--  作者:rjh4078
--  发布时间:2018/8/27 19:01:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.rar


--  作者:有点蓝
--  发布时间:2018/8/27 20:55:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.zip