使用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对子窗体数据进行批...(10.30)
- 最精简的组合框行来源数据快速输...(10.25)
- Access仿平台的多值选择器...(10.24)
- 【Access日期区间段查询】...(10.22)
- 【Access源码示例】VBA...(10.12)
- Access累乘示例,Acce...(10.09)
- 数值8.88,把整数8去掉,转...(10.08)
- 【Access自定义函数】一个...(09.30)
- 【Access选项卡示例】Ac...(09.09)
学习心得
最新文章
- Access快速开发平台企业版--...(11.18)
- 不会用多表联合查询,多表查询没结果...(11.16)
- 【案例分享】主键字段值含有不间断空...(11.16)
- Access快速开发平台--后台D...(11.14)
- 微软Access邀测新Monaco...(11.12)
- Access列表框左右互选、列表框...(11.11)
- 高效率在导入数据前删除记录(11.10)
- Access报价单转订单示例代码(11.08)
- Access系统自带的日期选择器不...(11.08)
- 分享一下Access工程中的acw...(11.07)