设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 9164|回复: 13
打印 上一主题 下一主题

[帮助] 调用存储过程传递参数的例程

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2002-4-9 08:28:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
这是开发版中关于调用存储过程传递参数的例程,供大家参考

  1. Public Sub TestParameter
  2.   ' 这段代码演示:
  3.   ' 1. 创建一个使用输入/输出参数的存储过程
  4.   ' 2. 创建参数并调用存储过程
  5.   ' 3. 显示结果并删除这个存储过
  6.   Dim conn As ADODB.Connection
  7.   Dim Param As ADODB.Parameter
  8.   Dim Com As ADODB.Command
  9.   Dim strConn As String
  10.   ' 给连接字符串变量赋值
  11.   strConn = "PROVIDER=SQLOLEDB;SERVER=(local);User Id=sa;Password=;DATABASE=pubs"

  12.   ' 建立连接对象
  13.   Set conn = New ADODB.Connection
  14.   ' 给连接对象赋予连接字符串并打开连接
  15.   conn.ConnectionString = strConn
  16.   conn.Open strConn
  17.   ' 建立新的命令对象
  18.   Set Com = New ADODB.Command
  19.   ' 在PUBS数据库中创建一个新的存储过程
  20.   Com.CommandText = "Create Procedure sp_ReturnsOutput @authorid " & _
  21.   "varchar(11),@result Varchar(20) OUTPUT As Select @result " _
  22.   & "= (Select au_fname from authors Where Au_id = @authorId)"
  23.   Com.ActiveConnection = conn
  24.   Com.Execute
  25.   ' 现在已经创建两个参数: 一为输入,一为输出
  26.   ' 在ADO对象中创建输入参数
  27.   Set Param = Com.CreateParameter("AuId", adVarChar, adParamInput, 11)
  28.   Param.Value = "172-32-1176"
  29.   Com.Parameters.Append Param
  30.   ' 在ADO对象中创建输出参数
  31.   Set Param = Com.CreateParameter("Return", adVarChar, adParamReturnValue, 20)
  32.   Com.Parameters.Append Param
  33.   ' 注:当创建参数时,你必须包括参数的大小(长度)
  34.   ' 加载命令对象的SQL字符串
  35.   Com.CommandText = "sp_ReturnsOutput"
  36.   Com.CommandType = adCmdStoredProc
  37.   ' 调用
  38.   Com.Execute
  39.   ' 显示结果
  40.   MsgBox "The first name of the author with an SS of " & _
  41.   Com.Parameters(0).Value & " is " & Com.Parameters(1).Value
  42.   ' 删除存储过程
  43.   Com.CommandText = "Drop Procedure Sp_ReturnsOutput"
  44.   Com.CommandType = adCmdText
  45.   Com.Execute
  46.   conn.Close
  47. End Sub
复制代码

[此贴子已经被zhuyiwen于2002-4-9 0:28:11编辑过]

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖1 订阅订阅
14#
发表于 2005-6-4 05:41:00 | 只看该作者
先收着看看.
13#
发表于 2005-1-16 21:06:00 | 只看该作者
我喜欢用简易语法,connection.exec "存储过程 '" & 参数一 & "','" & 参数一 & "'",只是返回值无法取得,有点遗憾。
12#
发表于 2004-11-25 22:43:00 | 只看该作者

能不能用类似方式解决我的这个问题?































call 的参数问题




我用ACCESS做的一个销售系统,想在一个模块中调用窗体“销售单明细”上的一个事件过程(按F4键的过程)。语句如下:




call form_销售单明细.Form_KeyDown(115, 0)




可每次调用的事件不同的话,就要写成:




call b




b是变量,在调用前赋值。因有多次不同的调用,所以要用变量。




可是怎么给b定义与赋值,希望能人帮我一下。
11#
发表于 2003-4-13 04:34:00 | 只看该作者
set rs=currentProject.Connection.Execute("存储过程 参数=Variant)

为什么不行?如果没有什么输出参数,只是返回表

set rs=currentProject.Connection.Execute("存储过程  参数1,参数2)

这样也通阿?
10#
发表于 2003-2-11 06:49:00 | 只看该作者
写成模组调用就好多了~
9#
发表于 2002-10-10 02:02:00 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
8#
发表于 2002-10-10 01:23:00 | 只看该作者
查询设计器不支持 @XXX SQL 构造。
7#
发表于 2002-7-21 02:10:00 | 只看该作者
您的只是取得存儲過程的反回值,而在第一個存儲過程中都有一個返加值的,不論成功執行與否。當然用返回值也可以取得輸了參數的值,如果輸出參數多於一個,而返有一個自定的返回值存在時,又會發生什麼情況哪?我想您沒有測試過吧。
在VBA中對輸入出參數類型蝚好用adparamoutput,同理此類型也可取得返回值,不過要先刷新參數方可行。

点击这里给我发消息

6#
 楼主| 发表于 2002-7-20 21:23:00 | 只看该作者
肯定是测试过的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-15 02:28 , Processed in 0.084504 second(s), 36 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表