| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 486 人关注过本帖
标题:求助下关于VB6连接SQL Sever 2008数据库的问题
只看楼主 加入收藏
zhaochang526
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-4-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
求助下关于VB6连接SQL Sever 2008数据库的问题
程序代码:
Private Sub Borrow_Click()                          '单击“借书”按钮
      Dim Readernumber, ISBN, BookID As String
      Dim in_ReaderID, in_ISBN, in_BookID, out_str '储存过程执行的参数
      Dim ReturnValue As Integer                   '定义返回值变量
      Dim Strs As String
      Readernumber = ReaderID.Text
      ISBN = T_ISBN.Text
      BookID = T_BookID.Text
      '如果借书证号、ISBN、图书ID均不为空
      If Readernumber <> "" And ISBN <> "" And BookID <> "" Then
             = "Book_Borrow"
             = adCmdStoredProc
            '追加参数法调用存储过程
            Set in_ReaderID = SqlCmd.CreateParameter("@in_ReaderID", adChar, adParamInput, 8)
            SqlCmd.Parameters.Append (in_ReaderID)
            Set in_ISBN = SqlCmd.CreateParameter("@in_ISBN", adChar, adParamInput, 18)
            SqlCmd.Parameters.Append (in_ISBN)
            Set in_BookID = SqlCmd.CreateParameter("@in_BookID", adChar, adParamInput, 10)
            SqlCmd.Parameters.Append (in_BookID)
            Set out_str = SqlCmd.CreateParameter("@out_str", adChar, adParamInput, 30)
            SqlCmd.Parameters.Append (out_str)
            '参数赋值
            SqlCmd("@in_ReaderID") = ReaderID.Text
            SqlCmd("@in_ISBN") = T_ISBN.Text
            SqlCmd("@in_BookID") = T_BookID.Text
            SqlCmd.Execute (ReturnValue)            '执行存储过程,并将返回值赋给ReturnValue
            Strs = SqlCmd.Parameters("@out_str")    '将存储过程输出参数的值赋给变量Strs
            MsgBox (Strs)                           '给出提示信息
            '删除参数
            SqlCmd.Parameters.delete ("@in_ReaderID")
            SqlCmd.Parameters.delete ("@in_ISBN")
            SqlCmd.Parameters.delete ("@in_BookID")
            SqlCmd.Parameters.delete ("@out_str")
            '刷新BorrowADO控件
            BorrowADO.RecordSource = "SELECT * FROM RBL WHERE 借书证号='" + Trim(Readernumber) + "'"
            BorrowADO.Refresh
      Else
            MsgBox ("请输入正确的借书信息!")
      End If
End Sub
数据库已经设置好,Book_Borrow存储过程也设置好了,在SQL中执行未出错
代码中 SqlCmd.Execute (ReturnValue)            '执行存储过程,并将返回值赋给ReturnValue    这一行出错
实时错误'-2147217904 (80040e10)'
过程或函数'Book_Borrow'需要参数'@out_str',但未提供该参数
希望有高手可以帮我查查错,感谢
搜索更多相关主题的帖子: 数据库 
2015-04-07 10:59
zhaochang526
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-4-4
收藏
得分:0 
程序代码:
USE MBOOK

GO
CREATE PROCEDURE Book_Borrow @in_ReaderID char(6),@in_ISBN char(18),
                             @in_BookID char(10),@out_str char(30)  OUTPUT
AS
BEGIN
   /*判断是否存在该读者*/
   IF NOT EXISTS(SELECT * FROM TReader WHERE 借书证号=@in_ReaderID)
   BEGIN
       SET @out_str='该读者不存在'
       RETURN 0
   END
   /*判断是否存在该图书*/
   IF NOT EXISTS(SELECT * FROM TBook WHERE ISBN=@in_ISBN)
   BEGIN
       SET @out_str='该图书不存在'
       RETURN 0
   END
   /*判断借书量是否已经到了借书上限数5*/
   IF(SELECT 借书量 FROM TReader WHERE 借书证号=@in_ReaderID)=5
   BEGIN
       SET @out_str='读者借书量不能大于5'
       RETURN 0
   END
   /*判断库存量是否为0*/
   IF (SELECT 库存量 FROM TBook WHERE ISBN=@in_ISBN)=0
   BEGIN
       SET @out_str='图书库存量为0'
       RETURN 0
   END
   /*判断读者是否已经借过该书*/
   IF @in_ISBN IN (SELECT ISBN FROM TLend WHERE 借书证号=@in_BookID)
   BEGIN
       SET @out_str='读者已经借过该书'
       RETURN 0
   END
   /*判断该书是否已经被借*/
   IF EXISTS(SELECT * FROM TLend WHERE 图书ID=@in_BookID)
   BEGIN
       SET @out_str='该图书ID已存在'
       RETURN 0
   END
   BEGIN TRAN                  /*开始一个事务*/
   /*插入借书记录*/
   INSERT INTO TLend(借书证号,ISBN,图书ID,借书时间)
               VALUES(@in_ReaderID,@in_ISBN,@in_BookID,GETDATE())
   IF @@ERROR>0                /*如果前面一条SQL语句出错则回滚事务并返回*/
   BEGIN
       ROLLBACK TRAN
       SET @out_str='执行过程中遇到错误'
       RETURN 0
   END
   UPDATE TReader SET 借书量=借书量+1 WHERE 借书证号=@in_ReaderID
   IF @@ERROR>0                /*如果前面一条SQL语句出错则回滚事务并返回*/
   BEGIN
       ROLLBACK TRAN
       SET @out_str='执行过程中遇到错误'
       RETURN 0
   END
   UPDATE TBook SET 库存量=库存量-1 WHERE ISBN=@in_ISBN
   IF @@ERROR>0                /*如果前面一条SQL语句出错则回滚事务并返回*/
   BEGIN
       ROLLBACK TRAN
       SET @out_str='执行过程中遇到错误'
       RETURN 0
   END
   UPDATE TBLend SET 是否借出=1 WHERE 图书ID=@in_BookID
   IF @@ERROR=0                /*如果所有语句都不出错则结束事务并返回*/
   BEGIN
       COMMIT TRAN
       SET @out_str='借书成功'
       RETURN 1
   END
   ELSE                        /*如果执行出错则回滚所有操作并返回*/
   BEGIN
       ROLLBACK TRAN
       SET @out_str='执行过程中遇到错误'
       RETURN 0
   END
END
这是在SQL 2008中执行的Borrow_Book过程

2015-04-07 11:01
xzlxzlxzl
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖北
等 级:贵宾
威 望:125
帖 子:1091
专家分:5825
注 册:2014-5-3
收藏
得分:20 

存储过程的超级陌生
2015-04-07 11:11
快速回复:求助下关于VB6连接SQL Sever 2008数据库的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020744 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved