使用sql server带参数的存储过程作为报表数据源
时 间:2022-05-07 11:10:47
作 者:青源 ID:63238 城市:大兴
摘 要:sql server 带参数的存储过程、ACCESS报表。
正 文:
关键字:sql server 带参数的存储过程、ACCESS报表、传递查询
什么是存储过程: 存储过程 是在sql server数据库服务器上执行的,而且是编译过的,所以执行速度非常快。不懂的小伙伴可以百度一下。有条件的,但没用过的,可以用一下感受一下,就能明白了,当然建议数据量大的情况,若是本来就没多少条数据,多半没什么感觉。
概 述:
之前我用ACCESS查询作为报表的数据源,但是执行时,需要将所有数据从SQL server 数据库服务器加载到本的地ACCESS客户端,这样就会产生大量的网络流量,加载过来之后,再从海量数据里面查询出符合条件的数据。数据量大了之后,这种方法变得很慢,有人反映,想要打印个报表需要1分多钟才能生成打印预览界面。
解决思路:
由于传递查询不支持在里面输入[forms].[frm窗体名].[控件名] 这种自定义变量
可以这么解决:
1、先创建一个传递查询,设置好ODBC连接符字符串,返回记录设置为:是
2、用VBA代码修改这个传递查询,以生成一个包含参数的传递查询的sql 语句。
3、将报表数据来源改为这个传递查询 qstp测试 就可以了。
4、关于在多用户环境下,是否会存在多个用户同时使用同一个存储过程导致一些未知的问题,可以将传递查询的结果插入到一个临时表中去。这样即使在同一时间多个用户同时调用一个存储过程,理论上也不会出现问题。(未经测试,仅个人猜想)
5、将这个 qstp测试 传递查询作为报表数据源,或者将传递查询的结果保存到一个临时表中去,然后将报表数据源改为这个临时表。
如下图:
Private Sub Command2_Click()
'先断判控件是否输入内容,如为空则 进行提示
If IsNull([Forms]![frm测试].[Text0]) Then
MsgBox "请输入生产单号!", vbInformation, "提示"
Else
Dim qdf As Object 'DAO.QueryDef
Set qdf = CurrentDb.QueryDefs("qstp测试")
qdf.SQL = "exec pro测试 '" & [Forms]![frm测试].[Text0] & "'"
DoCmd.OpenQuery "qstp测试", acViewNormal '打开查询查看结果
End If
End Sub
效果如下图:
至此,这个问题就解决完了,本人亲测试有效。
速度非常快,原来需要一分多钟,使用这种方法之后,基本一两秒钟就有结果了。
Access软件网QQ交流群 (群号:54525238) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 【Access选项卡示例】Ac...(09.09)
- 【Access源码示例】按输入...(09.02)
- 【Access日期区间段查询】...(08.29)
- 【Access日期区间段查询】...(08.27)
- Access怎样才能实现日期时...(08.21)
- 【Access定时打开查询】A...(08.19)
- Access生成固定数量的记录...(08.13)
- Access怎样才能实现日期时...(08.12)
- Access利用导航窗体控件对...(08.03)
学习心得
最新文章
- Access表中的字段名、字段标题...(09.19)
- Access快速开发平台--更改“...(09.18)
- 【中秋及国庆优惠】Access培训...(09.15)
- Access如何将日期型的数值转换...(09.14)
- 英文输入法输入数据中存在单引号引起...(09.11)
- 【Access选项卡示例】Acce...(09.09)
- 让Access光标停留在指定的控件...(09.07)
- 关于Access查询条件里使用通配...(09.06)
- Access报表偷懒制作法--Ac...(09.05)
- Access快速开发平台--窗体数...(09.04)