Dim objUtil As Inventory.InvUtilities Dim MyConn As ADODB.Connection Dim objCmd As ADODB.Command Dim rs As ADODB.Recordset Dim strStoredProc As String Dim lngRecordsAffected As Long ' Create the utility object used to get the connection Set objUtil = CreateObject("Inventory.InvUtilities") Set MyConn = objUtil.GetConnection() ' Connection object CursorLocation is declared as adUseClient Set objCmd = New ADODB.Command Set rs = New ADODB.Recordset rs.CursorLocation = adUseClient ' Make sure it is client side With objCmd .ActiveConnection = MyConn .CommandText = "usp_GetSKUAttributesListByName" .CommandType = adCmdStoredProc Set rs = .Execute(lngRecordsAffected, Array(strName), adCmdStoredProc) .ActiveConnection = Nothing End With ' strStoredProc = "usp_GetSKUAttributesListByName " & "('" & Trim(strName) & "')" ' ' With rs ' .CursorLocation = adUseClient ' .Open strStoredProc, MyConn, adOpenForwardOnly, adLockReadOnly, adCmdStoredProc ' .ActiveConnection = Nothing ' End With Set GetAttribsByName = rs ' To pass the recordset back ' Clean up references Set rs = Nothing MyConn.Close ' The recordset data goes away at this command Set MyConn = Nothing Set objUtil = Nothing Exit FunctionI am missing something here but I don't know what it is.