以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如何实现单表多前缀的编号?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=192974)

--  作者:lin98
--  发布时间:2024/8/6 15:18:00
--  如何实现单表多前缀的编号?
http://foxtable.com/bbs/dispbbs.asp?boardid=2&Id=145239,看4楼实例

这个实现,只能一表一个前缀,比如表A,前缀为:DD-
如何实现单表多前缀的编号?比如表A在客户端的窗口1前缀为:DD-,在客户端的窗口2前缀为:JD-,在客户端的窗口3前缀为:BD-,

--  作者:有点蓝
--  发布时间:2024/8/6 16:02:00
--  
1、编号表一个前缀一行

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


2、服务端全局代码里加上前缀做判断
……
    Public Function GetNextCode(s_name As String,Optional s_prefix As String = Nothing) As String
        SyncLock _codelock \'使用锁处理并发
            Dim dr As DataRow = _bizcode.Find(CExp("BizName=\'{0}\' and Prefix=\'{1}\'", s_name, s_prefix))
……

3、服务端事件对客户端消息处理
Dim msg As String = e.Message
\'这里处理编号生成-------------------------------------------------\'
If msg.StartsWith(":f") AndAlso msg.EndsWith("f:") Then
    Dim ss() As String = msg.SubString(2, msg.Length - 4).Split("|")
    e.ReturnValue = _BizCodeBuilder.GetNextCode(ss(0), ss(1)) \'将编号返回给客户端
End If

4、客户端发送消息的时候加上前缀
窗口1
Dim rt As String =  QQClient.SendWait(":f" & e.DataTable.Name & "|DD-f:")

窗口2
Dim rt As String =  QQClient.SendWait(":f" & e.DataTable.Name & "|JD-f:")

--  作者:lin98
--  发布时间:2024/8/7 10:19:00
--  
删除回收编号再利用,如何区别?下面代码执行后,没有区别,不符需求。
Dim dr As DataRow = DataTables("窗口_Table2").AddNew
dr("编号") = e.DataRow("编号")
dr("表名") = "订单"

--  作者:有点蓝
--  发布时间:2024/8/7 10:35:00
--  
很简单的道理。一样增加一个前缀列区分不就行了
--  作者:lin98
--  发布时间:2024/8/7 11:03:00
--  
Dim dr As DataRow = DataTables("窗口_Table2").AddNew
dr("编号") = e.DataRow("JD-|编号")
dr("表名") = "订单"

没效果,如何改?

--  作者:有点蓝
--  发布时间:2024/8/7 11:07:00
--  
增加一个列,看得懂不!
--  作者:lin98
--  发布时间:2024/8/7 11:18:00
--  
您 是说回收表增一列“前缀”?比如,表A:表名,前缀,编号?
--  作者:有点蓝
--  发布时间:2024/8/7 11:19:00
--  

--  作者:lin98
--  发布时间:2024/8/7 14:07:00
--  

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

--  作者:lin98
--  发布时间:2024/8/7 14:09:00
--  
Dim dr As DataRow = DataTables("窗口_Table2").AddNew
dr("编号") = e.DataRow("编号")
dr("表名") = "订单"
dr("前缀") = e.DataRow("编号")