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


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

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

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


加好友 发短信
等级:七尾狐 帖子:1629 积分:14396 威望:0 精华:0 注册:2014/6/6 8:42:00
[求助] openQQ 网络环境下编号  发帖心情 Post By:2018/9/11 19:03:00 [只看该作者]

老师,有两个问题:

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

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106156 积分:539897 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/11 20:22:00 [只看该作者]

1、不是特别的业务,没有必要使用连号。如果要用,增加一个删号表记录已经删除的号码,取号的时候,先到删号表取,没有再按照常规方式取

2、服务端启动的时候,到数据库查询最大的编号记录下来,帮助有说明的,请仔细看:http://www.foxtable.com/webhelp/scr/3008.htm

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


加好友 发短信
等级:七尾狐 帖子:1629 积分:14396 威望: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106156 积分:539897 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/11 21:08:00 [只看该作者]

看看下面的提示框都弹出什么内容

Dim dt As DataTable
Dim cmd As New SQLCommand
cmd.C
cmd.CommandText = "Select 日期 ,Max(序号) As 序号 From {订单} Group By 日期"
dt = cmd.ExecuteReader
flbhs.Clear()
msgbox(dt.DataRows.count)
For Each dr As DataRow In dt.DataRows
    Dim qz As String = Format(dr("日期"),"yyyyMMdd") '编号前缀,4位年,2位月
msgbox(qz)
    Dim bh As String = dr("序号")
msgbox(bh)
    Dim id As Integer
    If bh.Length = 10 Then
        bh = bh.SubString(8)
msgbox(bh)
        If Integer.TryParse(bh,id) Then
            flbhs.Add(qz, id)
        End If
    End If
Next


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


加好友 发短信
等级:七尾狐 帖子:1629 积分:14396 威望:0 精华:0 注册:2014/6/6 8:42:00
  发帖心情 Post By:2018/9/11 21:51:00 [只看该作者]

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

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106156 积分:539897 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/11 22:03:00 [只看该作者]

提示框都弹出什么内容

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


加好友 发短信
等级:七尾狐 帖子:1629 积分:14396 威望: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106156 积分:539897 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/11 22:37:00 [只看该作者]

If Integer.TryParse(bh,id) Then
msgbox(id) '这里能不能弹出来
            flbhs.Add(qz, id)
        End If

另外,取序号是怎么取的?写了什么代码

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


加好友 发短信
等级:七尾狐 帖子:1629 积分:14396 威望: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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106156 积分:539897 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/9/11 23:01:00 [只看该作者]

服务端ReceivedMessage

Dim msgg As String = e.Message

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

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

    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



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