在VB中如何把一个对像,如结果集(recorderset) 做为参数传递给函数进行处理??????如:主程序:
  Dim rs As New ADODB.Recordset
 dim strSQL as string 
  strSQL="select......."
  set rs=cnn.execute(strSQL)
  myfunction(rs)
  ...........
myfunction过程 public sub myfunction(这里怎么写)
  内部还需不需要再处理,如何处理呢?
 end sub
我自已这样写但是提示我说类型不对。public sub myfunction(recS as adodb.recorderset)
    do while recS.eof 
      ................
    loop
end sub

解决方案 »

  1.   

    recorderset?
    写错了,改成recordset就可以了
      

  2.   


    public sub myfunction(recS as adodb.recorderset)
        dim rs as adodb.recordset
        set rs = recs
        do while recS.eof 
          ................
        loop
    end sub
      

  3.   

    是這樣
    public sub myfunction(recS as adodb.recordset)
        do while recS.eof 
          ................
        loop
    end sub
      

  4.   

    楼主太粗心了
    recorderset该是Recordset吧
      

  5.   

    Option Explicit
    Dim adocon As ADODB.Connection
    Private Sub Form_Load()
    Set adocon = New ADODB.Connection
    adocon.ConnectionString = "Provider = SQLOLEDB.1;Password = ; Persist Security Info = True;User ID = sa;Initial Catalog = DRUGDB; Data Source = 192.168.30.122"
    adocon.Open
    Dim rs As ADODB.Recordset
    Set rs = New ADODB.Recordset
    rs.Open "select user_id from users", adocon, adOpenForwardOnly, adLockReadOnly, adCmdText
    ProcRs rs
    rs.Close
    Set rs = Nothing
    End Sub
    Private Sub ProcRs(rs As ADODB.Recordset)
    If Not rs.EOF Then
      rs.MoveFirst
        Do While Not rs.EOF
           do something
         rs.MoveNext
        Loop
    End If
    End Sub
      

  6.   

    byref 就可以了。比如有一个
    rs.open .......function aa(byref objRs as adodb.recordset)
        '这里操作 objRs
        '如果关闭了 objRs
        ' rs 也会关闭
    end function
      

  7.   

    Private Function XXXRead(rs As Recordset) As CXXX
      

  8.   

    楼主太粗心了
    recorderset该是Recordset吧
    嘿嘿
      

  9.   

    我测试了一上,没有问题
    Option Explicit
    Dim Cnn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Private Sub Command1_Click()
      Dim rs As New ADODB.Recordset
      Dim strSQL As String
      strSQL = "select * from hrms_emp "
      Set rs = Cnn.execute(strSQL)
      Myfunction rs
    End SubPrivate Sub Form_Load()
       Cnn.ConnectionString = Adodc1.ConnectionString
       Cnn.Open
    End SubPublic Sub Myfunction(ByVal recS As ADODB.Recordset)
        Do While Not recS.EOF
          Debug.Print recS!empname
          recS.MoveNext
        Loop
    End Sub