Foxtable(狐表)用户栏目专家坐堂 → OpenQQ网络编号两个问题


  共有1801人关注过本帖树形打印复制链接

主题:OpenQQ网络编号两个问题

帅哥哟,离线,有人找我吗?
wakai
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:364 积分:3488 威望:0 精华:0 注册:2016/5/25 21:31:00
OpenQQ网络编号两个问题  发帖心情 Post By:2018/3/22 23:01:00 [只看该作者]

1.按帮助写的网络编号,如果n多表需要自动编号,有没有更好的代码编写,还是只能一个表一个表分别写
2.普通开发版好像限制20个用户,是否超过用户数后此功能也无法使用?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/22 23:14:00 [只看该作者]

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

 

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

 

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

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
wakai
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:364 积分:3488 威望:0 精华:0 注册:2016/5/25 21:31:00
  发帖心情 Post By:2018/3/23 10:38:00 [只看该作者]

甜老师,能帮忙改下代码吗,并且按年月日来实现多表编号



 回到顶部
帅哥哟,离线,有人找我吗?
wakai
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:364 积分:3488 威望:0 精华:0 注册:2016/5/25 21:31:00
  发帖心情 Post By: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


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/3/23 10:54:00 [只看该作者]

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


 

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

 

然后改写成openQQ的代码

 

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


 回到顶部