以文本方式查看主题 - 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()用“十”、“*”都没有错,就是不能用“-”
|
||||
-- 作者: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(\'产地:\'+[产地]+ \',\',\'\')))))
[此贴子已经被作者于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 -- 建议用代码做
|
||||
-- 作者: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 -- 嗯嗯,能用就好 |