FixedField: campo de texto con longitud fija en Access
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
Argumento | Descripción |
---|---|
TableName | Requerido. Nombre de la tabla donde queremos agregar el campo de longitud fija |
FieldName | Requerido. Nombre del campo de longitud fija que queremos crear |
LenField | Requerido. Longitud del campo |
DbPath | Opcional. 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)
Pregunta Sé cómo imprimir un informe mediante código y sé cómo hacer para que aparezca el cuadro de diálogo imprimir,…
Cómo conseguir en un informe calcular sólo el total para cada página