Access - funcion busqueda

 
Vista:

funcion busqueda

Publicado por ute (69 intervenciones) el 14/09/2006 02:18:13
TENGO UN FORMULARIO PRINCIPAL Y DOS FORMULARIOS RELACIONADOS

EN EL ULTIMO SUBFORMULARIO CARGO UN NUMERO DE PATEN Y PUSE UN EVENTO EN DESPUES DE RECIBIR EL ENFOQUE QUE ES EL SIGUIENTE

DIM XVAR=VARIANT

XVAR=DLOOKUP("[FECHA BAJA SEGURO]","FLOTA","[PATENTE]=[FORMULARIOS]![DETALLE POLIZAS SUBFORMULARIOS]![PATENTE]")

DOCMD.OPENFORM "[CALCULO]"

LA FUNCION ME DA ERROR CUANDO LA EJECUTO ERROR 2001

ALGUIEN ME PUEDE AYUDAR Y DECIRME CUAL ES EL ERROR

Y UNA SEGUNDA PREGUNTA YO QUIERO QUE EL REGISTRO QUE UBICA LA FUNCION BUSQUEDA ME LO CARGE EN EL FORMULARIO CALCULO PARA QUE YO LO VEA.-


MUCHAS GRACIAS

UTE
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Solucionar error 2001 al abrir formulario y cargar registro encontrado

Publicado por Alejandro (4142 intervenciones) el 25/07/2023 22:03:13
El error 2001 que estás experimentando generalmente ocurre cuando intentas abrir un formulario con código VBA y el formulario especificado no se encuentra o no puede abrirse en ese momento. Pueden haber varias razones para este error, pero es probable que el problema esté relacionado con la forma en que estás intentando abrir el formulario "CALCULO" desde el evento "Después de recibir el enfoque" del subformulario "DETALLE POLIZAS SUBFORMULARIOS".

Veamos cómo puedes corregir esto y cargar el registro encontrado por la función DLookup en el formulario "CALCULO":

1. Corregir el código del evento "Después de recibir el enfoque":
En lugar de abrir directamente el formulario "CALCULO" en el evento "Después de recibir el enfoque", puedes almacenar el valor obtenido por la función DLookup en una variable global y luego usar esa variable para abrir el formulario. Así evitarás posibles errores de búsqueda.

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Patente_AfterUpdate()
    Dim xVar As Variant
    xVar = DLookup("[FECHA BAJA SEGURO]", "FLOTA", "[PATENTE]='" & Me.Patente & "'")
    If Not IsNull(xVar) Then
        ' Almacenar el valor en una variable global
        TempVars.Add "FechaBajaSeguro", xVar
    Else
        ' Si no se encontró el valor, eliminar la variable global si existiera
        If TempVars.Exists("FechaBajaSeguro") Then
            TempVars.Remove "FechaBajaSeguro"
        End If
    End If
End Sub

2. Abrir el formulario "CALCULO" en otro evento:
Para cargar el registro encontrado en el formulario "CALCULO", puedes abrirlo en otro evento, como en el evento "Al hacer clic" de un botón. En este evento, puedes utilizar la variable global para filtrar los registros que se muestran en el formulario.

1
2
3
4
5
6
7
8
9
Private Sub btnAbrirCalculo_Click()
    If TempVars.Exists("FechaBajaSeguro") Then
        Dim strFiltro As String
        strFiltro = "[Fecha Baja Seguro] = #" & TempVars!FechaBajaSeguro & "#"
        DoCmd.OpenForm "CALCULO", , , strFiltro
    Else
        MsgBox "No se encontró el registro correspondiente.", vbExclamation
    End If
End Sub

Con estos cambios, el valor obtenido por la función DLookup se almacena en la variable global "FechaBajaSeguro". Luego, al hacer clic en el botón para abrir el formulario "CALCULO", se utiliza el valor de la variable global para filtrar los registros que se mostrarán en el formulario.

Recuerda adaptar el código según los nombres reales de los campos y formularios en tu base de datos. Además, verifica que los nombres de los formularios sean correctos y que el formulario "CALCULO" tenga el campo "Fecha Baja Seguro" como parte de su origen de registros.

Espero que esto te ayude a resolver el problema y cargar el registro en el formulario "CALCULO" como deseas. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar