以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  关于在Excel报表的标签打印中使用表达式的一个问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=23916)

--  作者:bjljb
--  发布时间:2012/9/24 12:11:00
--  关于在Excel报表的标签打印中使用表达式的一个问题

我想利用Excel报表的标签打印功能实现如下效果:

(办公室) 张三      (一车间) 李四      (二车间) 王五

 

在模板中的表达式设置如下:

<"("&[部门名称]&")"&[姓名]>     <"("&[部门名称+1]&")"&[姓名+1]>     <"("&[部门名称+2]&")"&[姓名+2]> 

 

生成的打印结果却是:

(办公室) 张三      ()       ()

 

也就是说,[部门名称+1] 、 [姓名+1] 、[部门名称+2] 、 [姓名+2] 这几个表达式没有能够进行正常的数据引用。

 

请问:这个问题该如何解决?


--  作者:lin_hailun
--  发布时间:2012/9/24 15:45:00
--  
 不知是不是这个原因。

由于同一个细节区不再是对应一个数据行,而是对应多个数据行,所以在定义细节区的时候,要增加一个参数,用于指定每个细节区对应的数据行数,这个参数以符号@开头:


<表名, @3>


[此贴子已经被作者于2012-9-24 15:45:18编辑过]

--  作者:bjljb
--  发布时间:2012/9/24 16:03:00
--  

这个参数我已经加了,当我把 [部门名称] 和 [姓名] 在同一个细节区分两行打印的时候,没有问题,[部门名称+1] 、 [姓名+1] 、[部门名称+2] 、 [姓名+2] 这几个表达式都可以正常引用数据,但由于受标签纸尺寸的限制,我需要把这两个内容放到同一行打印,用表达式来进行连接的时候,上述问题就出现了。

 

简而言之,这个问题就是:类似于 [姓名+1] 、[姓名+2] 这样的数据引用方式在表达式中如何实现?


--  作者:lin_hailun
--  发布时间:2012/9/24 18:12:00
--  
 测试了一下,表达式不支持+1操作。

 也就是说,你需要把原来的表达式分成几列显示。如:

 ( [部门名称+1] ) [姓名+1]          总共4列

--  作者:bjljb
--  发布时间:2012/9/24 18:21:00
--  

我用了一个变通的办法把问题解决了:

增加一个 [姓名带部门] 列,用易表或Excel把部门和姓名组合成需要的样式(这个就非常简单了),然后在打印模板中直接引用 [姓名带部门]、[姓名带部门+1]、[姓名带部门+2] 就可以了。


--  作者:ahbzczy
--  发布时间:2012/9/24 18:38:00
--  

<"("&[部门名称]&")"&[姓名]>     <"("& *[部门名称+1]* &")"& *[姓名+1]*>     <"("&*[部门名称+2]*&")"&*[姓名+2]*> 

 

这种跨行引用数据的格式参与表达式计算的时候,也必须用符号*括起来,例如:

<IIF(*[数量+1]* > 100, *[数量+1]*, 0)>

[此贴子已经被作者于2012-9-24 18:38:43编辑过]

--  作者:bjljb
--  发布时间:2012/9/24 18:42:00
--  
以下是引用lin_hailun在2012-9-24 18:12:00的发言:
 测试了一下,表达式不支持+1操作。

 也就是说,你需要把原来的表达式分成几列显示。如:

 ( [部门名称+1] ) [姓名+1]          总共4列

 

非常感谢!但这样做会增加打印模板的复杂程度,尤其在打印标签的时候,通常都是非常细微地调整各种间距,增加一列必然会影响其后所有列的定位。

 

希望老六尽快解决这个问题!


--  作者:bjljb
--  发布时间:2012/9/24 18:58:00
--  
以下是引用ahbzczy在2012-9-24 18:38:00的发言:

<"("&[部门名称]&")"&[姓名]>     <"("& *[部门名称+1]* &")"& *[姓名+1]*>     <"("&*[部门名称+2]*&")"&*[姓名+2]*> 

 

这种跨行引用数据的格式参与表达式计算的时候,也必须用符号*括起来,例如:

<IIF(*[数量+1]* > 100, *[数量+1]*, 0)>

[此贴子已经被作者于2012-9-24 18:38:43编辑过]

 

此为正解!

 

非常感谢!

 

已经测试通过。


--  作者:lin_hailun
--  发布时间:2012/9/24 23:59:00
--  
 呵呵,学习...