Access & VBA FAQ
| | | |
Indice de temas
Tablas
Consultas
Formularios
Informes
Macros
Módulos
Base de datos
Miscelánea
API
Utilidades
Problemas
Cadenas
Fechas
Todos los temas
Tablas : FixedField
Autor/es:
Juan M Afán de Ribera
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. He 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.
'---------------------------------------------------------
'
' 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
'---------------------------------------------------------

Ejemplos:

 

Temas relacionados:

 

Última actualización: 19/12/2004