En Access no permitir borrar la columna de un subformulario

Señores buenos días, Dios los bendiga. Mi pregunta es la siguiente. Tengo un formulario que contiene dos subformularios, esto lo utilizo para ver las facturas que debe un cliente y los abonos que ha realizado. Funciona así, en el formulario a través de un cuadro combinado selecciono el cliente, inmediatamente se llena el primer subformulario mostrando todas las facturas que debe (Idfac, Fecha, Numfac, Valor, Abonos, Saldo) al hacer doble click en el Idfac del primer subformulario este me muestra los abonos que se la ha realizado a esa factura, lógicamente si los tiene. Lo que quiero es que las columnas del primer subformulario queden bloqueadas, que el usuario no las pueda borrar, pero que si acepte en la columna Idfac hacer doble click para mostrar los abonos en el segundo subformulario. He intentado con propiedades, pestaña datos, poniendo Habilitado en no y bloqueado en sí, pero, pero entonces no me deja hacer doble click en la columna Idfac. De antemano les agradezco toda la ayuda que me puedan brindar.

Desde ya doy miles de gracias a quien me pueda ayudar.

Eder Monterroza

4 Respuestas

Respuesta
1

Prueba a poner, en las propiedades del primer subformulario:

Permitir Agregar: NO

Permitir Ediciones: NO

Permitir Eliminar: NO

O la combinación de esas tres propiedades que consideres más oportuna para tus fines

Hola Sveinbjorn El Rojo. Gracias por su pronta respuesta. Ya todo eso lo he hecho y nada que funciona, es mas en el primer subformulario en propiedades ficha datos tengo: Desde entrada de datos hasta permitir filtros en No, pero parece ser que por allí no es la cosa. El subformulario no me permite editar o eliminar un registro, pero si permite eliminar una columna

Lo que cuentas me suena muy, pero que muy raro..¿eliminar una columna desde un subformulario en vista entrada de datos?... Ya me dirás cómo lo haces, porque yo por más que lo intento, en un subformulario (imagino en el vista hoja de datos) no puedo eliminar columnas...

De todas formas, tienes una solución muy sencilla: Cambia el diseño del subformulario y en vez de "hoja de datos", usa una distribución tabular, que te da la misma información y es más estético.

Te cuento como se puede borrar la columna del subformulario

En la imagen anterior se aprecia el cuadro combinado con el tercero que busque, mas abajo esta el primer subformulario que muestra todos anticipos que se le han realizado con sus respectivos abonos y el saldo de cada anticipo. Mas abajo esta el otro subformulario que muestra cada uno de los abonos que se le han realizado al anticipo. Para que muestre los abonos que se le han realizado al anticipo hago doble click la columna Idan del primer subformulario e inmediatamente se llena el segundo subformulario como lo muestra la siguiente imagen

Como puedes observar el anticipo tiene dos abonos. Bueno eso funciona bien lo que quiero es que al hacer click en el encabezado de un subformulario y selecciono una fila, como en este caso, primer subformulario fila Idan, vez que la tengo seleccionada, como lo muestra la siguiente imagen

Aquí está seleccionada la columna Idan del primer subformulario y si presiono la tecla suprimir, ojo tecla suprimir, esta columna se borra, como lo muestra la siguiente imagen

Como puedes observar ya en el primer formulario no aparece la columna Idan. Ya la primera columna quedó siendo fecha. Sobre esto es que necesito ayuda para que el usuario no borre ninguna columna de los subformularios ya que si lo hace el programa se revienta. Te agradezco de todo corazón la ayuda que me puedas brindar, dejando los subformularios así y no en forma tabular como lo sugeriste.

Pues mira, yo ni con la tecla "suprimir", ni con las opciones del botón derecho, ni con cualquier tecla, ni na, con las versiones de access que manejo en mis PCs y portátiles (2007 y 2013) no hay forma de eliminar una columna en un subformulario...

Lo único que se me ocurre que quizás te pueda servir es cancelar la pulsación de la tecla Supr, pero claro, tiene el inconveniente de que no la podrás usar para borrar un dato de una casilla...

El código sería:

If KeyCode = 46 Then KeyCode = 0

Y lo tendrías que poner en el evento "al bajar una tecla" del campo en cuestión... Pero ya te digo que no lo he probado y no sé si te servirá como apaño.

De todas formas, yo le veo poca o nula diferencia a un formulario en hoja de datos:

y al mismo en tabular:

Sobre todo si le dedicas un par de minutos a formatearlo como si fuese una tabla...

La única diferencia apreciable es que no tienes el menú de los encabezados, pero lo eso lo puedes suplir de otras formas, como con el menu contextual...

Buenos dias amigo. Que Dios derrame sobre usted bendiciones en este maravilloso dia. Amigo me da pena preguntar esto, pero por mas que le doy no encuentro por donde, como hago para poner el subformulario en modo o vista tabular. Así como dices no hay diferencias, ya lo note. Gracias de antemano

Tienes que crear un formulario (usando el asistente ea la forma más fácil) con esa distribución tabular. Luego lo abres en vista diseño, le das el formato que prefieras y lo guardas.

Sin usar el asistente hay una opción en el ribbon que es algo así como "varios elementos".

Una vez que tengas el diseño, solo tienes que insertarlo como subformulario en el otro formulario.

Amigo. Sveinbjorn El Rojo. Te doy miles y miles de gracias por toda la atención prestada a este tema. De todo corazón te agradezco el interés y ganas de ayudar que me brindaste. Un millon de gracias por tu ayuda.

Respuesta
1

¿Has probado a poner en el evento Al activar el registro del primer subformulario

Private Sub Form_Current()
If Not Me.NewRecord Then
NombreContacto.Locked = True
Ciudad.Locked = True
End If
End Sub

Con lo que te bloquea los demás controles pero el idfac te queda libre

Respuesta

En las propiedades del subformulario hay una opción que es "Permitir vista Presentación"... le das a NO... y ya no te permitirá borrar columnas en el subformulario.

Ya me cuentas

Respuesta

Borrar un objeto de un formulario solo es factible en modo diseño, lo que se puede hacer es OCULTAR el objeto (pero no lo borra).

La secuencia para borrar un objeto (no su contenido) precisara enviar el foco a otro objeto externo, poner el formulario en modo diseño, eliminar el objeto, volver al modo de presentación y reenviarle el foco (cuando se cierre el formulario que contenía el objeto) preguntara si conserva o no las modificaciones (se puede indicar en la propia orden de cierre si guarda o no las modificaciones).

Si el formulario esta diseñado en formato 'hoja de datos' tampoco permitirá borrar un objeto (columna) pero si ocultarlo, para lo que es tan fácil como ponerle un ancho cero (y automáticamente se reajustara la presentación de su contenido)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas