Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/05/2013, 09:13
ivostr
 
Fecha de Ingreso: julio-2012
Mensajes: 7
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta Problema con recordset cerrado

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