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


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

主题:openQQ网络环境编号

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


加好友 发短信
等级:四尾狐 帖子:802 积分:9093 威望:0 精华:0 注册:2017/1/26 14:38:00
openQQ网络环境编号  发帖心情 Post By:2018/9/25 10:51:00 [只看该作者]

采用openQQ网络自动编号,可以实现递增,但问题是,如果删除最后一个,重新增加的时候,不能连号,例如,001,002,但是删除了最后这个002这个号再重新增加,直接跳到003,可否仍然为002

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/9/25 11:52:00 [只看该作者]

1、不连号是正常正确的做法,一般编号不连号是没问题的。

 

2、如果你需要把断号的补回来,你可以做一个【断号表】,先去这个断号表找,没有断号再重新生成。你删除行的时候,把断号新增到断号表。


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


加好友 发短信
等级:七尾狐 帖子:1578 积分:13038 威望:0 精华:0 注册:2009/6/16 7:30:00
  发帖心情 Post By:2020/5/21 19:28:00 [只看该作者]

如何做,有没有例子?

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


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

建表会吧?删除行的时候,到删除事件,把编号数据新增到编号表会吧?到生成编号的代码里,先到【断号表】查询,查询数据会吧?如果查询有结果,就取编号。如果没有按正常方式生成编号。


在服务端的OpenQQ服务端事件ReceivedMessage中编写代码:

Dim msg As String = e.Message
If msg.StartsWith(":f") AndAlso msg.EndsWith("f:") Then
    msg = msg.SubString(2, msg.Length - 4)

    Dim cmd As new SQLCommand()
    cmd.ConnectionName = "Orders"  '指定数据源
    Try
        cmd.BeginTransaction() '开启事务
        cmd.CommandText = "select top 1 * From 断号表 Where 类型 = " & msg & " order by 编号"
        Dim dt As DataTable = cmd.ExecuteReader()
        '继续使用同一个SQLCommand执行其它SQL语句.
        If dt.dataraows.count > 0 Then
            cmd.CommandText = "Delete From 断号表 Where [_Identify] = " & dt.dataraows(0)("_Identify")
            cmd.ExecuteNonQuery()
            cmd.Commit() '提交事务
            e.ReturnValue = dt.dataraows(0)("编号")
            Return
        end if
        cmd.Commit() '提交事务
        Catch ex As Exception '如果出错
            cmd.Rollback() '则回滚事务
        End Try
        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

 回到顶部