Jim Dettman
jimdettman at verizon.net
Mon May 7 15:33:25 CDT 2007
John, <<If anyone has code that they are willing to share that executes a stored procedure in SQL Server , passing in a parameter, executed from VBA out in Access I would be most appreciative.>> Below is a ADO and a DAO sample of calling of a stored proc. Also a little function I've found that helps tremendously in figuring out exactly what a SP is looking for from the Access point of view. Jim. Function GetSecurityGroupsADO() As String ' Returns a string of the security groups to which the current user belongs. ' ADO Version for use with custom apps. Const RoutineName = "GetSecurityGroupsADO" Const Version = "1.0" Dim strConnect As String Dim cnn As ADODB.Connection Dim cmd As ADODB.Command Dim prm As ADODB.Parameter On Error GoTo GetSecurityGroupsADO_Error Set cnn = New ADODB.Connection cnn.Open "DSN=SYS" Set cmd = New ADODB.Command cmd.ActiveConnection = cnn cmd.CommandText = "trvSp_CurrentGroup" cmd.CommandType = adCmdStoredProc Set prm = cmd.CreateParameter("GroupID", adVarChar, adParamOutput, 1000) cmd.Parameters.Append prm cmd.Execute GetSecurityGroupsADO = cmd.Parameters("GroupID") GetSecurityGroupsADO_Exit: On Error Resume Next Set prm = Nothing Set cmd = Nothing cnn.Close Set cnn = Nothing Exit Function GetSecurityGroupsADO_Error: UnexpectedError ModuleName, RoutineName, Version, Err.Number, Err.Description, Err.Source, VBA.Erl GetSecurityGroupsADO = "" Resume GetSecurityGroupsADO_Exit End Function ===================================== Function GetUserSecurityGroupsDAO() As String ' Special version of GetUserSecurityGroups for use with Traverse. ' NOTE: Does not use normal error handling as this is ' for use with Traverse ONLY Dim qdf As QueryDef Dim sql As String On Error GoTo GetUserSecurityGroupsDAO_Error sql = "{? = call trvsp_CurrentGroup (?)}" Set qdf = gConSQLSys.CreateQueryDef("", sql) qdf.Parameters(0).Direction = dbParamReturnValue qdf.Parameters("@Groups").Direction = dbParamOutput qdf.Execute If qdf.Parameters(0) = 0 Then sql = qdf.Parameters("@Groups") Else sql = "" End If GetUserSecurityGroupsDAO = sql GetUserSecurityGroupsDAO_Exit: On Error Resume Next Set qdf = Nothing Exit Function GetUserSecurityGroupsDAO_Error: GetUserSecurityGroupsDAO = "" Resume GetUserSecurityGroupsDAO_Exit End Function ===================================== Sub GetSPParameters(strSPName As String) ' Return the attributes of the parameters of a stored procedure. ' ie. from the debug window: ' Call GetSPParameters("qrySMGetPeriod") Dim strConnect As String Dim cnn As ADODB.Connection Dim cmd As ADODB.Command Dim prm As ADODB.Parameter 10 Set cnn = New ADODB.Connection 20 cnn.Open "DSN=SYS" 30 Set cmd = New ADODB.Command 40 cmd.ActiveConnection = cnn 50 cmd.CommandText = strSPName 60 cmd.CommandType = adCmdStoredProc 70 cmd.Parameters.Refresh 80 For i = 0 To cmd.Parameters.count - 1 90 Debug.Print "Parameter: " & i 100 Debug.Print " Name: " & cmd.Parameters(i).Name 110 Debug.Print " Type: " & cmd.Parameters(i).Type 120 Debug.Print "Direction: " & cmd.Parameters(i).Direction 130 Debug.Print " Size: " & cmd.Parameters(i).Size 140 Debug.Print " Attrib: " & cmd.Parameters(i).Attributes 150 Debug.Print " Value: " & cmd.Parameters(i).Value 155 Debug.Print "" 160 Next i 170 cnn.Close 180 Set cnn = Nothing End Sub -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of JWColby Sent: Monday, May 07, 2007 10:06 AM To: 'Access Developers discussion and problem solving'; dba-sqlserver at databaseadvisors.com Subject: [AccessD] Thanks for the help <<snip>>