2011-11-23 11 views
7

vorrei passare parametri in una stored procedure in SQL Server 2008 e vorrei memorizzare i risultati in un ADODB.Recordsetrun memorizzati i valori procedura e ritornare da VBA

Attualmente ho questo:

Public Sub UpdateWithStoredProcedure() 
     Dim cmd As New ADODB.Command 
     Dim conn As ADODB.Connection 
     Dim prm As ADODB.Parameter 
     Dim strConn As String 
     Dim strSQL As String 

     strConn = "Provider=SQLOLEDB.1;" & _ 
      "Data Source=(local); Initial Catalog=NorthWind;" & _ 
      "Integrated Security=SSPI" 

     Set conn = New ADODB.Connection 
     conn.Open strConn 

     Set cmd = New ADODB.Command 
     cmd.CommandText = "procOrderUpdate" 
     cmd.CommandType = adCmdStoredProc 
     cmd.ActiveConnection = conn 

     Set prm = cmd.CreateParameter("OrderID", adInteger, adParamInput) 
     cmd.Parameters.Append prm 
     cmd.Parameters("OrderID").Value = 1 

     Set prm = cmd.CreateParameter("OrderDate", adDate, adParamInput) 
     cmd.Parameters.Append prm 
     cmd.Parameters("OrderDate").Value = "1/1/2007" 

     Set prm = cmd.CreateParameter("ShipVia", adInteger, adParamInput) 
     cmd.Parameters.Append prm 
     cmd.Parameters("ShipVia").Value = 2 
     Set prm = cmd.CreateParameter("Freight", adCurrency, adParamInput) 
     cmd.Parameters.Append prm 
     cmd.Parameters("Freight").Value = "10.5" 

     'Execute the Stored Procedure 
     cmd.Execute 

     'Close the connection 
     conn.Close 
    End Sub 

La domanda è: come posso conservarlo in un recordset invece di eseguirlo?

+0

La vostra stored procedure scritto per restituire un set di record? –

+0

@tim mi dispiace puoi spiegare la differenza tra una stored procedure che restituisce un recordset e l'alternativa? –

+0

Non tutte le stored procedure sono progettate per restituire un set di record. Alcune stored procedure passano semplicemente le informazioni tramite i parametri "out". Hai provato il suggerimento di Pynner? –

risposta

8

Credo che tutto ciò che serve è questo

Dim Rst As ADODB.Recordset 

e questo

Set Rst = cmd.Execute 
Problemi correlati