找回密码
 立即注册

QQ登录

只需一步,快速开始

TimZhang

中级会员

10

主题

78

帖子

658

积分

中级会员

积分
658
TimZhang
中级会员   /  发表于:2019-5-7 14:54  /   查看:26000  /  回复:47
首先声明一下,这帖子很长很长,我会尽量精简文字,用较少的叙述去描述更长的故事。


大家都知道,活字格 5.0 版本已经开始支持存储过程。于是乎,便有网友希望利用存储过程干更多的事,就比如:返回一个数据表,更专业些该称其为查询结果集。
虽然我不知道为什么要用存储过程来做这件事,本着有问题迎难而上的原则,我就在此开一帖,好好说下如何实现这个需求。

实验开始:
这里有一张数据表 BigDataTesting,里面有很多数据。我需要设计一个存储过程,根据指定的数值,返回该数据表中前 N 行数据。

我将存储过程定义如下:

意思是:接收一个输入参数 @rowCount,用来指定 N,然后查询数据表中前 N 行记录,并将其输出到 @result。
需要注意,这里的输出结果以 XML 文本形式保存,效果如下:

到这里,数据库方面已经准备完毕。
下面,我们打开活字格设计器,添加一个“存储过程调用命令”,配置如图所示:

运行项目,在浏览器端点击“查询”按钮,可以看到查询结果集以 XML 文本形式返回至浏览器。
有此我们可以断定,在活字格中用“存储过程调用命令”去获取查询结果集,在实践上是可行的。

那么,接下来我们将在前端借助 JavaScript 语言,将 XML 文本转换成 JavaScript 对象,俗称 JSON。
在具体编写代码之前,还需做一些前端准备工作,直接上图:



这里先给大家预览一下,我们的 JSON 究竟长什么样?

可以看到,将 XML 文本转换成 JSON 这一步,也已验证完毕。
那么,如何将 JSON 直观地展示给用户呢?
首先,你需要在活字格中创建一张数据表,用来临时 show 查询结果集。此处,我就称它为 SearchResult。

大家会发现,这里的字段名,跟前面的 BigDataTest 表完全一致。
没错,为了简明扼要,我们的命名完全一致。其实随便你怎么命名,只要字段的数据类型兼容即是 OK。
下面,我们在页面中添加一个表格,使其与 SearchResult 数据表绑定。

由于我们创建 SearchResult 目的只是为了数据展示,根本没打算将数据提交。请将表格设置为“数据松绑定”

给表格中的列命名,名称随意,这里我们采取概念一致原则,没有另起其它别名。

最后,完善 JavaScript 脚本。
大家会发现,忙了这么久,原来只需要写这么几行文字就完事了。
对的,大量的精力都在于环境配置。

重新运行项目,点击“查询”按钮,存储过程查询结果集全部显示在表格中。


实验完毕!

照例,工程文件奉上!



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 6金币 +66 满意度 +25 收起 理由
David.Zhong + 66
孤狼 + 5
cg6207 + 5 很给力!
咖啡里 + 5
carl_chen + 5 很给力!
mucai + 5 很给力!

查看全部评分

47 个回复

倒序浏览
TimZhang
中级会员   /  发表于:2019-5-7 15:03:26
沙发
备注:以上实验基于 SQL Server 数据库,不同的数据库生成 XML 文本的语法不尽相同。
回复 使用道具 举报
GrapeCity-LY
高级会员   /  发表于:2019-5-7 16:04:41
板凳
简明扼要,很生动!
回复 使用道具 举报
mucai悬赏达人认证 活字格认证
高级会员   /  发表于:2019-6-13 23:19:17
地板
请教楼主,如果是想将页面表格的数据行用存储过程添加到数据表的话,要怎么整?sql会写,就是不知道活字格和数据库是怎么交互的
回复 使用道具 举报
Eric.Liang讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2019-6-14 13:57:14
5#
mucai 发表于 2019-6-13 23:19
请教楼主,如果是想将页面表格的数据行用存储过程添加到数据表的话,要怎么整?sql会写,就是不知道活字格 ...

我在你的另一个帖子进行回复了,你可以看下
回复 使用道具 举报
zhgl527
金牌服务用户   /  发表于:2019-7-30 17:17:45
6#
Eric.Liang 发表于 2019-6-14 13:57
我在你的另一个帖子进行回复了,你可以看下

这个帖子我还有个疑问,如果多个人查询这个表的数据会影响么
回复 使用道具 举报
TimZhang
中级会员   /  发表于:2019-7-30 17:26:46
7#
zhgl527 发表于 2019-7-30 17:17
这个帖子我还有个疑问,如果多个人查询这个表的数据会影响么

性能问题一般与数据量的大小和业务复杂度有关。所以,这里的“多人”与性能没多少关系。
我这个设计不建议处理太多数据,也就是说:如果查询出的数据行数在千行之间,没什么问题,万行没测试过。主要还是受行数+列数共同影响。
回复 使用道具 举报
zhgl527
金牌服务用户   /  发表于:2019-8-16 19:31:01
8#
TimZhang 发表于 2019-7-30 17:26
性能问题一般与数据量的大小和业务复杂度有关。所以,这里的“多人”与性能没多少关系。
我这个设计不建 ...


@TimZhang,按照您的方法可行,但是发现不能用导出pdf打印,打印时数据为空,有啥好的办法
回复 使用道具 举报
TimZhang
中级会员   /  发表于:2019-8-19 10:50:43
9#
zhgl527 发表于 2019-8-16 19:31
@TimZhang,按照您的方法可行,但是发现不能用导出pdf打印,打印时数据为空,有啥好的办法

将表格数据导出至 PDF 吗?
回复 使用道具 举报
zhgl527
金牌服务用户   /  发表于:2019-8-20 12:50:04
10#
TimZhang 发表于 2019-8-19 10:50
将表格数据导出至 PDF 吗?

后来摸索发现,要想导出pdf打印,通过xml写到表格的数据必须要提交存到数据表,但是我不希望打印后存入数据,需要删除,但是不知道怎么在执行存储过程查询前和pdf打印后清空活字格对应的数据表
回复 使用道具 举报
12345下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部