Access - Ancho ajustable de campo de un Subformulario

Tengo un Formulario llamado Remito en donde además Tengo un Subformulario llamado Detalle Formulario... Necesito que a medida que relleno los campos del formulario se ajuste el tamaño de los campos según el texto ingresado... Intente con el código en el evento después de actualizar pero no funciona.

Private Sub Prod_AfterUpdate()

SubForm [(Detalle Remito)]![Prod].ColumnWidth = -2
End Sub

3 respuestas

Respuesta
2

Martin: Solo si estás trabajando en vista Hoja de Datos>>

Private Sub Form_Load()
Dim CadaColumna As Access.Control
For Each CadaColumna In Me.Controls
        If CadaColumna.ControlType = acTextBox Or CadaColumna.ControlType = acComboBox Then
                CadaColumna.ColumnWidth = -2                
        End If
Next CadaColumna
End Sub

Saludos >> JTJ

Viendo todas las respuestas que me dieron entendí que no me había explicado bien... lo que necesito es que el ancho del campo se modifique al texto de mayor tamaño .

Si el la tabla producto tengo

Id producto

1 casa

2 casa de campo

3 casa quinta con pileta

Que el ancho del campo se modifique y se acomode al del id 3 que es el más largo de los textos que están cargados en el campo producto

En la foto el campor producto se debería acomodar al ancho del primer registro que es fosfato...

Martin: Por lo que observo en tu imagen, si que tienes el Sub Formulario en vista de Hoja de datos.

Entoces, si copias y pegas el código de arriba en el Sub Formulario (y lo activas), debería hacer lo que pides, no solo en la primera columna sino en todas.

Si añadieras un Producto, cuyo texto sea aun mayor que el primero, debe mostrar todos los anchos a esa dimensión. Saludos >> JTJ

Te cito un enlace de descarga de lo que te comento:

https://www.mediafire.com/file/afffn7eizvnliw4/AltoAutoFContinuoYAchoHojaDat.rar/file 

Saludos >> JTJ

Los olvidos propios de la edad:

Si no quieres esperar a ver los cambios con una nueva apertura, en el AfterUpdate del control que quieras,... Ejemplo ComboProducto

Private Sub ComboProducto_AfterUpdate()
Call Form_Load
End Sub
Y verás el Efecto >> JTJ

Respuesta
1

Martín, como no me ha regalado nada los Reyes Magos, me pongo con el ordenador. De entrada, no entiendo en absoluto la instrucción que pones. En todo caso sería

me.detalleremito.form!prod.width=...

Pero si miras el diseño de un formulario continuo en vista diseño

Verás, que sólo hay un registro. Aunque luego tu lo veas como

Realmente sólo tiene existencia física el que está señalado con la punta de flecha, que es el registro activo. Los demás son imágenes virtuales, que sólo tendrán existencia cuando se conviertan en registros activos. Por tanto, si "recortas" un cuadro de texto, los recorta a todos. Es como si en un catálogo de coches dijeras que para la imagen de un vehículo dispones de 5 x 4 cm. Un wolsvagen golf te cabe pero un Mercedes 600 necesitaria más espacio, pero se lo has recortado. Por ejemplo, si le cambio el apellido al primer registro( activo)

Puedes ver que el cursor aún está en él. Cuando pulso Enter

Te recorta el cambiado, pero también todo. En este caso, en el evento Después de actualizar del cuadro de texto Destinatario le tengo puesto

Private Sub Destinatario_AfterUpdate()
Destinatario.Width = Len([Destinatario]) * 0.2 * 570
End Sub

Julian desde ya y como siempre te agradezco tu tiempo.... tengo un subformulario dentro de un formulario.... El formulario es sobre la tabla Remitos y el SubFormulario esta basado en la Tabla Detalle Remito... dentro de ella tengo varios campos y uno de ellos es el campo Producto que a su vez es un Identificador de otra Tabla llamada Producto en donde saco el nombre del producto de cada registro que hago en el detalle del Remito.... Lo que necesito es poder agrandar o poder determinar el ancho del campo y que este quede fijo para despues poder acomodar el largo del Subformulario

Es lo que te decía, sea formulario o subformulario, al ser continuo o en vista hoja de datos, si "estrechas" un control, lo estrechas en todos los registros..

Respuesta
1

Estoy de acuerdo con la respuesta de Julián NO hay forma de cambiar el ancho por el contenido par un solo registro, en un formulario continuo SE cambiarían todas la filas del campo, ahora si quiere ver el contenido del campo no se preocupe si no puede ver todo el texto, puede hacer un Zoom. Adicione este instrucción en el evento Al hacer clic del control:

DoCmd. RunCommand acCmdZoomBox

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas