你的存储过程这样写只能得到一个返回值,是无法得到结果集的,按下面这样修改:
CREATE PROCEDURE  prcReadAttend_BlackList  
@NetID smallint, @NodeID smallint
as
select CardID 
from Attend_BlackList
where Attend_BlackList.NetID=@NetID and Attend_BlackList.NodeID=@NodeID
GOData Environment没用过,给你一段ADO的例子供参考:
Option ExplicitPrivate Sub Form_Load()
    Form1.AutoRedraw = True
    Dim Sc As String, Result As String
    Dim Cn As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim Rs As New ADODB.Recordset
    Dim A(5) As String, B(5) As String
    Dim i As Integer
    i = 0
        
    Sc = "Driver={SQL Server}; Server=(local);Uid=sa;pwd=;database=Employees"
    Cn.Open Sc
    With cmd
        .ActiveConnection = Cn
        .CommandType = adCmdStoredProc
        .CommandText = "proc_aa"
        .Parameters("@T_no") = "2002"    '输入参数值
    End With
    Set Rs = cmd.Execute()
    Do While Not Rs.EOF
       A(i) = Rs("T_no")    '取结果集
       B(i) = Rs("Mod")     'T_no和Mod均为表aa中的字段
       Rs.MoveNext
       i = i + 1
    Loop
    Rs.Close
    Set Rs = Nothing
    Set Cn = Nothing
    For i = 0 To UBound(A)      '显示结果
        Print A(i) & "  " & B(i)
    Next i
End Sub存储过程代码:
CREATE PROCEDURE proc_aa
    @T_no char(4)
AS
select T_no, Mod from aa where T_no = @T_no

解决方案 »

  1.   

    我试过了,不过有一个奇怪的现象。有的存储过程参数名以"@"打头就出错。把"@"删除就不出错。如下所示是存取存储过程的VB源码:
      With DE1.Commands("PrcReadAttend_BlackList")
          .Parameters("NetID") = AttendIni.NetID
          .Parameters("NodeID") = NodeID
          Set rstBlack = .Execute
       End With
       iBlackCount = rstBlack.RecordCount存储过程代码如下:CREATE PROCEDURE  prcReadAttend_BlackList  
    @NetID smallint, @NodeID smallint
    as
    select Attend_BlackList.CardID 
    from Attend_BlackList
    where Attend_BlackList.NetID=@NetID and Attend_BlackList.NodeID=@NodeID
    GO请高手帮忙解决
      

  2.   

    Data Environment也可以将返回的结果集绑定到grid控件
    set datagrid=数据环境名
      

  3.   

    "@" 这个的问题我也遇到过,当我在数据环境中建立一个新的Command 时是要加"@",当我对 Command 中的存储过程刷新了后再调用,就不能在参数前加"@",
    这可能是数据环境的一个BUG吧
      

  4.   

    如果把老的COMMAND 删除,再加进来,那么所有调用时,参数又要加"@",也就是回复原样了,所以我认为刷新一个COMMAND 时最好把它删除了再加进来.