本人现在在用VB6.0写一个信息管理程序,是C/S的,想在后台用存储过程完成对数据的操作。现在又这样一个存储过程:CREATE PROCEDURE [admin_now]
@name varchar
AS
DECLARE @R varchar
Select @R=mm from admin where name= @name
RETURN @R
GO ------用于获取用户表admin中从text1.text获取的用户名对应的密码
在VB6.0中关于调用这个存储过程的代码:
Private Sub cmd1_Click()
Dim Conn As New ADODB.Connection
Dim Cmd As New ADODB.Command
Dim Par As ADODB.Parameter
Dim y As String
y = Text1.Text
Conn.Open "Driver={SQL server};server=FS;uid=sa;pwd=;database=yd" ----建立连接
Cmd.CommandType = adCmdStoredProc ----要设置Command类型为存储过程
Set Cmd.ActiveConnection = Conn ----现在设置Command的数据连接
Set Par = Cmd.CreateParameter("R", adInteger, adParamReturnValue) -----返回值的参数
Cmd.Parameters.Append Par
Set Par = Cmd.CreateParameter("name", adChar, adParamInput, 20, y) -----调用的参数
Cmd.Parameters.Append Par
Cmd.CommandText = "admin_now"
Set DS = Cmd.Execute
MsgBox Cmd.Parameters("R").Value ----问题在这里,这个确定提示上面除了个提示按钮什么也没有,没有返回的@R的值
Conn.Close
Set Cmd = Nothing
Set Conn = Nothing
Set DS = Noting -----这里总是提示“类型不匹配”?
End Sub现在问题是返回的值看不到,而我想把这个返回的值赋给一个变量,然后判断值对不对,不知道这样的语句该怎样写?
我才学的调用存储过程,但书上写的都不清楚,不用具体语句是做什么用的,为什么这样写?各位老师能不能推荐本具体讲调用存储过程的帖子或书。我找的这段代码还是太多了,现在我还是搞不清怎样向存储过程传递多个参数,让控件直接显示存储过程返回的值或视图返回的查询结果(表格)。
最好有一个调用存储过程的函数,想这样:函数名(存储过程名,传递参数,)就好了,hehe .
我在线等老师们的解答,谢谢!
@name varchar
AS
DECLARE @R varchar
Select @R=mm from admin where name= @name
RETURN @R
GO ------用于获取用户表admin中从text1.text获取的用户名对应的密码
在VB6.0中关于调用这个存储过程的代码:
Private Sub cmd1_Click()
Dim Conn As New ADODB.Connection
Dim Cmd As New ADODB.Command
Dim Par As ADODB.Parameter
Dim y As String
y = Text1.Text
Conn.Open "Driver={SQL server};server=FS;uid=sa;pwd=;database=yd" ----建立连接
Cmd.CommandType = adCmdStoredProc ----要设置Command类型为存储过程
Set Cmd.ActiveConnection = Conn ----现在设置Command的数据连接
Set Par = Cmd.CreateParameter("R", adInteger, adParamReturnValue) -----返回值的参数
Cmd.Parameters.Append Par
Set Par = Cmd.CreateParameter("name", adChar, adParamInput, 20, y) -----调用的参数
Cmd.Parameters.Append Par
Cmd.CommandText = "admin_now"
Set DS = Cmd.Execute
MsgBox Cmd.Parameters("R").Value ----问题在这里,这个确定提示上面除了个提示按钮什么也没有,没有返回的@R的值
Conn.Close
Set Cmd = Nothing
Set Conn = Nothing
Set DS = Noting -----这里总是提示“类型不匹配”?
End Sub现在问题是返回的值看不到,而我想把这个返回的值赋给一个变量,然后判断值对不对,不知道这样的语句该怎样写?
我才学的调用存储过程,但书上写的都不清楚,不用具体语句是做什么用的,为什么这样写?各位老师能不能推荐本具体讲调用存储过程的帖子或书。我找的这段代码还是太多了,现在我还是搞不清怎样向存储过程传递多个参数,让控件直接显示存储过程返回的值或视图返回的查询结果(表格)。
最好有一个调用存储过程的函数,想这样:函数名(存储过程名,传递参数,)就好了,hehe .
我在线等老师们的解答,谢谢!
msgbox ds("R")
替换了MsgBox Cmd.Parameters("R").Value
然后加上dim ds as recordset
,我是想让返回的值赋给一个变量,不在MSGBOX中显示了
你把Option Explicit 加上是好习惯。
Dim strS As String '定义一变量
Dim adoconn As New ADODB.Connection
Dim adocomm As New ADODB.Command
Dim ReturnValue As Integer '调用存储过程的返回值
Dim y As String
y = "&Text1.Text&"
adoconn.ConnectionString = Adodc1.ConnectionString
adoconn.Open
Set adocomm.ActiveConnection = adoconn
adocomm.CommandText = "admin_now"
adocomm.CommandType = adCmdStoredProc
adocomm.Parameters(1) = "y"
adocomm.Parameters(2) = R 'OutputParameters可以为任意的字符串或数字
adocomm.Execute
ReturnValue = adocomm.Parameters(0) '存储过程的返回值,返回0则成功执行。
strS = adocomm.Parameters(2) '把存储过程的输出参数的值赋给变量strS
Text3.Text = strS但在这一句adocomm.Parameters(2) = R 提示“在对应所需名称或序数的集合中,未找到项目”,
这是怎么回事啊?
adoconn要先使用客户端游标adoconn.CursorLocation = adUseClient,然后再打开数据库。
的前面,但还是不行啊,还是提示“在对应所需名称或序数的集合中,未找到项目”
存储过程CREATE PROCEDURE [insert_ghs]
(@ghsID_1 [smallint],
@ghsname_2 [nvarchar](50),
@ghspym_3 [nvarchar](50))AS INSERT INTO [yd].[dbo].[ghs]
( [ghsID],
[ghsname],
[ghspym])
VALUES
( @ghsID_1,
@ghsname_2,
@ghspym_3)
GO
书上的代码是这样的:
模块Module1里面:
Public SQLusername As String
Public SQLpassword As String
Public Myconnection As New ADODB.Connection
然后主窗口:
Private Sub Form_Load()
Myconnection.ConnectionString = "Driver={SQL server};server=FS;uid=sa;pwd=;database=yd"
Myconnection.Open
End Sub
再是添加供货商窗口的“保存”按钮:
Private Sub ComSaveA_Click()
Dim A As String
Dim rsaddnew As ADODB.Recordset
Set rsaddnew = Myconnection.Execute("exec insert_ghs"& ""&Text1.Text&"',"& ""&Text2.Text&"',"& ""&Text3.Text&"")
----这一句总是提示“缺少:分隔符或”),这是咋回事,书上写错了
End Sub