以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  这个表达式错在哪?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=80826)

--  作者:xsq05103
--  发布时间:2016/2/2 23:28:00
--  这个表达式错在哪?

为什么在len()用“十”、“*”都没有错,就是不能用“-”

 


图片点击可在新窗口打开查看此主题相关图片如下:123.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看


--  作者:xsq05103
--  发布时间:2016/2/2 23:39:00
--  
我是想将:IsNull(\'抽样地点:\'+[抽样地点] + \',\',\'\') + IsNull(\'收获年限:\'+[收获年限]+ \',\',\'\') + IsNull(\'入库时间:\'+[入库时间]+ \',\',\'\')+ IsNull(\'代表数量:\'+[代表数量]+ \',\',\'\')+ IsNull(\'产地:\'+[产地]+ \',\',\'\')   这行代码形成的文本最后一个逗号去掉。
--  作者:xsq05103
--  发布时间:2016/2/2 23:46:00
--  
这行代码没有出错,但最后一个字符为逗号:SubString(IsNull(\'抽样地点:\'+[抽样地点] + \',\',\'\') + IsNull(\'收获年限:\'+[收获年限]+ \',\',\'\') + IsNull(\'入库时间:\'+[入库时间]+ \',\',\'\')+ IsNull(\'代表数量:\'+[代表数量]+ \',\',\'\')+ IsNull(\'产地:\'+[产地]+ \',\',\'\'),1,Len(((IsNull(\'抽样地点:\'+[抽样地点] + \',\',\'\') + IsNull(\'收获年限:\'+[收获年限]+ \',\',\'\') + IsNull(\'入库时间:\'+[入库时间]+ \',\',\'\')+ IsNull(\'代表数量:\'+[代表数量]+ \',\',\'\')+ IsNull(\'产地:\'+[产地]+ \',\',\'\')))))
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:在说明计算列中的表达式中.zip

[此贴子已经被作者于2016/2/2 23:51:51编辑过]

--  作者:大红袍
--  发布时间:2016/2/3 9:35:00
--  

很麻烦的,如果用表达式做

 

iif(iif([抽样地点] is null, 0 , len(抽样地点)+6) + iif(收获年限 is null, 0, len(收获年限)+6) = 0, \'\', substring(iif([抽样地点] is not null, \'抽样地点:\'+[抽样地点] + \',\',\'\') + iif([收获年限] is not null,\'收获年限:\'+ [收获年限] + \',\',\'\'),1, iif([抽样地点] is null, 0 , len(抽样地点)+6) + iif(收获年限 is null, 0, len(收获年限)+6) - 1))


--  作者:大红袍
--  发布时间:2016/2/3 9:40:00
--  

建议用代码做

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:检验报告.foxdb


--  作者:xsq05103
--  发布时间:2016/2/3 23:47:00
--  
以下是引用大红袍在2016/2/3 9:35:00的发言:

很麻烦的,如果用表达式做

 

iif(iif([抽样地点] is null, 0 , len(抽样地点)+6) + iif(收获年限 is null, 0, len(收获年限)+6) = 0, \'\', substring(iif([抽样地点] is not null, \'抽样地点:\'+[抽样地点] + \',\',\'\') + iif([收获年限] is not null,\'收获年限:\'+ [收获年限] + \',\',\'\'),1, iif([抽样地点] is null, 0 , len(抽样地点)+6) + iif(收获年限 is null, 0, len(收获年限)+6) - 1))

谢谢老师。

在你的启发下,我的代码改为:

SubString(IsNull(\'抽样地点:\'+[抽样地点] + \',\',\'\') + IsNull(\'收获年限:\'+[收获年限]+ \',\',\'\') + IsNull(\'入库时间:\'+[入库时间]+ \',\',\'\')+ IsNull(\'代表数量:\'+[代表数量]+ \',\',\'\')+ IsNull(\'产地:\'+[产地]+ \',\',\'\'),1,iif([抽样地点] is null, 0 , len(抽样地点)+6 + iif(收获年限 is null, 0, len(收获年限)+6) - 1))

经测试也可以的。

==============================================

小结:

求字符长度有两种方法:

(1)利用函数len()

(2)分段求长度,再将各段长度相加

===================================================

还可以这样做:

SubString(IsNull(\'抽样地点:\'+[抽样地点] + \',\',\'\') + IsNull(\'收获年限:\'+[收获年限]+ \',\',\'\') + IsNull(\'入库时间:\'+[入库时间]+ \',\',\'\')+ IsNull(\'代表数量:\'+[代表数量]+ \',\',\'\')+ IsNull(\'产地:\'+[产地]+ \',\',\'\'),1,IsNull(len(\'抽样地点\')+len([抽样地点]+1),0)+IsNull(len(\'收获年限\')+len([收获年限]+1),0)+IsNull(len(\'入库时间\')+len([入库时间]+1),0)+IsNull(len(\'代表数量\')+len([代表数量]+1),0)+IsNull(len(\'产地\')+len([产地]+1)-1,0)
)


--  作者:大红袍
--  发布时间:2016/2/4 9:23:00
--  
 嗯嗯,能用就好