以文本方式查看主题 - 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=87894) |
-- 作者:苦为用功 -- 发布时间:2016/7/22 9:41:00 -- [求助]OPENQQ编号出现重复。 根据帮助中的《用OpenQQ实现网络环境下的编号》做的编号,不关闭项目添加正常,但是每次重新打开项目输入"类别",编号就归零。请问是什么原因?全程QQClient斗正常连接。 If
e.DataCol.Name = "类别"
Then |
-- 作者:大红袍 -- 发布时间:2016/7/22 9:45:00 --
[此贴子已经被作者于2016/7/22 9:46:52编辑过]
|
-- 作者:苦为用功 -- 发布时间:2016/7/22 9:52:00 -- 补充一下,也尝试在生成编号收加入save但是也不行。之前用的还好好的,不知道怎么就变成这样了。 |
-- 作者:大红袍 -- 发布时间:2016/7/22 9:57:00 -- 帮助文档的代码,是要求你服务器程序,不能关闭的。
如果要不归零,你必须修改服务器端的代码,也就是关闭项目之前,把编号的信息保存回表里去
如,BeforeCloseProject事件,写代码
[此贴子已经被作者于2016/7/22 9:58:26编辑过]
|
-- 作者:苦为用功 -- 发布时间:2016/7/22 10:10:00 -- 谢谢大红袍老师。我试了下添加后保存,服务端开启同一个表格,加载后服务端出现该新建,数据库也有该行,然后关闭客户端再连接编号仍然重头开始。
下面的这段代码不是对比现有编号的吗?而且开了编号列禁止重复,不管用也。 字典储存在内存中重新打开后就会清零吗? Dim
msg
As
String = e.Message |
-- 作者:苦为用功 -- 发布时间:2016/7/22 11:31:00 -- 大红袍老师,菜单上的保存按键是这个Syscmd.Project.Save()吧?和您提供的有什么不同?保存按键不是直接全表保存了吗? For Each key As String In pdbhs.Keys
DataTables("产品").ReplaceFor("编号", key & Format(pdbhs(key),"000"), "类别 = \'" & key & "\'") Next DataTables("产品").Save |
-- 作者:狐狸爸爸 -- 发布时间:2016/7/22 11:50:00 -- 换个思路,每次打开QQserver,就从表中提取最大的编号不就行了吗? 用SQLCompute:
http://www.foxtable.com/webhelp/scr/2897.htm
= DataTables("订单").SQLCompute("Max(编号)") |
-- 作者:苦为用功 -- 发布时间:2016/8/4 8:47:00 -- 以下是引用狐狸爸爸在2016/7/22 11:50:00的发言:
换个思路,每次打开QQserver,就从表中提取最大的编号不就行了吗? 用SQLCompute:
http://www.foxtable.com/webhelp/scr/2897.htm
= DataTables("订单").SQLCompute("Max(编号)") 狐狸爸爸,能具体讲解下吗?这句代码要加在哪里? 另外,我现在编号使用的是笨方法,每个表的编号都是一个单独全局代码对应,能精简下吗? |
-- 作者:Hyphen -- 发布时间:2016/8/4 9:18:00 -- 比如在服务端的OpenQQ服务端事件ReceivedMessage,这样改改 Dim msg As String = e.Message If msg.StartsWith(":f") AndAlso msg.EndsWith("f:") Then msg = msg.SubString(2, msg.Length - 4) If pdbhs.ContainsKey(msg) Then \'如果存在这个类别的编号 pdbhs(msg) = pdbhs(msg) + 1 \'将该类别最大编号加1 Else Dim bh As String = DataTables("订单").SQLCompute("Max(编号)","编号 like \'" & msg & "%\'") Dim bhz = 1 If bh > "" Then CInt(bh.SubString(2))+1 pdbhs.Add(msg,bhz) End If e.ReturnValue = pdbhs(msg) \'将编号返回给客户端 End If 或者还有一种方法,不要用字典存储编号,直接加载整个编号表,然后通过查询编号表来取值和保存 |
-- 作者:大红袍 -- 发布时间:2016/8/4 9:23:00 -- 做一个编号表。记录各个编号的最大值。如
表A BH 5 表B XL 10
这样,可以直接启用变量,直接在这个表里面查询存取数据,即可。 |