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


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

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

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


加好友 发短信
等级:小狐 帖子:348 积分:2679 威望:0 精华:0 注册:2018/11/11 15:52:00
用OpenQQ实现网络环境下的编号  发帖心情 Post By:2023/2/9 15:27:00 [显示全部帖子]

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


图片点击可在新窗口打开查看此主题相关图片如下:bh.png
图片点击可在新窗口打开查看

 

重启项目后编号重复,重新001开始,请问怎样改代码才能不重复?


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


加好友 发短信
等级:小狐 帖子:348 积分:2679 威望:0 精华:0 注册:2018/11/11 15:52:00
  发帖心情 Post By:2023/2/9 16:34:00 [显示全部帖子]

 

    Dim id As Integer

    If bh.Length = 12 Then

        bh = bh.SubString(7)

        If Integer.TryParse(bh, id) Then

            flbhs.Add(qz, id)

        End If

    End If

 

原因是编号里加了2个字符长度变了,计算就不对了。202302-001  10位 ,  CG202302-001 12位


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


加好友 发短信
等级:小狐 帖子:348 积分:2679 威望:0 精华:0 注册:2018/11/11 15:52:00
  发帖心情 Post By:2023/2/9 16:37:00 [显示全部帖子]

老师还有别的地方要改吗?知道原因到其他表的编号会处理了

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


加好友 发短信
等级:小狐 帖子:348 积分:2679 威望:0 精华:0 注册:2018/11/11 15:52:00
  发帖心情 Post By:2023/2/12 11:58:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:001.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:002.png
图片点击可在新窗口打开查看

 

新增一个编号,没有保存退出,再打开新增时编号不连续,
或者删除再新增时编号也不连续


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


加好友 发短信
等级:小狐 帖子:348 积分:2679 威望:0 精华:0 注册:2018/11/11 15:52:00
  发帖心情 Post By:2023/2/12 12:01:00 [显示全部帖子]

请问怎样改代码才能做到不保存新增删除后新增编号还是连续的

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


加好友 发短信
等级:小狐 帖子:348 积分:2679 威望:0 精华:0 注册:2018/11/11 15:52:00
  发帖心情 Post By:2023/2/16 14:32:00 [显示全部帖子]

删除全部数据后不能重新是001开头,要怎样才能清空

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


加好友 发短信
等级:小狐 帖子:348 积分:2679 威望:0 精华:0 注册:2018/11/11 15:52:00
  发帖心情 Post By:2023/2/16 14:45:00 [显示全部帖子]

2、自定义一个消息格式,在删除全部数据后,发消息给服务端,服务端收到消息就清空编号集合
有帮助看下吗?小白搞不出来啊!

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


加好友 发短信
等级:小狐 帖子:348 积分:2679 威望:0 精华:0 注册:2018/11/11 15:52:00
  发帖心情 Post By:2023/2/18 12:36:00 [显示全部帖子]

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()
For Each dr As DataRow In dt.DataRows
    Dim qz As String = dr("年") & Format(dr("月"), "00") '编号前缀,4位年,2位月
    Dim bh As String = dr("合同编号")
    Dim id As Integer
    If bh.Length = 12 Then
        bh = bh.SubString(9)
        If Integer.TryParse(bh, id) Then
            flbhs.Add(qz, id)
        End If
    End If
Next


Dim rk As DataTable
Dim rkcmd As New SQLCommand
rkcmd.C
rkcmd.CommandText = "Selec t Year(入库日期) As 年, Month(入库日期) As 月, Max(入库单号) as 入库单号 From {入库} Group By Year(入库日期), Month(入库日期)"
rk = cmd.ExecuteReader
flbhs.Clear()
For Each rkdr As DataRow In rk.DataRows
    Dim qz As String = rkdr("年") & Format(rkdr("月"), "00") '编号前缀,4位年,2位月
    Dim bh As String = rkdr("入库单号")
    Dim id As Integer
    If bh.Length = 12 Then
        bh = bh.SubString(9)
        If Integer.TryParse(bh, id) Then
            flbhs.Add(qz, id)
        End If
    End If
Next

 

 

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2022.8.1.1
错误所在事件:项目,AfterOpenProject
详细错误信息:
列“入库单号”不属于表 。

 

 

入库表的是入库单号没有写错啊?请问老师多个表的网络编号是这样可单独编写吗?



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


加好友 发短信
等级:小狐 帖子:348 积分:2679 威望:0 精华:0 注册:2018/11/11 15:52:00
  发帖心情 Post By:2023/2/18 14:24:00 [显示全部帖子]

服务端ReceivedMessage

