En esta ocasiion necesito de su colaboracion para resolver el siguiente problemita...
Estoy desarrollando un clase de tipo utilitaria que sirva como capa intermedia entre la interrfaz de usuario y la base de datos. En dicha clase tengo la siguiente funcion
Código:
La funcion manda a llamar a otra funcion que me permite ejecutar una sentencia TSQL cuaquiera, pasandole los parametros que requiere a un objecto ADO Command.Public Function SaveRecords(Procedure As String, CommandType As ADODB.CommandTypeEnum, ParamArray Param() As Variant) As ADODB.Recordset Set SaveRecords = LoadProcedure(Procedure, CommandType, Param()) End Function
Los parametros son lo siguientes:
- Procedure: contiene la sentencia TSQL a ejecutar (SELECT, INSERT, UPDATE, SP)
- CommandType: Identificador del tipo de sentecia a ejecutar, segun lo indicado por ADODB.CommandTypeEnum
- Param(): listado de parametros a utilizar por la funcion, propiamente dicho para los SP
Ejemplo:
Código:
DOnde Objecto.SaveRecords "PA_SaveRecord", adCmdStoredProc, txtSucursal, txtMonto, txtFecha
"PA_SaveRecord", es un procedimiento que se encuentra en el servidor,
adCmdStoredProc, es un valor que le indica al command el tipo de TSQL a ejecutar
txtSucursal, txtMonto, txtFecha, son parte de los parametros que recibe "PA_SaveRecord"
La funcion LoadProcedure simplemente le pasa los parametros de la funcion SaveRecords y ejecuta un objeto command.
Código:
Ahora el punto esta que al pasar el Param() de la funcion SaveRecords a la funcion LoadProcedure, este se va como un elemento del arreglo que esta dentro de la funcion LoadProcedure y en este punto no se como acceder a los elementos que se pasaron como parametros por la funcion SaveRecords.Public Function LoadProcedure(Procedure As String, CommandType As ADODB.CommandTypeEnum, ParamArray Param() As Variant) As ADODB.Recordset On Error GoTo ValidateErr Dim comMain As ADODB.Command, param2 As Variant If cn Is Nothing Then Set cn = New ADODB.Connection If cn.State <> adStateOpen Then cn.Open StrConn If comMain Is Nothing Then Set comMain = New ADODB.Command comMain.CommandType = CommandType comMain.CommandText = Procedure If UBound(Param(), 1) > 0 Then Select Case TypeName(Param(0)) Case "Integer" comMain.Parameters.Append comMain.CreateParameter("IdParam", adInteger, , , Param(0)) Case "String" comMain.Parameters.Append comMain.CreateParameter("IdParam", adBSTR, , Len(CStr(Param(1))), CStr(Param(1))) Case "Date" comMain.Parameters.Append comMain.CreateParameter("IdParam", adDate, , , Param) End Select End If comMain.ActiveConnection = cn Set LoadProcedure = comMain.Execute ValidateErr: msgbox MsgBox Err.Description, vbInformation, Err.Source & " - Error Number: " & Err.Number Err.clear ValidateExit: If comMain.State = adStateOpen Then comMain.Cancel Set comMain = Nothing End Function
Agradeceria la ayuda que me puedan brindar en este tema