Ultimos dígitos de cada importe

73 views
Skip to first unread message

Mario Massaglia

unread,
Sep 15, 2017, 1:09:43 PM9/15/17
to Comunidad de Visual Foxpro en Español

Estimados

Estoy trabajando con un archivo que es numérico, pero un banco nos pide que lo presentemos según lo que indico debajo:

Se asumirá que los 2 últimos dígitos de cada importe son las posiciones decimales. Entonces, si un importe es  1.357,00  se deberá informar como  135700  (si se indica 1357 , el Banco tomará como si fuera 13,57).

Saludos

Jose Antonio Blasco

unread,
Sep 15, 2017, 1:13:42 PM9/15/17
to Comunidad de Visual Foxpro en Español
Y si haces:   int(Valor*100)

Luego ya depende de si has de pasarlo como numero o caracter.

Un saludo.

Jose A. Blasco
Zaragoza - España
Visual FoxPro 9 SP2

Jean Pierre Adonis De La Cruz Garcia

unread,
Sep 15, 2017, 1:15:53 PM9/15/17
to Comunidad de Visual Foxpro en Español
simplemente lo multiplicas por 100 y se soluciona el problema, lo que sucede que ciertos bancos tienen sus sistemas ya realizados, y no desean corregirlos, mas facil para ellos es que uno se adapte a su necesidad.

Mario Massaglia

unread,
Sep 15, 2017, 2:01:32 PM9/15/17
to Comunidad de Visual Foxpro en Español

José

El problema es que a ese archivo lo tengo que pasar a TXT, y tengo un campo N(13.2) que me pasan de otro sistema por ejemplo 135.13 y debo devolver en el TXT (usando SDF) 13513

Yo use STR(importe,13.2) para pasarlo a un CHR(13) pero me graba 135.

Desde ya muchas gracias.

Saludos

Message has been deleted

Fidel Charny

unread,
Sep 15, 2017, 5:08:32 PM9/15/17
to Comunidad de Visual Foxpro en Español
Para SDF lo más práctico es preparar un cursor donde los campos numéricos sean character (p,ej, c(13) ) y todos los otros campos tengan la medida requerida.
Luego con un SCAN reemplazas en dichos campos con :
REPLACE TalCampo with  PADL(TRANSFORM(CursorSource.TalCampo*100),13," ")
ó
REPLACE TalCampo with  PADL(TRANSFORM(CursorSource.TalCampo*100),13,"0")
según tenga que tener o no ceros a la izquierda.

Alejandro Garcia G.

unread,
Sep 15, 2017, 6:59:12 PM9/15/17
to Comunidad de Visual Foxpro en Español
¿No te sirve algo como esto?

lnValor = 135.13
lnValor = lnValor * 100
? STR(lnValor)
*!*
lnValor = 1428.97
lnValor = lnValor * 100
? STR(lnValor)

El formato para texto puedes usar lo que te comenta fidel si debes o no llenarlos con ceros (0) a la izquierda o no.

Normandia

unread,
Sep 17, 2017, 8:23:35 PM9/17/17
to Comunidad de Visual Foxpro en Español
saludos yo lam hago de esta forma 
*--------------------------------------------------------------
SWAPO=ALLTRIM(STR(swtotalT,13,2))
SWOTRO=""
SWDEC=""
FOR I=1 TO LEN(SWAPO)
    IF SUBS(SWAPO,I,1)="."
       SWDEC=SUBS(SWAPO,I+1,2)
       I=LEN(SWAPO)+1
    ELSE
       IF !EMPTY(SUBS(SWAPO,I,1))
          SWOTRO=SWOTRO+SUBS(SWAPO,I,1)
       ENDIF
    ENDIF
NEXT I
SWAPO=VAL(SWOTRO)
IF VAL(SWDEC)>0
   SWAPO3=SWAPO+SWDEC
ELSE
   SWAPO3=SWAPO+"00"
ENDIF
*******************************
espero te sirva
Reply all
Reply to author
Forward
0 new messages