列入:Tb_AA
 code  username 
  1       aaa
  2       bbb
  3       ccc
创建存储过程
create proc pro_AA
as
begin
set nocount on
select * from Tb_AA
set nocount off
end
 ---- 执行这个存储过程应该是返回三条记录集现在我用vb去调用
 Dim con As New ADODB.Connection
 Dim rs2 As New ADODB.Recordset
 Dim mycom As New ADODB.Command    StrCon = "Provider=SQLOLEDB.1;Password=" & strPassWord & ";Persist Security Info=True;User ID=" & strUserName & ";Initial Catalog="数据库名";Data Source=."
    con.CommandTimeout = 3000
    con.ConnectionString = StrCon
    con.Open
  ''''''''数据库连接没问题
  Set mycom.ActiveConnection = con
  mycom.CommandText = "pro_AA"
  mycom.CommandType = adCmdStoredProc
  Set rs2 = mycom.Execute("pro_AA")
 执行到这里 rs2中应该有三条记录集  可是我在程序中得到rs2的记录集为空???????

解决方案 »

  1.   

    CON.CursorLocation = adUseClient'加上这句
    CON.Open
      

  2.   

    Set rs2 = mycom.Execute("pro_AA") '这句可以写为Set rs2 = mycom.Execute,不需要再使用存储过程名称
      

  3.   

    直接用
    Dim con As New ADODB.Connection 
    Dim rs2 As New ADODB.Recordset     StrCon = "Provider=SQLOLEDB.1;Password=" & strPassWord & ";Persist Security Info=True;User ID=" & strUserName & ";Initial Catalog="数据库名";Data Source=." 
        con.CommandTimeout = 3000 
        con.ConnectionString = StrCon 
        con.Open 
      ''''''''数据库连接没问题 
    Set rs2 = con.Execute("exec pro_AA")
      

  4.   

    好像记得存储过程中必须最后一句是 SELECT 语句,所以两句 set nocount 是不需要的。
      

  5.   

    用SQL查询分析器执行
    pro_AA
    看是否有数据?
      

  6.   

    存储过程
    create proc pro_AA 
    as 
    begin 
    set nocount on 
    select * from Tb_AA 
    set nocount off 
    end 

    set nocount off 
    不需要
     Dim DaCn As New ADODB.Connection
     Dim DaRs As New ADODB.Recordset
     Dim Sql As String Sql="exec pro_AA"
     DaCn.ConnectionString = StrCon 
     DaCn.Open
     DaRs.CursorLocation = adUseClient
     DaRs.Open Sql, DaCn, adOpenStatic, adLockReadOnly
     if not DaRs then
      ......
     end if
     DaRs.Close
     DaCn.Close
     Set DaRs = Nothing
     Set DaCn = Nothing 
      

  7.   

    用SQL查询分析器执行 
    pro_AA 
    看是否有数据?若有:
    Dim DaCn As New ADODB.Connection 
    Dim DaRs As New ADODB.Recordset 
    Dim Sql As String Sql="exec pro_AA" 
    DaCn.ConnectionString = StrCon 
    DaCn.CursorLocation = adUseClient 
    DaCn.open StrCon 
    DaRs.Open strsql,DaCn,adOpenStatic, adLockReadOnly===用下面的语句看下,DsRs的数据源SQL
    debug.print DaRs.Source