以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  网络环境下的编号的问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=192825)

--  作者:lin98
--  发布时间:2024/7/25 9:35:00
--  网络环境下的编号的问题

2、在服务端的AfterOpenProjet事件中编写代码:

Dim dt As DataTable
Dim
 cmd As New SQLCommand
cmd
.ConnectionName = "数据源名称"
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 = 10 Then
        bh = bh.SubString(7)
        If Integer.TryParse(bh,id) Then
            flbhs.Add(qz, id)
        End If
    
End If
Next


问题:上面的代码,放服务端的AfterOpenProjet事件中编写代码,有100多张,在这里写,是不是影响服务器,开机速度和性能?


--  作者:有点蓝
--  发布时间:2024/7/25 9:42:00
--  
这个是肯定的。考虑换种方式,如:
http://foxtable.com/bbs/dispbbs.asp?boardid=2&Id=145239,看4楼实例

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=159386

--  作者:客人
--  发布时间:2024/7/25 10:35:00
--  
http://foxtable.com/bbs/dispbbs.asp?boardid=2&Id=145239,看4楼实例

问题1;这个相对比省事,是否,具有删除回收?还是代码补写?
问题2:如果这个比较实现,建议,列入帮助,做强推荐,帮助和论坛里也很多关于编号,好象没有一个让大家比较认可,一直争议,每个新手,还有一些大伽也会咨询。


--  作者:lin98
--  发布时间:2024/7/25 10:39:00
--  
If msg.StartsWith(":f") AndAlso msg.EndsWith("f:") Then
    msg = msg.SubString(2, msg.Length - 4)
    e.ReturnValue = _BizCodeBuilder.GetNextCode(msg) \'将编号返回给客户端
End I

msg.StartsWith(":f") AndAlso msg.EndsWith("f:") 这句是什么意思?(":f")和With("f:")是专用语,还是自定义变量?

--  作者:有点蓝
--  发布时间:2024/7/25 10:39:00
--  
1、没有回收功能。可以看看:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=177677&skin=0

2、我反馈一下

--  作者:客人
--  发布时间:2024/7/25 11:28:00
--  
msg.StartsWith(":f") AndAlso msg.EndsWith("f:")
 这句是什么意思?(":f")和With("f:")是专用语,还是自定义变量?

--  作者:有点蓝
--  发布时间:2024/7/25 12:02:00
--  
自己定义的一种消息格式,自己知道这种格式的消息是要做什么的就行
--  作者:lin98
--  发布时间:2024/7/25 14:34:00
--  

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

--  作者:有点蓝
--  发布时间:2024/7/25 14:46:00
--  
1、maxvalue列记录每个表当前使用的最大编号值;后缀没用到,可以去掉;length是编号序列的长度;mark是日期的格式化字符串;markvalue就是最好一次去编号时按日期格式化的结果
比如当前出库表编号最大值为:CK202407250099。maxvalue就是99;length是【0099】的长度,就是4位;mark就是yyyyMMdd,按年月日生成编号,比如今天格式化后markvalue就是20240725;
2、服务端代码自动处理的
3、表名列不能去除。这个功能是可以针对多个表处理的。没有表名就不知道处理哪个表的编号了

--  作者:lin98
--  发布时间:2024/7/25 15:21:00
--  
Dim rt As String = QQClient.SendWait(":f" & e.DataTable.Name & "f:")
e.DataRow("编号") = rt

改为下面代码,失效?
Dim rt As String = QQClient.SendWait(":f" & e.DataTable.Name & "f:")
Select e.DataCol.Name
    Case "日期"
        If e.DataRow.IsNull("日期") Then
            e.DataRow("编号") = Nothing
        Else
            Dim dr As DataRow = DataTables("号表").Find("编号 is not null and 表名=\'订单\'", "编号")
            If dr IsNot Nothing Then
                e.DataRow("编号") = dr("编号")
                
                dr.Delete
            Else
                e.DataRow("编号") = rt
             End If
        End If

[此贴子已经被作者于2024/7/25 17:05:33编辑过]