以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]同步函数与异步的不解  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=160116)

--  作者:fczhaobo
--  发布时间:2021/1/21 8:29:00
--  [求助]同步函数与异步的不解
这是一个自定义函数,用同步和异步出现的结果不一样,不解?
图片点击可在新窗口打开查看此主题相关图片如下:jietu2021.png
图片点击可在新窗口打开查看


\'编号自动生成 用在最后地方
Dim d As Date = Functions.Execute("服务器时间").now
Dim y As Integer = d.Year
Dim m As Integer = d.Month
Dim Days As Integer = d.DaysInMonth(y,m)
Dim fd As Date = New Date(y,m,1) \'获得该月的第一天
Dim ld As Date = New Date(y,m,Days) \'获得该月的最后一天
Dim max As String
Dim bh As String = Format(d,"yyyyMM") \'生成编号的前6位,4位年,2位月.
Dim fxbh As String=Args(0)
Dim idx As Integer
Dim cmd As new sqlcommand
cmd.Conne cti
cmd.CommandText="Sel-ect Max(缴费编号) from {报名缴费} where 分校编号 = \'" & fxbh & "\' and 缴费日期 >= \'" & fd & "\' And 缴费日期 <= \'" & ld & "\'"
max = cmd.ExecuteScalar

If max > "" Then \'如果存在最大编号
    idx = CInt(max.Substring(11,4)) + 1 \'从第七位开始,向查四位,获得最大编号的后三位顺序号,并加1
Else
    idx = 1 \'否则顺序号等于1
End If
max=bh & "-" & fxbh & format(idx,"0000")
Dim drr As DataRow =DataTables("报名缴费").SQLFind("缴费编号=\'" & max & "\'")
If drr Is Nothing Then
     Return max
Else    
    Return Nothing
End If
\'编号自动生成完毕
[此贴子已经被作者于2021/1/21 8:32:44编辑过]

--  作者:fczhaobo
--  发布时间:2021/1/21 8:30:00
--  
这是截图,两种不同的结果,不解
--  作者:有点蓝
--  发布时间:2021/1/21 9:09:00
--  
正常,异步函数没有返回值,也无法获取返回值,因为还没有执行完。如果要等待执行返回,不能使用异步。或者异步函数里把返回值写入全局变量,客户端定时查询变量是否有值