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多张,在这里写,是不是影响服务器,开机速度和性能?
这个是肯定的。考虑换种方式,如:http://foxtable.com/bbs/dispbbs.asp?boardid=2&Id=145239,看4楼实例
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=159386
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:")是专用语,还是自定义变量?
1、没有回收功能。可以看看:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=177677&skin=0
2、我反馈一下
自己定义的一种消息格式,自己知道这种格式的消息是要做什么的就行
1、maxvalue列记录每个表当前使用的最大编号值;后缀没用到,可以去掉;length是编号序列的长度;mark是日期的格式化字符串;markvalue就是最好一次去编号时按日期格式化的结果
比如当前出库表编号最大值为:CK202407250099。maxvalue就是99;length是【0099】的长度,就是4位;mark就是yyyyMMdd,按年月日生成编号,比如今天格式化后markvalue就是20240725;
2、服务端代码自动处理的
3、表名列不能去除。这个功能是可以针对多个表处理的。没有表名就不知道处理哪个表的编号了
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编辑过]
什么东西失效?
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
DataTables("号表").save
Else
Dim rt As String = QQClient.SendWait(":f" & e.DataTable.Name & "f:")
e.DataRow("编号") = rt
End If
End If
代码放在DataColChanged编号没有生成?
[此贴子已经被作者于2024/7/25 15:51:16编辑过]