以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助,关于同步异步函数怎么用  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=139273)

--  作者:zto001
--  发布时间:2019/8/9 14:13:00
--  求助,关于同步异步函数怎么用
求助,关于同步异步函数怎么用
我试着做了下上面的例子。http://www.foxtable.com/mobilehelp/index.htm?page=3269.htm
定义一个名为AddTotal的函数,其代码为:

Total = Total + Args(0)
TCount
  = TCount - 1
If
Tcount = 0 Then
    MessageBox.Show("计算完成,结果为:" & Total)

End
If

Total 这个变量没办法放到全局代码里面

--  作者:有点蓝
--  发布时间:2019/8/9 14:14:00
--  

首先我们在全局代码中定义一个Public变量:

Public Total As Integer

关于Public变量,参考:Public变量


--  作者:zto001
--  发布时间:2019/8/9 15:36:00
--  
前面懂了
想问问
Functions.BeginSyncExecute("AddTotal",Sum
这个是什么意思?


--  作者:zto001
--  发布时间:2019/8/9 15:43:00
--  
我想要异步函数按照顺序执行。之前我只用了异步函数一直漏掉一些

我想要的流程是这样的
判断是否有该订单  \'(同步函数)
是执行打印  ’(改为异步函数)


--  作者:有点蓝
--  发布时间:2019/8/9 15:43:00
--  
参考:http://www.foxtable.com/mobilehelp/topics/3273.htm

同步调用AddTotal函数

--  作者:zto001
--  发布时间:2019/8/9 15:49:00
--  
\'\'\'
Dim bh As WinForm.TextBox = Forms("打印").Controls("TextBox1")
Dim dr As DataRow = DataTables("订单").SQLFind("[系统单号] = \'"& bh.value &"\'")
If dr IsNot Nothing Then
    Dim drc As DataRow = DataTables("操作记录").Find("[系统单号] = \'"& bh.value &"\'")
    If drc Is Nothing Then
        Dim doc As New PrintDoc \'定义一个报表
        doc.PageSetting.Width = 100 \'纸张宽度为100毫米
        doc.PageSetting.Height = 180 \'纸张高度为120毫米
        Dim rt As New prt.RenderTable() \'定义一个表格对象
        Doc.PageSetting.LeftMargin = 0 \'设置左边距
        Doc.PageSetting.RightMargin = 0 \'设置右边距
        Doc.PageSetting.TopMargin = 0 \'设置上边距
        Doc.PageSetting.BottomMargin = 0 \'设置下边距
  这一节是打印代码
        rt.Cells(7,2).RenderObject = rg1  \'将单元格内容设置为图片对象rm
        doc.Body.Children.Add(rt) \'将表格对象加入到报表中
        Doc.Print   () \'预览报表

        Audio.Play(SpecialFolder.DesktopDirectory & "\\系统\\扫描.wav")
        Dim d As Row = Tables("操作记录").AddNew()
        d("系统单号")= bh.value
        d("操作类型")="打单"
        d("操作人")=_Name
        d("操作时间")=Date.Now
        d.Save
    Else
        Audio.Play(SpecialFolder.DesktopDirectory & "\\系统\\错误.wav")
    MessageBox.Show("系统已存在!")
    End If
Else
    Audio.Play(SpecialFolder.DesktopDirectory & "\\系统\\错误.wav")
    MessageBox.Show("系统无此单记录,请核对!")
   
End If



--  作者:zto001
--  发布时间:2019/8/9 15:50:00
--  
上面这段代码里面中间那段红色代码我希望用异步函数指定,但是不能有漏,并且按照顺序打印出来。能行吗?
--  作者:zto001
--  发布时间:2019/8/9 15:53:00
--  
还是没思绪
--  作者:有点蓝
--  发布时间:2019/8/9 16:11:00
--  
把红色代码放入一个内部函数

调用
……
Dim drc As DataRow = DataTables("操作记录").Find("[系统单号] = \'"& bh.value &"\'")
    If drc Is Nothing Then
Functions.AsyncExecute("函数名称")



--  作者:zto001
--  发布时间:2019/8/9 16:25:00
--  
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2019.8.3.1
错误所在事件:
详细错误信息:
连接未关闭。 连接的当前状态为正在连接。
这是怎么回事?