以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  OpenQQ网络编号两个问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=116334)

--  作者:wakai
--  发布时间:2018/3/22 23:01:00
--  OpenQQ网络编号两个问题
1.按帮助写的网络编号,如果n多表需要自动编号,有没有更好的代码编写,还是只能一个表一个表分别写
2.普通开发版好像限制20个用户,是否超过用户数后此功能也无法使用?

--  作者:有点甜
--  发布时间:2018/3/22 23:14:00
--  

1、你可以做一个编号表,包含 表名、前缀、编号,如

 

http://www.foxtable.com/webhelp/scr/1994.htm

 

需要申请编号,就把表名、前缀发过去,服务器端返回编号

 

2、好友数限制是20个用户,其余功能都不影响的。


--  作者:wakai
--  发布时间:2018/3/23 10:38:00
--  
甜老师,能帮忙改下代码吗,并且按年月日来实现多表编号



--  作者:wakai
--  发布时间:2018/3/23 10:39:00
--  

Dim dt As DataTable
\'SQL省略发不出贴
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

上述代码在启动项目后,用SQL语句提取现有数据的每月最大编号,将其整数部分存储在字典flbhs中。

3、在服务端的OpenQQ服务端事件ReceivedMessage中编写代码:

Dim msg As String = e.Message
If
msg.StartsWith(":p") AndAlso msg.EndsWith("p:") 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

客户端的设计

选择客户端项目的订单表,在其DataColChanged事件中加上代码:

If e.DataCol.Name = "日期" Then
If e.DataRow.IsNull(
"
日期") Then
e.DataRow(
"
编号") = Nothing
Else
If QQClient.Ready = False Then
PopMessage(
"QQClient
未启动,无法生成编号!","提示",PopIconEnum.Infomation,5)
Else
Dim bh As String = Format(e.DataRow(
"
日期"),"yyyyMM")
Dim rt As String = QQClient.SendWait(":p" & bh & "p:")
Dim id As Integer
If rt > "" Then
If Integer.TryParse(rt,id) Then
e.DataRow(
"
编号") = bh & "-" & Format(id,"000")
Else
PopMessage(
"
服务器返回错误信息:" & rt,"提示",PopIconEnum.Infomation,5)
End If
Else
PopMessage(
"
服务器无响应,无法生成编号!","提示",PopIconEnum.Infomation,5)
End If
End If
End
If

End
If


--  作者:有点甜
--  发布时间:2018/3/23 10:54:00
--  
以下是引用wakai在2018/3/23 10:38:00的发言:
甜老师,能帮忙改下代码吗,并且按年月日来实现多表编号


 

看懂这个设计的代码 http://www.foxtable.com/webhelp/scr/1994.htm

 

然后改写成openQQ的代码

 

不然,就每个表单独设计一个编号的方式,写在服务器端那里去。