'用OpenQQ实现网络环境下的编号
Dim msg As String = e.Message
If msg.StartsWith(":p") AndAlso msg.EndsWith("p:") Then
    msg = msg.SubString(2, msg.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

 

入库的DataColChanged

If e.DataCol.Name = "入库日期" Then
    If e.DataRow.IsNull("入库日期") Then
        e.DataRow("入库单号") = Nothing
    Else
        If QQClient.Ready = False Then
            PopMessage("通讯服务端未启动,无法生成编号!", "提示", PopIconEnum.Infomation, 5)
        Else
            Dim bh As String = Format(e.DataRow("入库日期"), "yyyyMM")
            Dim rt As String = QQClient.SendWait(":p" & bh & "p:")
            Dim id As Integer
            If rt > "" Then
                If Integer.TryParse(rt, id) Then
                    e.DataRow("入库单号") = "RK" & bh & "-" & Format(id, "000")
                Else
                    PopMessage("通讯服务端返回错误信息:" & rt, "提示", PopIconEnum.Infomation, 5)
                End If
            Else
                PopMessage("通讯服务端无响应,无法生成编号!", "提示", PopIconEnum.Infomation, 5)
            End If
        End If
    End If
End If

 

采购计划DataColChanged

If e.DataCol.Name = "登记日期" Then
    If e.DataRow.IsNull("登记日期") Then
        e.DataRow("合同编号") = Nothing
    Else
        If QQClient.Ready = False Then
            PopMessage("通讯服务端未启动,无法生成编号!", "提示", PopIconEnum.Infomation, 5)
        Else
            Dim bh As String = Format(e.DataRow("登记日期"), "yyyyMM")
            Dim rt As String = QQClient.SendWait(":p" & bh & "p:")
            Dim id As Integer
            If rt > "" Then
                If Integer.TryParse(rt, id) Then
                    e.DataRow("合同编号") = "CG" & bh & "-" & Format(id, "000")
                Else
                    PopMessage("通讯服务端返回错误信息:" & rt, "提示", PopIconEnum.Infomation, 5)
                End If
            Else
                PopMessage("通讯服务端无响应,无法生成编号!", "提示", PopIconEnum.Infomation, 5)
            End If
        End If
    End If
End If

 

项目事件fterOpenProject

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()
For Each dr As DataRow In dt.DataRows
    Dim qz As String = "采购计划_" & dr("年") & Format(dr("月"), "00") '编号前缀,4位年,2位月
    Dim bh As String = dr("合同编号")
    Dim id As Integer
    If bh.Length = 12 Then
        bh = bh.SubString(9)
        If Integer.TryParse(bh, id) Then
            flbhs.Add(qz, id)
        End If
    End If
Next


Dim rk As DataTable
cmd.CommandText = "Selec t  Year(入库日期) As 年, Month(入库日期) As 月, Max(入库单号) as 入库单号 From {入库} Group By Year(入库日期), Month(入库日期)"
rk = cmd.ExecuteReader
flbhs.Clear()
For Each dr As DataRow In rk.DataRows
    Dim qz As String = "入库_" & dr("年") & Format(dr("月"), "00") '编号前缀,4位年,2位月
    Dim bh As String = dr("入库单号")
    Dim id As Integer
    If bh.Length = 12 Then
        bh = bh.SubString(9)
        If Integer.TryParse(bh, id) Then
            flbhs.Add(qz, id)
        End If
    End If
Next

 

 

这样编号可以生成,入库的编号生成是接着采购计划的,入库的编号应该从1开始,请问老师要改哪里?


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


加好友 发短信
等级:小狐 帖子:348 积分:2679 威望:0 精华:0 注册:2018/11/11 15:52:00
  发帖心情 Post By:2023/2/18 20:28:00 [显示全部帖子]

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

 

加上"RK" &好像成功了,有问题再请假老师

 

 

If e.DataCol.Name = "入库日期" Then
    If e.DataRow.IsNull("入库日期") Then
        e.DataRow("入库单号") = Nothing
    Else
        If QQClient.Ready = False Then
            PopMessage("通讯服务端未启动,无法生成编号!", "提示", PopIconEnum.Infomation, 5)
        Else
            Dim bh As String = "RK" & Format(e.DataRow("入库日期"), "yyyyMM")

            msgbox(bh)
'           MessageBox.Show("请先连接短信猫!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)

           
            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, "000")
                Else
                    PopMessage("通讯服务端返回错误信息:" & rt, "提示", PopIconEnum.Infomation, 5)
                End If
            Else
                PopMessage("通讯服务端无响应,无法生成编号!", "提示", PopIconEnum.Infomation, 5)
            End If
        End If
    End If
End If

[此贴子已经被作者于2023/2/18 20:33:18编辑过]

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