怎么将存贮过程通过 ADO Data Control 和MSHFlexGrid 绑定

解决方案 »

  1.   

    使用ado对象,存储过程绑定到datagrid上的
    Option Explicit
    Private mConn As ConnectionPrivate Sub Command1_Click()
        Dim rs As ADODB.Recordset
        Dim cmd As ADODB.Command
        Dim param As ADODB.Parameter
        
        Set cmd = New ADODB.Command
        cmd.ActiveConnection = mConn
        cmd.CommandText = "insert_users"
        cmd.CommandType = adCmdStoredProc
        
        Set param = cmd.CreateParameter("truename", adChar, adParamInput, 20, Trim(txttruename.Text))
        cmd.Parameters.Append param
        
        Set param = cmd.CreateParameter("regname", adChar, adParamInput, 20, Trim(txtregname.Text))
        cmd.Parameters.Append param
        
        Set param = cmd.CreateParameter("pwd", adChar, adParamInput, 20, Trim(txtpwd.Text))
        cmd.Parameters.Append param
        
        Set param = cmd.CreateParameter("sex", adChar, adParamInput, 20, Trim(txtsex.Text))
        cmd.Parameters.Append param
        
        Set param = cmd.CreateParameter("email", adChar, adParamInput, 20, Trim(txtemail.Text))
        cmd.Parameters.Append param
        
        Set rs = cmd.Execute
        
        Command2_Click
        
    End SubPrivate Sub Command2_Click()
        Dim rs As ADODB.Recordset
        Dim cmd As ADODB.Command
        Dim param As ADODB.Parameter
        
        Set rs = New ADODB.Recordset
        Set cmd = New ADODB.Command
        cmd.ActiveConnection = mConn
        cmd.CommandText = "select_users"
        cmd.CommandType = adCmdStoredProc
        
        mConn.CursorLocation = adUseClient '设置为客户端    Set rs = cmd.Execute()    MsgBox rs.RecordCount
        Set DataGrid1.DataSource = rs
        DataGrid1.RefreshEnd Sub
    Private Sub Form_Load()
        'open the connection
        Set mConn = New Connection
        
        mConn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=Test;Data Source=yang"
        mConn.Open
        Dim rs As New ADODB.Recordset
        Set rs = New ADODB.Recordset
        rs.Open "users", mConn, adOpenStatic, adLockPessimistic
        
    '    MsgBox rs.RecordCountEnd SubPrivate Sub Form_Unload(Cancel As Integer)    mConn.Close
        Set mConn = Nothing
    End Sub
      

  2.   

    存储过程
    CREATE PROCEDURE insert_users @truename char(20), @regname char(20),@pwd char(20),@sex char(20),@email char(20)
    AS
    insert into users(truename,regname,pwd,sex,email) values(@truename,@regname,@pwd,@sex,@email)
    GOCREATE PROCEDURE select_users 
    AS
    select * from users
    GO
      

  3.   

    online得思維就是和偶得不一樣,嘿嘿~~其實你把下半段給他就得了其實簡單一點就是:
    Option Explicit
    Private Rs As New ADODB.Recordset
    Private Conn As New ADODB.ConnectionPrivate Sub Form_Load()
      Dim strConn As String
      strConn = "Provider=SQLOLEDB.1;Password=admini;Persist Security Info=True;User ID=admin;Initial Catalog=Northwind;Data Source=ITSRV"
      Conn.CursorLocation = adUseClient
      
      Conn.Open strConn
      
       Set Rs = Conn.Execute("  exec test_prc   ")
      Set Me.MSHFlexGrid .DataSource = Rs
      
    End SubCREATE PROCEDURE test_prc 
    AS
    select * from users
    GO