VBA Access: 'Ir a' desde un subformulario

Vuelvo a molestar con una pregunta:

¿Cómo puedo hacer para que el botón 'ir a' me funcione en un subformulario?
Usé este código:

If CurrentProject.AllForms("Edi_Presta_Devol_Li").IsLoaded Then
    DoCmd.GoToRecord acDataForm, "Forms!Edi_Presta_Devol_Li!Sub_Edi_PrestaLectura", acGoTo, Me.txX
ElseIf CurrentProject.AllForms("Edi_Lectura_Li").IsLoaded Then
    DoCmd.GoToRecord acDataForm, "Forms!Edi_Presta_Devol_Li!Sub_Edi_PrestaLectura", acGoTo, Me.txX
ElseIf CurrentProject.AllForms("Edi_Presta_Devol_Le").IsLoaded Then
    DoCmd.GoToRecord acDataForm, "Forms!Edi_Presta_Devol_Le!Sub_Edi_PrestaLectura", acGoTo, Me.txX
ElseIf CurrentProject.AllForms("Edi_Presta_Devol_Li").IsLoaded Then
    DoCmd.GoToRecord acDataForm, "Forms!Edi_Presta_Devol_Li!Sub_Edi_PrestaLectura", acGoTo, Me.txX
End If

Pero me dice que el formulario no está abierto o no existe en, por ejemplo, este código:

DoCmd.GoToRecord acDataForm, "Forms!Edi_Presta_Devol_Le!Sub_Edi_PrestaLectura", acGoTo, Me.txX

¿Cómo hago referencia al subformulario?
Ya probé con me.Sub_Edi_PrestaLectura y es igual. Y probé referenciar a si está abierto 'Forms! Formulario1! Subformulario' y tampoco funciona. También intenté que tome foco el formulario y nada.

¿Cómo puedo hacer?

ACLARO:

El campo donde ingreso el Nº de registro y el botón "Ir a" están en el Subformulario.

2 Respuestas

Respuesta
2

Sasha: En el otro hilo te he contestado:

Sasha: Si todos los controles están en el Subformulario, no necesitas sondear si está abierto, porque seguro que lo estará.

Prueba con una línea tal como ésta >>

DoCmd. GoToRecord acDataForm, Me. Name, acGoTo, Me. TxX

Mis saludos y Felices Fiestas >> Jacinto

¡Gracias! 

De todas formas, hice esta pregunta por las dudas que no llegara.

Probé 'quitando' partes y funcionó dejando así:

If CurrentProject.AllForms("Edi_Presta_Devol_Le").IsLoaded Then
    Forms![Edi_Presta_Devol_Le]![Sub_Edi_PrestaLectura]![txX].SetFocus
    DoCmd.GoToRecord , , acGoTo, Me.txX

Costó, pero funcionó.

Respuesta
2

Pregunto, ¿si vas a tener que escribir en un cuadro de texto el registro al que quieres ir, no te sería más sencillo, en los diferentes subformularios poner un combinado?

Supongamos que tienes una tabla1 relacionada con una tabla2 por Idloquesea(uno a varios) y supongamos que con ellas has hecho un formulario. Supongamos también que en la tabla2 hay un campo País, donde aparecen Alemania, Francia, etc. En el encabezado del subformulario Tabla2 puedes poner un combinado y en Origen de la fila, con el generador añades la tabla2, llevas a la cuadrícula de diseño el campo país(luego si quieres le pones criterios) y en sus propiedades-eventos-después de actualizar pones

Form.RecordSource = "select * from tabla2 where país=tabla2.form!nombredelcombinado and idloquesea=forms!tabla1!idloquesea"

Así, con el formulario Tabla1 abierto, si en el combinado eliges, por ejemplo, Alemania, el origen de registros del subformulario Tabla2 serán aquellos registros de Tabla2 cuyo país sea Alemania.

En el caso de los otros subformularios le puedes poner algo que identifique a uno(s) registro(s) y te dejas de currentproject, isloaded, etc

Para que no se repitan los países, en la consulta sql le das a agrupar por y listo

Buena idea. De todos modos necesitaba resolver esto más que nada porque sino, si intentaba probarlo en otra situación no podría corregirlo. A lo que dices lo he usado en otros casos, aunque en forma más simple.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas