以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  聚合函数Max()的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=81476)

--  作者:sjzsdu
--  发布时间:2016/2/28 21:05:00
--  聚合函数Max()的问题
当添加新纪录时,表中的卷号值能够在最大值的基础上加一
从0到9没有问题,添一条记录就加一个
但是从9开始就不行了,dr("卷号")这个值就一直都是10
数据表里有记录,最大值有10的,按理应该返回11

dr("卷号")=DataTables("布匹信息").SQLCompute("max(卷号)","订单明细ID = \'" & cur("订单明细ID") & "\'") + 1


--  作者:Hyphen
--  发布时间:2016/2/29 8:46:00
--  
"卷号"是字符型么,如果是,改为整型:http://www.foxtable.com/help/topics/0029.htm
--  作者:大红袍
--  发布时间:2016/2/29 9:06:00
--  

如果列是字符型,要这样写

 

dr("卷号") = Format(DataTables("布匹信息").SQLCompute("max(卷号)","订单明细ID = \'" & cur("订单明细ID") & "\'") + 1, "000")

 


--  作者:sjzsdu
--  发布时间:2016/2/29 14:27:00
--  回复:(大红袍)如果列是字符型,要这样写 dr...
这样还是不行的,连0到9都加不了
--  作者:sjzsdu
--  发布时间:2016/2/29 14:39:00
--  
只能改整型才行。

奇怪的是我的主键也是字符型的,服务器端找出最大编号放字典里,当增加记录时从字典里读出编号值
运行到现在一点问题都没有


--  作者:大红袍
--  发布时间:2016/2/29 15:14:00
--  

我这样测试没问题

 

tables("表A").current("第一列") = Format(DataTables("表A").SQLCompute("max(第一列)","") + 1, "000")
tables("表A").current.save