以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- 网络环境下的编号 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=128092)
|
-- 作者:manyifuwu
-- 发布时间:2018/11/28 17:50:00
-- 网络环境下的编号
用OpenQQ实现网络环境下的编号
服务端的AfterOpenProjet事件中编写代码
Dim qz As String = dr("录入人") & "-" & dr("年") & Format(dr("月"),"00") \'编号前缀,4位录入人,4位年,2位月。。。 服务端的事件,是4位。
选择客户端项目的对应的表,在其DataColChanged事件中加上代码:
Select e.DataCol.Name Case "录入日期","录入人" If e.DataRow.IsNull("录入日期") OrElse e.DataRow.IsNull("录入人") Then e.DataRow("派单id") = Nothing \'msgbox(18) Else If QQClient.Ready = False Then PopMessage("QQClient未启动,无法生成编号!","提示",PopIconEnum.Infomation,5) Else Dim bh As String = e.DataRow("录入人") & "-" & Format(e.DataRow("录入日期"),"yyyyMM") Dim rt As String = QQClient.SendWait(":g" & bh & "g:") Dim id As Integer If rt > "" Then If Integer.TryParse(rt,id) Then e.DataRow("派单id") = bh & "-" & Format(id,"0000") msgbox("新增了派单") Else PopMessage("服务器返回错误信息:" & rt,"提示",PopIconEnum.Infomation,5) End If Else PopMessage("服务器无响应,无法生成编号!","提示",PopIconEnum.Infomation,5) End If End If End If End Select
4位录入人,4位年,2位月。。。
但录入人有可能是3个字,或2个字。
怎么改呢?
|
-- 作者:有点甜
-- 发布时间:2018/11/28 18:13:00
--
If bh.Length = 16 Then bh = bh.SubString(12)
改成
bh = bh.SubString(qz.length)
|
-- 作者:manyifuwu
-- 发布时间:2018/11/29 14:50:00
--
此主题相关图片如下:6.png

|
-- 作者:manyifuwu
-- 发布时间:2018/11/29 14:53:00
--
改后的代码
[此贴子已经被作者于2018/11/29 14:53:09编辑过]
|
-- 作者:manyifuwu
-- 发布时间:2018/11/29 14:54:00
--
在服务端的OpenQQ服务端事件ReceivedMessage中编写代码:
Dim msg As String = e.Message If msg.StartsWith(":g") AndAlso msg.EndsWith("g:") 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
这里还需要改吗?
|
-- 作者:manyifuwu
-- 发布时间:2018/11/29 15:58:00
--
求助
|
-- 作者:有点甜
-- 发布时间:2018/11/29 16:09:00
--
For Each dr As DataRow In dt.DataRows Dim qz As String = dr("录入人") & "-" & dr("年") & Format(dr("月"),"00") \'编号前缀,4位录入人,4位年,2位月 Dim bh As String = dr("派单id") Dim id As Integer If bh.Length >= qz.length Then bh = bh.SubString(qz.length) If Integer.TryParse(bh,id) Then flbhs.Add(qz, id) End If End If Next
|
-- 作者:manyifuwu
-- 发布时间:2018/11/29 17:00:00
--
Dim qz As String = dr("录入人") & "-" & dr("年") & Format(dr("月"),"00") \'编号前缀,4位录入人,4位年,2位月
这个只有年月。
Dim bh As String = e.DataRow("录入人") & "-" & Format(e.DataRow("录入日期"),"yyyyMMddHHmmss")
我想把录入日期格式改为:yyyyMMddHHmmss 呢?
感谢您的回复!
怎么改呢?
[此贴子已经被作者于2018/11/29 17:22:06编辑过]
|
-- 作者:有点甜
-- 发布时间:2018/11/29 17:34:00
--
Forms("QQServer").Open() Dim dt As DataTable Dim cmd As New SQLCommand cmd.ConnectionName = "server" cmd.CommandText = "Select 录入人,录入日期, Max(派单id) as 派单id From {派工} Group By 录入人,录入日期" dt = cmd.ExecuteReader flbhs.Clear() For Each dr As DataRow In dt.DataRows Dim qz As String = dr("录入人") & "-" & Format(dr("录入日期"),"yyyyMMddHHmmss") Dim bh As String = dr("派单id") Dim id As Integer If bh.Length >= qz.length Then bh = bh.SubString(qz.length) If Integer.TryParse(bh,id) Then flbhs.Add(qz, id) End If End If Next
|
-- 作者:manyifuwu
-- 发布时间:2018/11/29 17:48:00
--
Dim msg As String = e.Message If msg.StartsWith(":g") AndAlso msg.EndsWith("g:") 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
老师:那这段代码还需要改吗?
|