ACCESS中通过VBA动态修改传递查询的SQL串

    被人问到一个这样的问题:在ACCESS中创建了窗体,在窗体内的文本框中输入参数,传递给SQLserver的存储过程中,返回结果集,生成报表.已知可以通过ACCESS的传递查询执行SQL的存储过程,问:如何把窗体中输入的参数传入到动态查询中?

    以前在软件公司中工作,从来没有这样诡异地使用过ACCESS跟SQLSERVER.但现在发现在企业中,类似的看上去让人不爽的应用还是很多的.没有思路,于是到CSDN上询问.
    CSDN上面ACCESS版网友 wangtiecheng给出下面的代码:
   
' 更改传递查询的SQL语句
Public   Sub  ChangeSQL(strPassThroughQueryName  As   String , strPassthroughSQL  As   String )
    
' 1、初始化
        
    
Dim  cat  As   New  ADOX.Catalog
    
Dim  Pro  As  ADOX.Procedure
    
Dim  Cmm  As   New  ADODB.Command
    
    
' 2、判断输入参数的有效性
     If  strPassthroughSQL  =   ""   Or   Len (strPassthroughSQL)  =   0   Then   Exit Sub
    
    
Set  cat.ActiveConnection  =  CurrentProject.Connection                 ' 使用本地连接 CurrentProject.Connection
     Set  Pro  =  cat.Procedures(strPassThroughQueryName)
    
Set  Cmm  =  Pro.Command
    Cmm.CommandText 
=  strPassthroughSQL
    
'  Cmm.CommandTimeout = 300
     Set  Pro.Command  =  Cmm
    
    
' 3、更改 PassThrough 串成功
    
    
Set  cat  =   Nothing
    
Set  Pro  =   Nothing
    
Set  Cmm  =   Nothing
End Sub
    在ACCESS中创建一个新的模块(模块名不能与sub名相同),拷入代码.
    VBA编辑器窗口,工具-引用,Microsoft ADO Ext. 2.8 for DLL and Security打勾.
    然后在执行存储过程前的代码中调用 ChangeSQL子函数即可修改传递查询的SQL.

转载于:https://www.cnblogs.com/cime63/archive/2007/11/14/959196.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Access传递查询_说明 说明和示例 Access传递查询访问Sql Server数据方法简介 Access检索和操作Sql Server数据有一种方法叫作pass-throught查询,也就是所说的传递查询传递查询克服了jet数据库扮演AccessSql Server之间协同工作的翻译编译角色的缺点。Access可以通过传递查询直接把事务SQL命令发往Sql Server,而不是让jet数据引擎指导Access析数据请求怎样在Sql Server上运行。在Access是虽然没有在链接表上运行查询直观,但是图形界面的缺憾却换来了传递查询更多的控制和更好的理解。 一、认识传递查询 传递查询与一般的Access查询类似,但是在传递查询的使用只使用事务SQL(Sql Server使用有SQL),所以在Access不能图形化地建立传递查询,而只能手工键入所有的SQL语句。 传递查询有两部分组成:以SQL写成的命令字符和ODBC连接字符SQL字符包含一个或多个事务SQL语句,或者包含一个SQL程序流程控制语句的复杂过程,还可调用存在于Sql Server上的存储过程。 ODBC连接字符来标识命令字符将要发送的数据源,连接字符也可包括指定Sql Server的用户登录信息。 所以在Access传递查询Sql Server传递一组执行的SQL命令,专门用于远程数据处理。 二、为什么要使用传递查询 首先看看在链接表上运行查询的复杂步骤: 1、 jet数据库引擎分析SQL字符。 2、 jet数据库引擎编译SQL字符并决定哪一部分发往Sql Server。 3、 jet数据库引擎创建一个事务SQL命令字符并将宻它发往Sql Server。 4、 Sql Server分析和编译事务SQL命令字符。 5、 Sql Server完命令字符定义的任务,如果有返回值的话,则向jet数据库引擎返回结果记录。 传递查询包含的是事务SQL语句,它们被直接发往Sql Server进行处理,并不需要jet数据库引擎翻译和编译它们。 传递查询的优点: 1、 传递查询可以使用Sql Server的固有函数和存储求过程。 2、 传递查询可以记录Sql Server返回的警告和统计信息。 3、 更新、查询等动作的传递查询比基于链接表的Sql Server动作查询要快得多,尤其是在涉及记录很多的情况下。 另外需要注意的是由于传递查询是发往Sql Server处理数据,因此传递查询不能处理Access独有函数和自定义函数,也不能直接对本地Access表进行操作。 三、存储过程的使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值