Buenos dias, tengo un problema con una consulta en una base de datos access.
despues de realizar la consulta, cuando quiere llenar el recordset me dice que el objeto esta cerrado.
El tema es que la función que hace esa consulta funcionaba perfecto y yo nunca la modifique, lo que si hice fue agregar otras consultas (que si funcionan) en otras partes del programa.
esto que les pego es parte del código del boton que llama a la función, en éste se crea el recordset " Set mRsCajasaAnular = New ADODB.Recordset" y luego se lo pasa como parámetro a la otra función.
Código:
Private Sub cmdBuscarCajaaAnular_Click()
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
On Error Resume Next
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim sRta As String
Dim iRta As Integer
Dim sFchVto As String
Dim sFchProd As String
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
If Len(txtCajaaAnular.Text) = 0 Then
Call gsMensaje("Se debe indicar una caja a buscar", vbExclamation)
Exit Sub
End If
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Limpio la grilla:
Call mDef_List_Anulaciones
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
mRsCajasaAnular.Close
Set mRsCajasaAnular = Nothing
Err.Clear
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set mRsCajasaAnular = New ADODB.Recordset
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Obtengo los datos de las cajas que coincidan con el número ingresado:
iRta = giObtener_Datos_Caja(mRsCajasaAnular, Trim$(txtCajaaAnular.Text), sRta)
Esta es la función que me da error cuando quiere llenar el recordset. en ella se define otro recordset "Dim Rs As ADODB.Recordset", y luego con eso se llena el otro recordset "rRec" que se pasa como parámetro a la función.
Código:
Public Function giObtener_Datos_Caja(rRec As ADODB.Recordset, sNroCaja As String, sRta As String) As Integer
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
On Error Resume Next
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Obtengo los datos de las cajas que coincidan con el número ingresado.
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim Cn As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim sCadena As String
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set Cn = New ADODB.Connection
Set Rs = New ADODB.Recordset
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Cn.CursorLocation = adUseClient
Cn.Open gsParam.sConnAccessLocal
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
sRta = "OK"
sCadena = "SELECT * from Capturas WHERE NroCaja='" & sNroCaja & "' AND CodProd='" & gsDatosProducc.sCodProducto & "' AND NroOperacion='" & gsDatosProducc.sNroOperación & "' AND ESTADO=0" ' busco cajas no anuladas
Err.Clear
Rs.Open sCadena, Cn, adOpenDynamic, adLockBatchOptimistic
rRec.Open Rs
rRec.MoveFirst
If Err.Number = 3021 Then
' Caja no existe:
giObtener_Datos_Caja = 1
ElseIf Err.Number <> 0 Then
' Error de acceso:
sRta = Trim$(Err.Number) & ", " & Trim$(Err.Description)
giObtener_Datos_Caja = 2
Else
' Sin error:
giObtener_Datos_Caja = 0
End If
GoTo salir
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
salir:
Rs.Close
Cn.Close
Set Cn = Nothing
Err.Clear
End Function
Me estoy volviendo loco, el error que me tira es el N° 3704
Muchas gracias gente! Saludos