function run_proc(byref cmd, proc_name, exec_type) on error resume next dim member, param cmd.activeConnection = ado cmd.commandText = proc_name cmd.commandType = adCmdStoredProc cmd.parameters.refresh for each member in cmd.parameters param = replace(member.name, "@", "") if trim( request(param) &"" ) <> "" then cmd.parameters(member.name) = request(param) else cmd.parameters(member.name) = null end if next cmd.execute , , exec_type if err.number <> 0 then run_proc = err.description else run_proc = true end if end function function run_proc_return(byref cmd, proc_name, exec_type, byref retval, ret_type) on error resume next dim member, param cmd.activeConnection = ado cmd.commandText = proc_name cmd.commandType = adCmdStoredProc cmd.parameters.refresh for each member in cmd.parameters param = replace(member.name, "@", "") if trim( request(param) &"" ) <> "" then cmd.parameters(member.name) = request(param) elseif param = "RETURN_VALUE" then cmd.parameters("@RETURN_VALUE").direction = adParamReturnValue cmd.parameters("@RETURN_VALUE").type = ret_type else cmd.parameters(member.name) = null end if next cmd.execute , , exec_type if err.number <> 0 then retval = empty run_proc_return = err.description else retval = cmd.parameters("@RETURN_VALUE") run_proc_return = true end if end function