设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

123下一页
返回列表 发新帖
查看: 6965|回复: 25
打印 上一主题 下一主题

数据源如何调用存储过程?

[复制链接]
跳转到指定楼层
1#
发表于 2002-8-30 00:58:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想根据组合框选定值筛选子窗体数据源
子窗体数据源:存储过程是带输入参数的

能否用代码作成类似,一句代码包含输入参数:
Set RSC = CNN.Execute("存储过程 '" & 组合框选定值 & "'")

不想用窗体的输入参数方式做,能否用类似上面一句代码指定带输入参数的存储过程?

子窗体.Form.RecordSource =存储过程

谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2002-8-30 06:20:00 | 只看该作者
非要用存储过程吗? 能不能用sql语句动态赋子窗体的数据源?
3#
 楼主| 发表于 2002-8-30 15:48:00 | 只看该作者
存储过程调用调试比内嵌SQL方便,好象速度也快点吧。
4#
发表于 2002-8-30 17:02:00 | 只看该作者
我試過,目前除了采用窗體方式來接收輸入參數,或采用默認參數,其它的辦法還沒成功過。
5#
 楼主| 发表于 2002-9-17 03:17:00 | 只看该作者
终于解决啦!!!


DoCmd.RunSQL ("exec Tran授权日志 " & "'" & 功能 & "', '" & 动作 & "', '" & 变更前值 & "', '" & 变更后值 & "','" & mUserName & "'")



ALTER PROCEDURE Tran授权日志
@功能 nvarchar(28),
@动作 nvarchar(28),
@更新前 nvarchar(20),
@更新后 nvarchar(20),
@操作人 nvarchar(8)
AS BEGIN TRAN
INSERT INTO dbo.授权日志 (记录日期, 功能, 动作, 变更前值, 变更后值, 操作人)  VALUES( GETDATE(), @功能 ,@动作,@更新前 ,@更新后, @操作人)

if @@ERROR >0 OR @@ROWCOUNT<>1
   ROLLBACK TRAN
ELSE
   COMMIT TRAN
ENDIF
6#
发表于 2002-9-17 16:53:00 | 只看该作者
DoCmd.RunSQL ("exec Tran授权日志 " & "'" & 功能 & "', '" & 动作 & "', '" & 变更前值 & "', '" & 变更后值 & "','" & mUserName & "'")
這一句才是關珒所在,但這一句的變量,是直接來自窗體上的文本框的值嗎?
但這一句很容易出問題,如果參數輸入不完整,哪麼exec後的結果就可想而知了。
有沒有試過這個.docmd.runstortprocedure語句來調用哪,我就是在這條語句上碰碧的。
不多,還是結解了問題。多謝!
7#
发表于 2002-9-18 01:33:00 | 只看该作者
DoCmd.RunSQL ("exec usp_qry_production_cn @my_jobno=" & me.my_jobno.Value)
這條語句譔怎麼改寫,方可以用?
多謝!
8#
 楼主| 发表于 2002-9-18 04:19:00 | 只看该作者
DoCmd.RunSQL ("exec usp_qry_production_cn '" & Me.my_jobno.Value & "'")
9#
发表于 2002-9-18 16:32:00 | 只看该作者
老大這樣是行不通的,我懷穎是您否這樣傳遞成功過。
10#
发表于 2002-9-18 17:23:00 | 只看该作者
Public Function test_proc(my_jobno As String)
Dim comm As New ADODB.Command
Dim para As New ADODB.Parameter

With comm
  .ActiveConnection = CurrentProject.Connection
  .CommandType = adCmdStoredProc
  .CommandText = "usp_qry_production_cn"
End With

Set para = comm.CreateParameter(, adVarChar, adparainput, 10, mj_jobno)
comm.Parameters.Append para

If Not IsNull(my_jobno) Then
  comm.Execute '現在用傳統的方法調用成功,但問題是我怎樣把數據賦給一個表格哪?
Else
   MsgBox "請輸入一個JOBNO號碼", vbOKOnly, "err_info"
End If

Set para = Nothing
Set comm = Nothing

End Function
這是傳統的調用方法,但現在我怎麼才能實現實似於docmd.runsql哪樣的出現查詢數據窗體的效果哪?
正如KenjiSato所想的想的一樣,我也像好哪樣思考過,但從沒成功過,
現在參考了kenjisato的方法,可能是太笨,還是失敗了。
請kenjisato和高手們再指點。多謝!

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-5 02:55 , Processed in 0.159913 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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