Foxtable(狐表)用户栏目专家坐堂 → [求助] openQQ 网络环境下编号


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

主题:[求助] openQQ 网络环境下编号

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


加好友 发短信
等级:七尾狐 帖子:1634 积分:14432 威望:0 精华:0 注册:2014/6/6 8:42:00
[求助] openQQ 网络环境下编号  发帖心情 Post By:2018/9/11 19:03:00 [显示全部帖子]

老师,有两个问题:

1、openQQ 编号,如果删除后就空号了,如何实现删除后仍然连续编号?
2、如果服务端中途重新启动,新增行编号又会从1号开始,如何实现服务端任何时候启动都从最大编号开始编号?
    谢谢!

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


加好友 发短信
等级:七尾狐 帖子:1634 积分:14432 威望:0 精华:0 注册:2014/6/6 8:42:00
  发帖心情 Post By:2018/9/11 20:55:00 [显示全部帖子]

老师,我的序号是按日生成的,下面的代码是否有误?服务端中途启动新增行序号变成01了。

Dim dt As DataTable
Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "Sel  ect Year(日期) As 年, Month(日期) As 月,day(日期) As 日 ,Max(序号) As 序号 Fr  om {订单} Group By Year(日期), Month(日期),day(日期)"
dt = cmd.ExecuteReader
flbhs.Clear()
For Each dr As DataRow In dt.DataRows
    Dim qz As String = dr("年") & Format(dr("月"),"00") & Format(dr("日"),"00") '编号前缀,4位年,2位月
    Dim bh As String = dr("序号")
    Dim id As Integer
    If bh.Length = 10 Then
        bh = bh.SubString(8)
        If Integer.TryParse(bh,id) Then
            flbhs.Add(qz, id)
        End If
    End If
Next
[此贴子已经被作者于2018/9/11 21:03:50编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1634 积分:14432 威望:0 精华:0 注册:2014/6/6 8:42:00
  发帖心情 Post By:2018/9/11 21:51:00 [显示全部帖子]

老师,重新打开服务端,新增行序号还是 01号

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


加好友 发短信
等级:七尾狐 帖子:1634 积分:14432 威望:0 精华:0 注册:2014/6/6 8:42:00
  发帖心情 Post By:2018/9/11 22:23:00 [显示全部帖子]

1442,20161209,2016120912,12.再就进入下一条循环了,如果加上  WHERE 日期 = ‘“” & date.today & “”’ 判断 就是

1,20180911,2018091109,9 其实今天有9条了
[此贴子已经被作者于2018/9/11 22:27:35编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1634 积分:14432 威望:0 精华:0 注册:2014/6/6 8:42:00
  发帖心情 Post By:2018/9/11 22:43:00 [显示全部帖子]

可以,9.

Dim dt As DataTable
Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "Sel    ect 日期 ,Max(序号) As 序号 Fr     om {订单} WHERE 日期 = '" & Date.Today & "' Group By 日期"
dt = cmd.ExecuteReader
flbhs.Clear()

For Each dr As DataRow In dt.DataRows
    Dim qz As String = Format(dr("日期"),"yyyyMMdd") '编号前缀,4位年,2位月
    Dim bh As String = dr("序号")
    Dim id As Integer
    If bh.Length = 10 Then
        bh = bh.SubString(8)
        If Integer.TryParse(bh,id) Then
            flbhs.Add(qz, id)
        End If
    End If
Next

服务端ReceivedMessage

Dim msgg As String = e.Message

If msgg.StartsWith(":p") AndAlso msgg.EndsWith("p:") Then

    msgg = msgg.SubString(2, msgg.Length - 4)

    If flbhs.ContainsKey(msgg) Then '如果存在这个月的编号

        flbhs(msgg) = flbhs(msgg) + 1 '将该月最大编号加1

    Else

        flbhs.Add(msgg,1) '如果是这个月的首次编号,则编号等于1

    End If

    e.ReturnValue = flbhs(msgg) '将编号返回给客户端

End If


客户端

If e.DataCol.Name = "日期" Then

    If e.DataRow.IsNull("日期") Then

        e.DataRow("序号") = Nothing

    Else

        If QQClient.Ready = False Then

            PopMessage("QQClient未启动,无法生成编号!","提示",PopIconEnum.Infomation,5)

        Else

            Dim bh As String = Format(e.DataRow("日期"),"yyyyMMdd")

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

            Dim id As Integer

            If rt > "" Then

                If  Integer.TryParse(rt,id)  Then

                    e.DataRow("序号") = bh & Format(id,"00")

                Else

                    PopMessage("服务器返回错误信息:" & rt,"提示",PopIconEnum.Infomation,5)

                End If

            Else

                PopMessage("服务器无响应,无法生成编号!","提示",PopIconEnum.Infomation,5)

            End If

        End If

    End If

End If

[此贴子已经被作者于2018/9/11 22:55:55编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1634 积分:14432 威望:0 精华:0 注册:2014/6/6 8:42:00
  发帖心情 Post By:2018/9/11 23:48:00 [显示全部帖子]

老师,那个事件中我还有一个

Dim msg As String = e.Message
Dim dr As DataRow = DataTables("信息").AddNew
dr("发送者") = e.UserName
dr("时间") = Date.Now()
dr("信息") = e.Message
If msg.StartsWith(":f") AndAlso msg.EndsWith("f:") Then
    msg = msg.SubString(2, msg.Length - 4)
    dr("信息") = msg
    For Each us As UserInfo In Users
        QQServer.SendNotice(us.Group & "." & us.Name ,"{!}" & msg)
    Next
    QQServer.SendNotice(e.UserName,"{!}群消息发送成功!")
End If

Dim msgg As String = e.Message

If msgg.StartsWith(":p") AndAlso msgg.EndsWith("p:") Then

    msgg = msgg.SubString(2, msgg.Length - 4)

    If flbhs.ContainsKey(msgg) Then '如果存在这个月的编号

        flbhs(msgg) = flbhs(msgg) + 1 '将该月最大编号加1

    Else

        flbhs.Add(msgg,1) '如果是这个月的首次编号,则编号等于1

    End If

    e.ReturnValue = flbhs(msgg) '将编号返回给客户端

End If


 回到顶部