Juanjo Luna

MVP Microsoft 365 Apps & Services 2023

LinkedIn Learning Instructor

Presidente de Access User Groups España

CEO Luna-Soft

Desarrollador

Consultor Informático

Juanjo Luna

MVP Microsoft 365 Apps & Services 2023

LinkedIn Learning Instructor

Presidente de Access User Groups España

CEO Luna-Soft

Desarrollador

Consultor Informático

Blog Post

FixedField: campo de texto con longitud fija en Access

6 de febrero de 2024 ACCESS, El rincón de Happy, Tablas

Pregunta

¿Es posible en Access crear un campo de texto de longitud fija? Por campo de longitud fija me refiero a ese tipo de campos que rellenan con blancos su contenido hasta llegar a la longitud que tienen establecida

Respuesta

Sí. Existe un atributo del campo de una tabla llamado dbFixedField que nos permite hacerlo. Pero hay que implementarlo a través de código. Juan M Afán de Ribera (Happy) ha fabricado una función llamada FixedField para este caso particular y que tiene los siguientes

Argumentos

ArgumentoDescripción
TableNameRequerido. Nombre de la tabla donde queremos agregar el campo de longitud fija
FieldNameRequerido. Nombre del campo de longitud fija que queremos crear
LenFieldRequerido. Longitud del campo
DbPathOpcional. Ruta completa de la base de datos que contiene la tabla donde queremos crear el campo de longitud fija. Si este argumento se omite o es una cadena vacía, se buscará en la base de datos actual.

La función FixedField devuelve -1 en caso de éxito y en caso contrario, el número de error que se haya producido.

Código

'---------------------------------------------------------
'
' FixedField
'
' Código escrito originalmente por Juan M Afán de Ribera.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
'     accessvbafaq@ya.com
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
Function FixedField( _
                    TableName As String, _
                    FieldName As String, _
                    LenField As Integer, _
                    Optional DbPath As String) As Long
                           
Dim db As Object 'DAO.Database
Dim tdf As Object 'DAO.TableDef
Dim fld As Object 'DAO.Field

    On Error GoTo err_FixedField
    
    If DbPath = "" Then
        Set db = CurrentDb
    Else
        Set db = DBEngine.OpenDatabase(DbPath)
    End If
    
    Set tdf = db.TableDefs(TableName)
    ' DB_TEXT = DAO.dbText
    Set fld = tdf.CreateField( _
                              FieldName, _
                              DB_TEXT, _
                              LenField)
    ' DB_FIXEDFIELD = DAO.dbFixedField
    fld.Attributes = fld.Attributes Or DB_FIXEDFIELD
    
    tdf.Fields.Append fld
    tdf.Fields.Refresh
    
    FixedField = -1
    
exit_Function:
    
    Set fld = Nothing
    Set tdf = Nothing
    If Not db Is Nothing Then db.Close
    Set db = Nothing
    
    Exit Function
    
err_FixedField:

    FixedField = Err.Number
    Resume exit_Function
    
End Function
'---------------------------------------------------------

Créditos

con el fin de dar a conocer el trabajo de uno de los más grandes en el mundo de Access en español, y tras solicitar su permiso, replico este artículo de Juan M Afán de Ribera. Todos los derechos y autoría corresponden a él. Access & VBA FAQ – FixedField (archive.org)

Taggs:
Related Posts
Opciones de impresión a través de código

Pregunta Sé cómo imprimir un informe mediante código y sé cómo hacer para que aparezca el cuadro de diálogo imprimir,…

Totales por página

Cómo conseguir en un informe calcular sólo el total para cada página

Write a comment