以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  这句代码到底什么意思?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=153347)

--  作者:昱飞哥
--  发布时间:2020/8/7 17:04:00
--  这句代码到底什么意思?
文档里有句代码:max = e.DataTable.Compute("Max(编号)","日期 = #" & e.DataRow("日期"& "# And [_Identify] <> " & e.DataRow("_Identify")

大致的意思是不是:在当前表里除当前行外的所有行里,找出“日期”为当前行日期的行里的所有行,然后再找出编号最大的那一行的编号,赋值给max。
那代码不应该是这样写吗?
max = e.DataTable.Compute("Max(编号)","日期 = #" & e.DataRow("日期"& "# And [_Identify] <> \'& e.DataRow("_Identify") &\'")

头疼,还请老师解答,很烦,自动编号搞了很久


--  作者:有点蓝
--  发布时间:2020/8/7 17:21:00
--  
_Identify是整数列,这个帮助没事就多看几遍:http://www.foxtable.com/webhelp/topics/1284.htm

表达式中的日期用符号#括起来,数值则不需要任何符号括起来,这些和代码中的格式是一样的,唯一不同的是字符串用单引号括起来。

--  作者:昱飞哥
--  发布时间:2020/8/7 17:37:00
--  
老师,那 <> 后面的 " 不是应该放在代码最后面的 ) 的前面吗?
--  作者:nxhylczh
--  发布时间:2020/8/7 22:19:00
--  
那句的意思是  计算当前行日期值的最大编号,但不能包括当前行。比如当前行是新增加的行  计算最大号的时候,要去除当前行
如果是新增加行 ,在新增加行的事件中 SqlComputer计算 可以取掉[_Identify] <> \'& e.DataRow("_Identify") &\',因为增加的行没有保存在外部表中

--  作者:有点蓝
--  发布时间:2020/8/8 9:18:00
--  
如果新增行没有保存,确实没有必要加,但是加了也不会有什么影响
--  作者:昱飞哥
--  发布时间:2020/8/8 10:16:00
--  

帮助文档里正确的代码是:
max = e.DataTable.Compute("Max(编号)","日期 = #" & e.DataRow("日期"& "# And [_Identify] <> " & e.DataRow("_Identify"))

但是,老师,那代码不应该是这样写吗:
max = e.DataTable.Compute("Max(编号)","日期 = #" & e.DataRow("日期"& "# And [_Identify] <> & e.DataRow("_Identify") &")

搞不明白

--  作者:有点蓝
--  发布时间:2020/8/8 10:51:00
--  
自己看看结果

msgbox("日期 = #" & e.DataRow("日期"& "# And [_Identify] <> " & e.DataRow("_Identify"))

http://www.foxtable.com/webhelp/topics/0221.htm,搞不明白就多看看编程基础