Subformulario

¿Recuerdas la ultima pregunta que te hice? Bien, pues no me funciona bien, no se si es que lo he puesto mal o algo, me dice que hay un error en la expresión "AlHacerClick".
He puesto esto:
Private Sub Comando50_Click()
If Me.InsertarMACROLAN.Visible = False Then
Me.InsertarMACROLAN.Visible = True
Comando50.Caption = "Mostrar Subformulario"
Else
Me.InsertarMACROLAN.Visible = False
Comando50.Caption = "Ocultar Subformulario"
End If
End Sub
Es que no se si en la parte que pone Subformulario, he de poner el nombre de el subformulario, quizás también pueda ser que no se aplicarle el código al botón.
Si no le importa, me gustaría que me explicase como ponerle el código al botón.

1 respuesta

Respuesta
1
El código parece correcto, deberías chequear los nombres: que el botón se llame Comando50 y que el subformulario se llame InsertarMacrolan.
¿El otro subformulario funciona bien?
Para poner código en el evento Clic del botón:
1)Poner el formulario en modo diseño
2) Clic con botón derecho sobre el botón, elegir Propiedades
3)Elegir la solapa Eventos
4) Sobre el evento Al hacer clic elegir en el desplegable [Procedimiento de evento] y hacer clic sobre el botón de 3 puntos
5)Te muestra el procedimiento vacío (salvo que ya tenga contenido en cuyo caso te muestra el contenido)
Otro cambio para probar:
En lugar de
Me.MuseoImagenes.Visible = True
poner
Forms!Museos!MuseoImagenes.Visible = True
Museo es el nombre del formulario principal
MuseoImagenes el del subformulario
Contame como te fue, Marciana
Al final lo he conseguido, ya funcionan correctamente, pero no consigo averiguar la manera de que al abrir el formulario, que el subformulario salga oculto por defecto. ¿Cómo se hace? En propiedades
Tengo un problema con el de bloquear y desbloquear datos:
Me los bloquea y desbloquea, pero cuando presiono a bloquear me va al ultimo registro, y he de ir a buscar otra vez el registro que quería buscar, y a la inversa, si presiono desbloquear me va al primer registro y he de buscar el registro a modificar de nuevo.
Y otra cosa, los subformularios actúan autonomamente, es decir que tu clicas a bloquear/desbloquear pero a ellos le es indiferente, están desbloqueados por defecto, y yo quisiese que estos se bloqueasen y desbloqueasen con el mismo botón.
El código que he introducido ha sido:
Private Sub Comando4_Click()
If Me.RecordsetType = 2 Then
Me.RecordsetType = 0
Comando4.Caption = "Bloquear"
Else
Me.RecordsetType = 2
Comando4.Caption = "Desbloquear"
End If
End Sub
Gracias por todo, me estas siendo de gran ayuda.
Espero tu respuesta.
Saludos
1)Para que el subformulario salga abierto por defecto le ponés la propiedad Visible (en modo diseño) en "No".
2)Ahora me fijo el problema de que pierde el registro activo. Eso se resuelve guardando el BookMark es decir la marca del registro para restituirlo.
3)No entiendo bien el último punto:
"Y otra cosa, los subformularios actúan autonomamente, es decir que tu clicas a bloquear/desbloquear pero a ellos le es indiferente, están desbloqueados por defecto, y yo quisiese que estos se bloqueasen y desbloqueasen con el mismo botón. "
Te mando la respuesta por el punto 2 y espero tu aclaración por el punto 3.
Marciana
Con esto me funcionó bien. No anduvo el BookMark y no sé por qué. Supongo que resetea el valor porque bloquear y desbloquear implica cerrar y abrir el recordset.
Private Sub Comando7_Click()
Dim Recordnum As Long
Recordnum = Me.CurrentRecord
MsgBox Recordnum
If Me.RecordsetType = 2 Then
Me.RecordsetType = 0
Comando7.Caption = "Bloquear"
Else
Me.RecordsetType = 2
Comando7.Caption = "Desbloquear"
End If
DoCmd.GoToRecord acDataForm, Me.Name, acGoTo, Recordnum
End Sub
Espero tu respuesta por el punto 3.
A ver... te cuento.
Yo dentro de el formulario, tengo dos subformularios, que obviamente he desbloqueado, porque sino al clicar bloquear/desbloquear no podría editarlos.
Yo pensaba que al insertar el botón en el formulario principal tanto formulario principal como los subformularios se bloquearían y desbloquearían al clicar el botón. Pero tan solo se bloquean y desbloquean los campos del formulario principal.
¿Eso es normal? ¿Hay alguna manera de solucionarlo para que al clicar al botón se desbloqueen todos y bloqueen a la vez?.
En caso de que lo sigas sin entender, dímelo y intentare pensar la manera de explicártelo mejor.
Gracias.
La resolución del punto 2. Me da el mismo resultado que anteriormente, lo único que varia es que al pulsar el botón, se me abre una ventana donde aparece un mensaje que me muestra por pantalla un "1" y al pulsarlo se va al ultimo registro y bloquea los campos.
En el código que me has dado, hay que variar algo más, ¿aparte del nombre del comando?
No lo entiendo :(.
¿Soy un poco pesado no? Je je.
Le agradezco su ayuda sinceramente.
Siento atosigarte con tantas preguntas, pero es que acabo de encontrar una incoherencia en mi base de datos.
Tengo una tabla llamada equipos. Y bien a partir de esta tengo dos formularios que tienen esta tabla: "InsertarEquipos", y "Listado de equipos". Dentro de el formulario Listado de Equipos hay un botón (nuevo) que lleva al formulario de insertar equipos. Y dentro de insertar equipos hay un botón "Volver ha Listado de equipos".
Pues cuando le doy clic al botón Nuevo de el formulario Listado de Equipos me envía el mensaje siguiente:
- La tabla equipos ya esta abierta en modo exclusivo o ya esta abierta mediante la interfaz de usuario y no se puede manipular mediante código.
Pero si estoy dentro de el formulario "InsertarEquipos" y clico al botón de "Volver ha listado de equipos", me llega sin problemas. Siempre y cuando el formulario "InsertarEquipos" siga abierto, sino me da error.
¿Hay alguna solución posible sin necesidad borrar alguno de los formularios? Es que si fuese así, tendría un problema, porque podría crear un botón de agregar nuevo registro a la tabla equipos, pero dentro de estos formularios, están los subformularios de las tablas MACROLAN y VPN-IP y me supondría el tener que crear 3 botones para cada tabla, porque no se puede crear (por lo menos es lo que creo) un botón que active los registros de 3 tablas a la vez para insertar nuevos registros de todas estas.
Y yo lo que hice fue crear formularios separados.
Los de listado que simplemente mostrasen la información que tienen las tablas.
Y los de insertar que los hice semejantes pero con las propiedades distintas como ahora el derecho a la entrada de datos.
Espero tu respuesta... ;).
Para solucionar el ultimo punto he puesto este código que he deducido y modificando un poco los preedefinidos para ver si lo solucionaba cerrando el formulario "Listado de Equipos" (AEquipos) y una vez cerrado abriendo el "InsertarEquipo pero me sigue dando el mismo error:
Código insertado:
Private Sub Comando8_Click()
On Error GoTo Err_Comando8_Click
DoCmd.Close
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "AInsertarEquipos"
DoCmd.OpenForm stDocName, , , stLinkCriteria
Exit_Comando8_Click:
Exit Sub
Err_Comando8_Click:
MsgBox Err.Description
Resume Exit_Comando8_Click
On Error GoTo Err_Comando8_Click
End Sub
He pensado que quizás en el código, antes de volver a abrir el archivo, después de salir debería de actualizar, para borrar todo lo que queda en memoria cargado, y así ver que no existe ninguna tabla abierta en ese momento y ejecutar la mía.
Si ves muchos errores dímelo.
En la solución del punto 2 eliminá la línea
"MsgBox Recordnum" yo la puse para controlar a qué registro se refería.
Estuve probando el bloqueo/desbloqueo con subformulario. Hasta ahora no tuve suerte. Voy a buscar otra solución.
En cuanto a los otros problemas te pido que los vayas planteando de a uno.
Otra cosa importante: ¿Con qué versión de Office estás trabajando?
Trabajo con la version 2003.
Muy bien, te planteare esta pregunta aparte, porque entiendo que tantas continuas pueden ser un lio.
Gracias.
Leí primero la otra pregunta. Así que ya sé que tu versión es es Office 2003. Yo también trabajo con esa.
De todos modos te recomiendo que hagas lo que te dije de Compactar y reparar y luego pruebes de nuevo. Muchas veces los índices de las tablas quedan atravesados y aparecen errores que no son tales.
Suerte y espero respuesta. M

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas