FoxPro/Visual FoxPro - AGEGAR XX A LOS DATOS DE UNA TABLA DE FOXPRO

   
Vista:

AGEGAR XX A LOS DATOS DE UNA TABLA DE FOXPRO

Publicado por PROGRAFOXMTY (3 intervenciones) el 10/10/2015 13:26:40
BUENAS NOCHES TENGO UNA TABLA EN FOXPRO CON EL CAMPO CODIGO MAS O MENOS ESTA ASI
100
101
102
...
QUISERA EL CODIGO DE PROGRAMACION PARA AGREGAR XX AL INICIO DEL CODIGO PARA QUE QUEDE ASI
XX100
XX101
XX102
.
.
.

A VER SI ALGUIEM ME PUEDE AYUDAR
LA TABLE ES PRODUCTOS Y EL CAMPO ES CODIGO
GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Gonzalo

AGEGAR XX A LOS DATOS DE UNA TABLA DE FOXPRO

Publicado por Gonzalo (1 intervención) el 10/10/2015 13:41:06
Hola, deberías usar PADL para rellenar por la izquierda y con padr rellenas por la derecha.
En tu caso usa
PADL(100, 5, 'X')

Saludos
Gonzalo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

AGEGAR XX A LOS DATOS DE UNA TABLA DE FOXPRO

Publicado por Orlandofrayre (3 intervenciones) el 11/10/2015 00:24:46
Ok voy a intentar pero q parámetros usas ? El. 100 y el 5 q indican ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Eduardo Ureña

AGEGAR XX A LOS DATOS DE UNA TABLA DE FOXPRO

Publicado por Eduardo Ureña (78 intervenciones) el 11/10/2015 00:55:43
Lo primero es saber si el campo en el que estás guardando la información es alfanumérico, porque si no lo es es claro que te presentará un error.

Si el campo en el que guarda la info actualmente es numérico

1. Cambiar el tipo del campo a "character". Los datos que tenías se convertirán automáticamente al tipo nuevo.
2. Utilizar el comando REPLACE ALL con la siguiente instrucción: REPLACE ALL nombrecampo WITH "XX"+alltrim(nombrecampo)

Si necesita cambiarle el formato al número para que, por ejemplo valores menores a 100 queden como "XX010", debe hacerse una funcioncita aparte. Yo me hice una inspirado en el nombre que tenía Clipper 5 y que VFP no tenía:

FUNCTION STRZERO(xNum,xCeros)
xVar=ALLTRIM(STR(xNum))
RETURN RIGHT(REPLI("0",xCeros)+xVar,xCeros)

Así, utilizaría el REPLACE ALL nombrecampo WITH "XX"+STRZERO(VAL(nombrecampo,3)

Si el campo es alfanumérico, es mucho más fácil, ya que solo tendría que escribir REPLACE ALL nombrecampo WITH "XX"+ALLTRIM(nombrecampo)

Por ahí lo haría yo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

AGEGAR XX A LOS DATOS DE UNA TABLA DE FOXPRO

Publicado por orladno (3 intervenciones) el 11/10/2015 02:21:48
ok eeduardo el campo era alfanumerico con la instruccion que mediste me funciono de maravilla, gracias por compartir tu conocimiento
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

AGEGAR XX A LOS DATOS DE UNA TABLA DE FOXPRO

Publicado por Fidel José (321 intervenciones) el 11/10/2015 17:38:21
1
2
3
4
5
6
lncEntrada = 9
lcResult = "XX"+PADL(IIF(VARTYPE(lncEntrada)="N",TRANSFORM(lncEntrada),ALLTRIM(lncEntrada)), 3 ,"0")
? lcResult          ->    "XX009"
lncEntrada = "09"
lcResult = "XX"+PADL(IIF(VARTYPE(lncEntrada)="N",TRANSFORM(lncEntrada),ALLTRIM(lncEntrada)), 3 ,"0")
? lcResult          ->  "XX009"

1
2
3
lcNumber = "00036"
lcSinCero = TRANSFORM(VAL(m.lcnumber))
? lcSincero     ->    "36"

1
2
3
lncEntrada = "00000090"   && len mayor que el formato requerido
lcResult = "XX"+PADL(IIF(VARTYPE(lncEntrada)="N",TRANSFORM(lncEntrada),TRANSFORM(val(lncEntrada))), 3 ,"0")
? lcResult
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar