易表在线答疑技术与交流用户社区 → [求助]请教报表打印的两个问题


  共有9321人关注过本帖树形打印复制链接

主题:[求助]请教报表打印的两个问题

帅哥哟,离线,有人找我吗?
wjq1072
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2013/7/29 9:47:00 [显示全部帖子]

Eval("FilterFor(""第一列"", ""="" ,"""+Substitute(ListFor("表1","第一列",1),"|",""",2) And Report(GridName,""1"",1,Rows,0) And FilterFor(""第一列"", ""="" ,""")+""",2) And Report(GridName,""1"",1,Rows,0)")

 回到顶部
帅哥哟,离线,有人找我吗?
wjq1072
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2013/7/29 11:58:00 [显示全部帖子]

Eval("FilterFor(""第一列"", ""="" ,"""+Substitute(ListFor("表1","第一列",1),"|",""",2) And Report(GridName,""1"",1,Rows,0) And FilterFor(""第一列"", ""="" ,""")+""",2) And Report(GridName,""1"",1,Rows,0)")

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

把上面公式前面的"Eval"去掉放到“公式编辑器”用按钮“执行”一下就可以看到原公式的“面貌”啦!


 回到顶部
帅哥哟,离线,有人找我吗?
wjq1072
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2013/7/29 12:07:00 [显示全部帖子]

FilterFor("第一列", "=" ,"A",2)  And Report(GridName,"1",1,Rows,0)


 回到顶部
帅哥哟,离线,有人找我吗?
wjq1072
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2013/7/29 12:33:00 [显示全部帖子]

以下是引用iyplx2425在2013-7-29 12:19:00的发言:

这是我在10楼提出的问题。我只知道用Eval()函数可以动态地运行公式,在这里是可以分别从“A”到“D”进行运算,就是没弄懂是怎么分别替换的。

这就是Eval函数的动态、连续执行的功能啊!

参考相关Eval函数的贴子!


 回到顶部
帅哥哟,离线,有人找我吗?
wjq1072
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2013/7/29 12:40:00 [显示全部帖子]

 参考:

http://www.egrid2000.com/dvbbs/dispbbs.asp?boardid=12&Id=1037

[此贴子已经被作者于2013-7-29 12:40:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
wjq1072
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2013/7/29 15:29:00 [显示全部帖子]

在一个Eval公式中都可以简化为:

开始部分()+ 用Substitute把分隔符替换部分() + 结束部分(

这三部分如何快速得到呢?下面通过“系统初始化通用命令”来说明。
ClearGrid("表1") And ClearGrid("表2") And ClearGrid("表3")---清除系统所有表的所有数据,每个表仅一个空行。

Eval公式的模型:Eval(""++"")

1、找出Eval公式的头---ClearGrid("---把引号增加一倍---ClearGrid(""
2、找出Eval公式的尾---")---把引号增加一倍---"")
3、找出Eval公式的中---表1") And ClearGrid("表2") And ClearGrid("表3

4、找出中的规律其中---表1------------------表2------------------表3

注意到没有?表1与表2之间;表2与表3之间的字符完全相同?!为---") And ClearGrid("
同时我们知道函数:ListGrids()---可以得到:表1|表2|表3---
如果把---表1|表2|表3---的里的|替换为---") And ClearGrid("

也就是说使用替换分隔符|:Substitute(ListGrids(),"|",""") And ClearGrid(""")
注意:") And ClearGrid("---把引号增加一倍---"") And ClearGrid(""

就可以得到Eval公式的中:表1") And ClearGrid("表2") And ClearGrid("表3

把头、中、尾写入模型:Eval("头"+中+"尾")

得到:
Eval("ClearGrid("""+Substitute(ListGrids(),"|",""") And ClearGrid(""")+""")")


 回到顶部
帅哥哟,离线,有人找我吗?
wjq1072
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2013/7/29 20:47:00 [显示全部帖子]

当然不能

 回到顶部
帅哥哟,离线,有人找我吗?
wjq1072
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:16190 积分:125850 威望:1 精华:0 注册:2006/8/12 12:29:00
  发帖心情 Post By:2013/7/29 20:51:00 [显示全部帖子]

二、下面通过“系统初始化通用命令”来说明。(一翻二)
ClearGrid("表1") And AddRows("表1",7) And ClearGrid("表2") And AddRows("表2",7) And ClearGrid("表3") And AddRows("表3",7)---
清除系统所有表的所有数据,每个表恢复成8个空行。

Eval公式的模型:Eval("头"+中+"尾")

1、找出Eval公式的头---ClearGrid("---把引号增加一倍---ClearGrid(""
2、找出Eval公式的尾---",7)---把引号增加一倍---"",7)
3、找出Eval公式的中---表1") And AddRows("表1",7) And ClearGrid("表2") And AddRows("表2",7) And ClearGrid("表3") And AddRows("表3

4、找出中的规律其中---表1-------@--------表1----------|---------表2--------@-------表2----------|---------表3--------@-------表3
注意到和(一翻一)公式的区别没有?其中的规律是什么?

在这里关键就是如何得到:表1---@---表1---|---表2---@---表2---|---表3---@---表3

现在使用ListGrids()---只能得到:表1|表2|表3---

套用现成的(一翻二)通用式:
一翻二("A|B|C"→"A@A|B@B|C@C")
公式:Eval("Substitute(""|@|"",""|"","""+Substitute("A|B|C","|",""")+""|""+Substitute(""|@|"",""|"",""")+""")")

用ListGrids()替换:
Eval("Substitute(""|@|"",""|"","""+Substitute(ListGrids(),"|",""")+""|""+Substitute(""|@|"",""|"",""")+""")")

再替换其中的@、|二个字符,来完成Eval公式的中。
@---") And AddRows("---把引号增加一倍---"") And AddRows(""
|---",7) And ClearGrid("---把引号增加一倍---"",7) And ClearGrid(""

替换后的中:
Substitute(Substitute(Eval("Substitute(""|@|"",""|"","""+Substitute(ListGrids(),"|",""")+""|""+Substitute(""|@|"",""|"",""")+""")"),"@",""") And AddRows("""),"|",""",7) And ClearGrid(""")

代入模型:Eval("头"+中+"尾")

得到:
Eval("ClearGrid("""+Substitute(Substitute(Eval("Substitute(""|@|"",""|"","""+Substitute(ListGrids(),"|",""")+""|""+Substitute(""|@|"",""|"",""")+""")"),"@",""") And AddRows("""),"|",""",7) And ClearGrid(""")+""",7)")


 回到顶部