Foxtable(狐表)用户栏目专家坐堂 → 用OpenQQ实现网络环境下的编号


  共有5365人关注过本帖树形打印复制链接

主题:用OpenQQ实现网络环境下的编号

帅哥哟,离线,有人找我吗?
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/9 15:57:00 [显示全部帖子]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:数据管理服务器版.zip


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/9 16:46:00 [显示全部帖子]

还有服务端事件ReceivedMessage

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/12 20:17:00 [显示全部帖子]

这种服务端的编号生成,客户端必须要保存

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/16 14:36:00 [显示全部帖子]

方法1、重启服务端
2、自定义一个消息格式,在删除全部数据后,发消息给服务端,服务端收到消息就清空编号集合

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/16 14:48:00 [显示全部帖子]

客户端按钮事件:

删除数据
QQClient.Send("重置编号")


服务端ReceivedMessage事件:
Dim msg As String = e.Message
If
 msg= "重置编号Then '收到请求编辑信号
flbhs.Clear()
end if

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/18 13:46:00 [显示全部帖子]

出错的是【错误所在事件:项目,AfterOpenProject】,自己调试看是那一句代码出错

不过服务端处理也有问题,多个表的话,建议加上表名区分一下,比如

Dim qz As String = “采购计划_” & dr("年") & Format(dr("月"), "00")

Dim qz As String = 入库_” & rkdr("年") & Format(rkdr("月"), "00")

然后生成编号的地方也要注意区分一下是哪个表的编号。

或者考虑不同的表使用不同的字典进行处理,不要使用同一个字典

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/18 16:08:00 [显示全部帖子]

思考一下如何区分不同表的编号?

服务端ReceivedMessage

'用OpenQQ实现网络环境下的编号
Dim msg As String = e.Message

msgbox(msg)

……


入库的DataColChanged

……

            Dim bh As String = Format(e.DataRow("入库日期"), "yyyyMM")

msgbox(bh )

            Dim rt As String = QQClient.SendWait(":p" & bh & "p:")

……


采购计划DataColChanged

……

            Dim bh As String = Format(e.DataRow("登记日期"), "yyyyMM")

msgbox(bh )

            Dim rt As String = QQClient.SendWait(":p" & bh & "p:")

……


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/19 20:39:00 [显示全部帖子]

说明消息格式没有统一

AfterOpenProject、datacolchanged和ReceivedMessage三者对编号的格式使用不统一,导致无法取得正确的编号

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/19 21:56:00 [显示全部帖子]

调试

……

For Each dr As DataRow In rk.DataRows
    Dim qz As String = "RK" & dr("年") & Format(dr("月"), "00") '编号前缀,4位年,2位月

msgbox(qz) 注意这里显示的内容

    Dim bh As String = dr("入库单号")
    Dim id As Integer
    If bh.Length = 12 Then      'CG202301-001
        bh = bh.SubString(9)
        If Integer.TryParse(bh, id) Then
            flbhs.Add(qz, id) 这里添加字典的时候,使用的键是msgbox(qz) 显示的值
        End If
    End If
Next

 

在服务端的OpenQQ服务端事件ReceivedMessage:

Dim msg As String = e.Message
msgbox(msg) 这里显示的是什么内容?
If msg.StartsWith(":p") AndAlso msg.EndsWith("p:") Then
    msg = msg.SubString(2, msg.Length - 4)

msgbox(msg) 这里显示的又是什么内容?
    If flbhs.ContainsKey(msg) Then '如果存在这个月的编号
        flbhs(msg) = flbhs(msg) + 1 '将该月最大编号加1
    Else
        flbhs.Add(msg, 1) '如果是这个月的首次编号,则编号等于1
    End If
    e.ReturnValue = flbhs(msg) '将编号返回给客户端
End If


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109489 积分:557107 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/2/20 21:18:00 [显示全部帖子]

在服务端的AfterOpenProjet事件调试

Dim dt As DataTable
Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "Selec t Year(登记日期) As 年, Month(登记日期) As 月, Max(合同编号) as 合同编号 From {采购计划} Group By Year(登记日期), Month(登记日期)"
dt = cmd.ExecuteReader
flbhs.Clear()

msgbox(“CG-----------”)
For Each dr As DataRow In dt.DataRows
    Dim qz As String = "CG" & dr("年") & Format(dr("月"), "00") '编号前缀,4位年,2位月

msgbox(qz )

    Dim bh As String = dr("合同编号")

msgbox(bh )
    Dim id As Integer
    If bh.Length = 12 Then     'CG202301-001
        bh = bh.SubString(9)

        If Integer.TryParse(bh, id) Then

msgbox("bh" & bh & ",id=" & id)
            flbhs.Add(qz, id)
        End If
    End If
Next


Dim rk As DataTable
'Dim rkcmd As New SQLCommand
'rkcmd.C
cmd.CommandText = "Sele ct    Year(入库日期) As 年, Month(入库日期) As 月, Max(入库单号) as 入库单号 From {入库} Group By Year(入库日期), Month(入库日期)"
rk = cmd.ExecuteReader
flbhs.Clear()
msgbox(“RK-----------”)

For Each dr As DataRow In rk.DataRows
    Dim qz As String = "RK" & dr("年") & Format(dr("月"), "00") '编号前缀,4位年,2位月

msgbox(qz )
    Dim bh As String = dr("入库单号")

msgbox(bh )
    Dim id As Integer
    If bh.Length = 12 Then      'CG202301-001
        bh = bh.SubString(9)
        If Integer.TryParse(bh, id) Then

msgbox("bh" & bh & ",id=" & id)
            flbhs.Add(qz, id)
        End If
    End If
Next


 回到顶部
总数 16 1 2 下一页