Como convertir campo con datos numéricos (1,2,3, etc) a datos con formato texto (0001,0002,0003, etc)

Tengo una código que me genera registros con rangos de números a petición, osea que le digo el número inicial y el número final y me genera un registro por cada número. El problema es que aunque el campo es de tipo texto, incluye los números naturales (1, 2, 3, 4, etc) y yo lo que realmente necesito son números con con formato de 4 dígitos que me rellene de ceros los espacios que queden hasta completar los 4 dígitos, o sea 0001, 0002, 0003, 0010, 0112, etc). Me da igual hacer la conversión por código o mediante una consulta de actualización.

2 Respuestas

Respuesta
1

AAvellan: Por VBA le pones.

Format(Me. Loquesea,"0000")

Saludos>> Jacinto

gracias por tu rápida respuesta Jacinto, pero donde lo pongo?. te detallo el código que me genera los registros. lo he probado a introducir dentro pero no hace nada.

DoCmd.SetWarnings False
Dim i As Integer
Dim x As Integer
For x = Me.INICIAL To Me.FINAL
For i = 1 To Me.copias
DoCmd.RunSQL "insert into [tabla numeraciones](orden,codart,color) values(" & i & ",[codart]," & x & ")"
Next i
Next x

esto lo lanzo desde un form donde introduzco [inicial] [final] que incluye el valor en el campo [color] que es el que me interesa modificar, [copias] que es el numero de registros de cada serie y el campo [codart] que es un dato fijo. no se si me explico con la suficiente claridad pero ya me diras.

saludos.

Por lo que observo es la variable i la que quieres formatear.

Si eso es así, puedes probar de dos maneras.

1.- Inmediatamente después de For i = 1 To......

i = Format(i,"0000")

2.- Directamente en el Insert.

DoCmd.RunSQL "INSERT INTO [tabla numeraciones](orden,codart,color) Values(" & Format(i,"0000") & ",[codart]," & x & ")"

No lo he probado, de modo que si tienes dificultades me comentas.

No apliques las dos. La una o la otra. Saludos >> Jacinto

Hola de nuevo Jacinto. es la variable x  del campo [color] la que quiero formatear. He probado de las 2 maneras que me indicas y ninguna de ellas funciona. No hacen nada.

si quieres te envío la base y te lo miras mejor.

saludos.

Si no te importa pega aquí tu código modificado por favor y echo una mirada.

Antes de hacerlo prueba cambiando la delaración de las Variables, y en lugar de ser "Integer", ponlas como "Variant"

Con ello quedaría más o menos así>>

Dim i As Variant
Dim x As Variant

For x = Me.INICIAL To Me.FINAL

 x = Format(x,"0000")

Un saludo >> Jacinto

he probado estas ultimas modificaciones y tampoco funciona. te pego el código haber que.

saludos.

DoCmd.SetWarnings False
Dim i As Variant
Dim x As Variant
For x = Me.INICIAL To Me.FINAL
'x = Format(x, "0000")
For i = 1 To Me.copias
DoCmd.RunSQL "insert into [tabla numeraciones](orden,codart,color) values(" & i & ",[codart]," & Format(x, "0000") & ")"
Next i
Next x

Ante la duda lo he probado de Forma directa improvisando un bucle y como puedes ver formatea como era de esperar.

La verdad es que ahora ignoro co ayudarte, salvo que pongas tu BD aquí en un enlace con datos inventados y vea el código en su entorno Completo. Saludos >> Jacinto

hola Jacinto. he consultado con otros expertos y todos me dan la misma solución, por lo que no tengo la más mínima duda de que sea correcta, pero algo hay que no pita bien. te dejo un enlace a la base de datos para que le des un vistazo. Saludos.

https://drive.google.com/file/d/0B2GWWPjeYPkBVUp1U08tUmxrUXM/view?usp=sharing 

Acabo de ver el mensaje.

Lo iro tan pronto como pueda dedicar un rato y te contesto. Saludos >> Jacinto

AAvellan: He retocado un poco la Consulta de Inserción y la he probado.

Dim I As Variant
Dim X As Variant
For X = Me.INICIAL To Me.FINAL
X = Format(X, "0000")
For I = 1 To Me.copias
'Linea Modificada
DoCmd.RunSQL "INSERT INTO [tabla numeraciones](orden,codart,color) VALUES ( '" & I & "' ,[codart], '" & X & "')"
'Línea Original
'DoCmd.RunSQL "insert into [tabla numeraciones](orden,codart,color) values(" & i & ",[codart]," & Format(x, "0000") & ")"
MsgBox "El valor de X es: " & X
Next I
Next X

Como ves te dejo tu línea Original para que compares. Mis saludos >> Jacinto

Disculpa: Se me ha pasado comentarte que la Línea >>

MsgBox "El valor de X es: " & X

Es solo de seguimiento. La comentas o la borras. Saludos >> Jacinto

Respuesta
1

El está bien, tal vez esto te ayude:

DoCmd.SetWarnings False
Dim i As Variant
Dim x As Variant
For x = Me.INICIAL To Me.FINAL
'Aquí se evalua X
Select case len(X)
case is = 1
x = "'000" & x
case is = 2
x = "'00" & x
case is = 3
x = "'0" & x
End Select
For i = 1 To Me.copias
DoCmd.RunSQL "insert into [tabla numeraciones](orden,codart,color) values(" & i & ",[codart]," & x & ")"
Next i
Next x

Saludos y espero sea de utilidad

No olvides visitar mi canal para más ejemplos en YouTube

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas