以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]自定义函数还是不知如何使用,请老师看下  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=149185)

--  作者:huangfanzi
--  发布时间:2020/4/25 22:40:00
--  [求助]自定义函数还是不知如何使用,请老师看下
服务端的ReceivedMessage
If e.Message = ":czbh:" Then
    Functions.Execute("重置编号")
    e.ReturnValue = "重置编号成功!"
End If

服务端的自定义函数“重置编号”
MessageBox.Show("我重置编号了!")
Return Nothing

我现在在客户端输入以下代码:
If QQClient.Ready Then
    Dim msg As String = QQClient.SendWait(":czbh:",5)
    If msg = "" Then
        Popmessage("未获服务器响应!","提示",PopIconEnum.Error)
    Else
        Popmessage( msg,"提示",PopIconEnum.Infomation)
    End If
End If

在实际使用中,MessageBox.Show("我重置编号了!") 会用其他代码替代,现在执行的结果是,服务端是弹出了 “我重置编号了!”,可是客户端确返回 "未获服务器响应!",肯定有自定义函数有地方写错了,估计还是个低级错误,可我就是不会啊,请老师看下,谢谢!

--  作者:有点蓝
--  发布时间:2020/4/26 10:24:00
--  
不要使用MessageBox.Show测试,提示框弹出后,如果不及时关闭,后面的代码是不会执行的,也就是服务器被阻塞不能返回响应,客户端就会超时
--  作者:huangfanzi
--  发布时间:2020/4/26 10:28:00
--  
哪上面的写法 对吗?
函数中要替代 MessageBox.Show 代码如下:
Dim dt5 As DataTable
Dim cmd5 As New SQLCommand
cmd5.C
cmd5.CommandText = "S elect 类型,Year(日期) As 年, Month(日期) As 月,Max(批号) As 批号 From {出入库台账} Group By 类型,Year(日期), Month(日期)"
dt5 = cmd5.ExecuteReader
gxpmph.Clear()
For Each dr As DataRow In dt5.DataRows
    Dim qz As String
    If dr("类型") = "入库" Then
        qz = "RK"& dr("年") & Format(dr("月"),"00")
    ElseIf dr("类型") = "出库" Then
        qz = "CK"& dr("年") & Format(dr("月"),"00")
    End If
    Dim bh As String =  dr("批号")
    Dim id As Integer
    If bh.Length = 13 Then
        bh = bh.SubString(9)
        If Integer.TryParse(bh,id) Then
            gxpmph.Add(qz, id)
        End If
    End If
Next

--  作者:有点蓝
--  发布时间:2020/4/26 11:42:00
--  
看不出有问题。到命令窗口直接执行这个函数有没有问题?这个函数能不能在5秒内执行完毕?
--  作者:huangfanzi
--  发布时间:2020/4/26 12:41:00
--  
没问题了,是我想多了,去掉MessageBox就正常了
再请教下,像这次函数的使用,需要在后面加 Return Nothing 吗?

--  作者:有点蓝
--  发布时间:2020/4/26 13:47:00
--  
如果不需要函数的返回值,不需要添加Return