Access - Ayuda con Formulario; Ir a un registro con SELECT CASE

 
Vista:

Ayuda con Formulario; Ir a un registro con SELECT CASE

Publicado por Carlos (4 intervenciones) el 24/09/2019 16:00:48
Hola amigos de LaWebdelProgramador!!.

Necesito de su ayuda y orientación con un problema que con mi poca experiencia en ACCESS no he sabido resolver.
Tengo una base de datos de Pacientes desde donde administro CASOS que pueden estar ACTIVOS o CERRADOS. Y en donde a través de un Formulario de nombre "INGRESOS" puedo ingresar los datos de un paciente nuevo y así crear un CASO nuevo que por defecto se crea como ACTIVO, generando un ID único (y autoincrementable) de CASO.
Ahora bien, al ingresar el RUT del paciente ("RUTPAC") en el cuadro de texto, tengo un procedimiento de evento por código para que, "Después de actualizar", el Rut ingresado busque coincidencia en la Tabla de Casos Activos y me avise si el Paciente ya tiene un Caso Activo, de ser así, quisiera que me de la opción de Ir a ver ése registro específico, y que además anule el registro que se estaba haciendo; y por el contrario, si no encuentra coincidencia me permita continuar con el ingreso del Paciente sin dar ningún aviso.

Logro que el Rut busque la coincidencia, y me aparezca el aviso con la pregunta y opciones de "¿Desea ver el registro?" "Si o No", pero no logro que al dar SI, cierre el Formulario "INGRESOS" y me abra el Formulario "ACTIVOS" con el registro específico.
¿Me pueden ayudar por favor a ver qué estoy haciendo mal?.
Les copio el código que tengo el cuadro de texto "Rut Paciente", que se ejecuta "Después de actualizar".

Private Sub RUTPAC_AfterUpdate()
Dim vElem, vElemB As Variant
vElem = Me.RUTPAC.Value
If IsNull(vElem) Then Exit Sub
vElemB = DLookup("[RUTPAC]", "[Tarjeton_CasosActivos]", "[RUTPAC]='" & vElem & "'")
If vElemB = vElem Then
Select Case MsgBox("El usuario ingresado ya existe. ¿Desea ver el Registro?", vbYesNo, "AVISO")
Case vbYes
DoCmd.OpenForm "Formulario ACTIVOS", , , "[RUTPAC]=" & Me.RUTPAC.Value
Case vbNo
End Select
Me.RUTPAC.Value = Null
Me.RUTPAC.SetFocus
Me.RUTPAC.SetFocus
End If
End Sub


Espero que me puedan ayudar a resolver el problema.
Agradezco cualquier comentario y alternativa para intentar.

Saludos!!!
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 Francisco
Val: 467
Plata
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Ayuda con Formulario; Ir a un registro con SELECT CASE

Publicado por Francisco (212 intervenciones) el 24/09/2019 17:23:28
Hola

Pues lo unico que tienes que agregar la linea

1
DoCmd.Close acDefault, , acSaveNo

inmediatamente despues del OpenForm

Saludos
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

Ayuda con Formulario; Ir a un registro con SELECT CASE

Publicado por Carlos (4 intervenciones) el 24/09/2019 20:01:49
Gracias Francisco por tu respuesta, ahora logro cerrar el Formulario sin que guarde ningún registro luego de seleccionar la opción NO.

Pero no me resuelve el problema de abrir el "Formulario Activos" con el registro específico, al dar click en SI a la pregunta "¿Desea ver el registro?" . Lo que ocurre es que abre el "Formulario Activos", pero en blanco.

????
Alguna sugerencia?
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
Imágen de perfil de Francisco
Val: 467
Plata
Ha disminuido 1 puesto en Access (en relación al último mes)
Gráfica de Access

Ayuda con Formulario; Ir a un registro con SELECT CASE

Publicado por Francisco (212 intervenciones) el 26/09/2019 02:46:21
Hola


Pues intenta los siguiente

1
DoCmd.OpenForm "Formulario ACTIVOS", , , "[RUTPAC]=" & vElem

Lo que no se es que tipo de variable es vElem: un string, un numero o que?, no es recomendable usar variables tipo variant por ser ambiguas, salvo en situaciones especificas claro, te sugiero que uses variable congruentes con como String, Integer, Long o Date,

Si vElem es cadena entonces

1
DoCmd.OpenForm "Formulario ACTIVOS", , , "[RUTPAC]='" & vElem & "'"


Saludos
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

Ayuda con Formulario; Ir a un registro con SELECT CASE

Publicado por Anonimo (3316 intervenciones) el 27/09/2019 00:23:34
Creo que el código puede ser mas simple en varios puntos, tal vez otro enfoque mas concreto evite los problemas.

No tengo claro que el cierre del formulario se este haciendo de forma idónea, aclaro esto:

Lo que se 'cierra' es el formulario (no la tabla que guarda los datos) por lo que lo de salvar o no, se podrá referir a los cambios efectuados en el diseño del formulario. la opción para 'limpiar' el formulario y que no guarde el amago de registro es aplicar un UNDO que lo deja en su estado original.
(ojo Undo borra los cambios que se grabaran en la tabla, así que si no hubo cambios -algo que delata la propiedad 'Dirty' - dará error … basta condicionarlo con ella y solo limpia si lo necesita)

Es aconsejable que se le indique a Access el nombre del formulario a cerrar, no indicarlo cerrara el que este activo (y quien garantiza que sea el que deseamos … ¿acertara o no acertara?)

Utilizar Select Case para una única posible condición es una forma de programar, pero un simple IF hubiera bastado lo hará igual y mas rápido.

En resumen, analiza los consejos y si los ves aceptables (en una copia) los intentas aplicar y si te agrada los aplicas o aplicas una mezcla (cada opción tiene sus ventajas y desventajas, por ello comparten espacio en la programación).
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

Ayuda con Formulario; Ir a un registro con SELECT CASE

Publicado por Carlos (4 intervenciones) el 02/10/2019 16:18:59
Muchas gracias Francisco por tu sugerencia. La segunda línea de código me funcionó perfectamente, el vElem era una cadena...
así que problema resuelto. Me has quitado un peso tremendo

A ti también"Anónimo"... tienes mucha razón en tu sugerencia, debí hacerlo más simple, pero en mi poco conocimiento me puse a meter instrucciones que al final no resultaban eficaces. En adelante trataré la aproximación que sugieres.

Saludos y muchas gracias.
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