以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]网页登录系统如何生成复杂编号 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=146975) |
-- 作者:huangfanzi -- 发布时间:2020/3/7 0:15:00 -- [求助]网页登录系统如何生成复杂编号 根据帮助文件,我在服务端的HttpRequest中写了以下代码,我要生成的单号样式是: SCXD-20200307-001 其中 SCXD 是固定字符,20200307是当前日期, 001是要不停递增,当新的一天开始时,再从001开始编号 Case "scrwtzdh.htm" \'生成生产任务通知单号 Static bhs As new Dictionary(of String,Integer) \'这个字典用于记录每个前缀的下一序号 If e.PostValues.ContainsKey("制单日期") AndAlso e.PostValues.ContainsKey("工程代码") Then --这句代码是帮助文件上的,不知如何改,又有何用 Dim rq As Date = Date.Now Dim max As Integer Dim bh As String Dim prefix As String = "SCXD-" & Format(rq, "yyyyMMdd") If bhs.ContainsKey(prefix) = False Then \'如果字典中不存在次前缀的序号, Dim cmd As New SQLCommand cmd.C onnection Name = "Sql QqServer" \'外部表请设置数据源名称\' cmd.C ommandText = "S elect max(单号) From {生产任务通知} Where 单号 Like \'" & prefix & "%\'" bh = cmd.ExecuteScalar If bh IsNot Nothing Then bh = bh.SubString(14) Integer.TryParse(bh,max) End If bhs.Add(prefix,max) Else max = bhs(prefix) End If max = max + 1 bhs(prefix) = max e.WriteString(Prefix & "-" & Format(max,"000")) End If 请老师帮我看看,在手机上如何获得新单号,例如以下代码: Dim dr As DataRow = _dt生产任务通知.AddNew() dr("录入时间") = Date.Now dr("单号") = 【这里希望出现单号】 另外,目前这个项目之前一直是电脑上的客户端使用的,我现在是要开发手机端可同时使用,在电脑客户端上已经用了“用OpenQQ实现网络环境下的编号”的方法,并且一切正常,如果出现电脑上与手机上同时下任务单生成新的单号,这二者会不会出现问题,例如在数据库中出现了相同的单号 谢谢老师 [此贴子已经被作者于2020/3/7 0:17:10编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/3/7 8:51:00 -- 如果实现了“用OpenQQ实现网络环境下的编号”的方法,直接使用这个就可以了,建议把OpenQQ服务端和web服务端合并到同一个项目,然后网页代码里直接这样用即可 Case "订单.htm" ……其它处理代码 Dim dr As DataRow = _dt生产任务通知.AddNew() dr("录入时间") = Date.Now Dim msg As String = "SCXD" \'“用OpenQQ实现网络环境下的编号”帮助里的类别 If flbhs.ContainsKey(msg) Then \'如果存在这个类别的编号 flbhs(msg) = flbhs(msg) + 1 \'将该类别最大编号加1 Else flbhs.Add(msg,1) \'如果是这个列表的首次编号,则编号等于1 End If dr("单号") = "SCXD-" & Format(rq, "yyyyMMdd") & Format(id,"000") …… |
-- 作者:huangfanzi -- 发布时间:2020/3/7 10:03:00 -- dr("单号") = "SCXD-" & Format(rq, "yyyyMMdd") & Format(id,"000") 老师,上面代码中,就这个 id 没看明白,以下是我OpenQQ实现网络环境下的编号的代码,请老师根据代码帮我改改在网页上如何写,谢谢!服务端全局代码: Public scxdbh As new Dictionary(of String,Integer) 服务端AfterOpenProject代码: Dim dt2 As DataTable Dim cmd2 As New SQLCommand cmd2.C onnection Name = "SqlQqServer" cmd2.C ommandT ext = "S elect Year(录入时间) As 年, Month(录入时间) As 月, Day(录入时间) As 日, Max(单号) as 单号 From {生产任务通知} Group By Year(录入时间), Month(录入时间),Day(录入时间)" dt2 = cmd2.ExecuteReader scxdbh.Clear() For Each dr As DataRow In dt2.DataRows Dim qz As String = dr("年") & Format(dr("月"),"00") & Format(dr("日"),"00") \'编号前缀,4位年,2位月,2位日 Dim bh As String = dr("单号") Dim id As Integer If bh.Length = 17 Then bh = bh.SubString(14) If Integer.TryParse(bh,id) Then scxdbh.Add(qz, id) End If End If Next 服务端OpenQQ服务端事件ReceivedMessage代码: Dim msg2 As String = e.Message \'生产任务通知单号 If msg2.StartsWith(":x") AndAlso msg1.EndsWith("x:") Then msg2 = msg2.SubString(2, msg2.Length - 4) If scxdbh.ContainsKey(msg2) Then \'如果存在这个年月日的编号 scxdbh(msg2) = scxdbh(msg2) + 1 \'将该日最大编号加1 Else scxdbh.Add(msg2,1) \'如果是这个年月日的首次编号,则编号等于1 End If e.ReturnValue = scxdbh(msg2) \'将编号返回给客户端 End If 客户端部分代码: Dim cmd As New SQLCommand Dim dt As Date cmd.C onnection Name = "ShcsErpSQL" cmd.C ommand Text = "Select GetDate()" dt = cmd.ExecuteScalar() Dim dqsj As Date = Format(dt, "yyyy-MM-dd HH:mm:ss") Dim bh As String = Format(dqsj,"yyyyMMdd") Dim rt As String = QQClient.SendWait(":x" & bh & "x:") Dim id As Integer If rt > "" Then If Integer.TryParse(rt,id) Then dr = _dt生产任务通知.AddNew dr("单号") = "SCXD-" & bh & "-" & Format(id,"000") |
-- 作者:有点蓝 -- 发布时间:2020/3/7 10:11:00 -- Case "订单.htm" ……其它处理代码 Dim dr As DataRow = _dt生产任务通知.AddNew() dr("录入时间") = Date.Now Dim msg As String = Format(date.today, "yyyyMMdd") If flbhs.ContainsKey(msg) Then \'如果存在这个类别的编号 flbhs(msg) = flbhs(msg) + 1 \'将该类别最大编号加1 Else flbhs.Add(msg,1) \'如果是这个列表的首次编号,则编号等于1 End If dr("单号") = "SCXD-" & Format(date.today, "yyyyMMdd") & Format(flbhs(msg),"000") ……
|