Entrar
¿Usuario nuevo? Regístrate
DesarrolloOracleForms · Desarrollo de Software en Oracle Forms Developer
? ¿Ya estás suscrito? Entrar en Yahoo!

Consejos de Yahoo! Grupos

¿Sabías que...?
Puedes buscar mensajes antiguos en un grupo.

Mensajes

  Mensajes Ayuda
Avanzado
convertir un valor en letras   Lista de mensajes  
Responder | Reenviar Mensaje #13621 de 14130 |
RE: [Forms] convertir un valor en letras

Puedes utilizar este....
create or replace FUNCTION  "FUN$NUMERO_LETRAS"  
  (NUMERO_ENTRADA  IN  NUMBER)
RETURN CHAR IS
          NUMERO_LETRAS      VARCHAR2(300);
          HILERA_ENTEROS     VARCHAR2(9);
          HILERA_UNIDADES    VARCHAR2(1);
          HILERA_DECENAS     VARCHAR2(1);
          HILERA_CENTENAS    VARCHAR2(1);
          HILERA_DC          VARCHAR2(2);
          HILERA_DECIMALES   VARCHAR2(2);
          LETRAS_UNIDADES    VARCHAR2(15);
          LETRAS_CENTENAS    VARCHAR2(15);
          LETRAS_DECENAS     VARCHAR2(15);
          LETRAS_MILES       VARCHAR2(15);
          LETRAS             VARCHAR2(135);
          MONTO_ENTERO       NUMBER(9);
          DECIMALES          NUMBER(2);
          LARGO_ENTEROS      NUMBER(9);
          GRUPO              NUMBER(1);
          VALOR_UNIDADES     NUMBER(1);
          VALOR_DECENAS      NUMBER(1);
          VALOR_CENTENAS     NUMBER(1);
          VALOR_DC           NUMBER(2);
          POSICION_UNIDADES  NUMBER(2);
          POSICION_CENTENAS  NUMBER(2);
          POSICION_DECENAS   NUMBER(2);
          CADA_DIGITO        NUMBER(2);
          CALCULADO          NUMBER(14);
          DEMILLONES         BOOLEAN;
          NUMERO_ENT         NUMBER;
         CURSOR DESC_NUMERO(NUM NUMBER) IS
             SELECT NUM_CIFRA NUMERO_ESPANOL
             FROM   NUMEROS
             WHERE  NUM_NUMERO = NUM;
      BEGIN
 
        SELECT ABS(NUMERO_ENTRADA) INTO NUMERO_ENT FROM DUAL;
 
        MONTO_ENTERO     := TRUNC(NUMERO_ENT);
        DECIMALES        := (NUMERO_ENT - MONTO_ENTERO) * 100;
        HILERA_ENTEROS   := LPAD(TO_CHAR(MONTO_ENTERO),9,'0');
        HILERA_DECIMALES := TO_CHAR(DECIMALES);
        LARGO_ENTEROS    := LENGTH(HILERA_ENTEROS);
        CADA_DIGITO      := LARGO_ENTEROS;
        WHILE CADA_DIGITO >= 1
        LOOP
           GRUPO := TRUNC(CADA_DIGITO/3);
           POSICION_CENTENAS := (LARGO_ENTEROS - CADA_DIGITO) + 1;
           POSICION_DECENAS  := POSICION_CENTENAS + 1;
           POSICION_UNIDADES := POSICION_CENTENAS + 2;
           HILERA_CENTENAS   := SUBSTR(HILERA_ENTEROS,POSICION_CENTENAS,1);
           HILERA_DECENAS    := SUBSTR(HILERA_ENTEROS,POSICION_DECENAS,1);
           HILERA_DC         := SUBSTR(HILERA_ENTEROS,POSICION_DECENAS,2);
           HILERA_UNIDADES   := SUBSTR(HILERA_ENTEROS,POSICION_UNIDADES,1);
           VALOR_UNIDADES    := TO_NUMBER(HILERA_UNIDADES);
           VALOR_DECENAS     := TO_NUMBER(HILERA_DECENAS);
           VALOR_DC          := TO_NUMBER(HILERA_DC);
           VALOR_CENTENAS    := TO_NUMBER(HILERA_CENTENAS);
           LETRAS_UNIDADES   := NULL;
           LETRAS_DECENAS    := NULL;
           LETRAS_CENTENAS   := NULL;
           IF VALOR_UNIDADES > 0
           OR VALOR_DECENAS  > 0
           OR VALOR_CENTENAS > 0
           THEN
              DEMILLONES := FALSE;
              CALCULADO := VALOR_CENTENAS * 100;
              OPEN DESC_NUMERO(CALCULADO);
              FETCH DESC_NUMERO INTO LETRAS_CENTENAS;
              IF VALOR_CENTENAS = 1 AND
                 (VALOR_DECENAS <> 0 OR VALOR_DC <> 0)
              THEN
                 LETRAS_CENTENAS := LETRAS_CENTENAS||'TO';
              END IF;
              CLOSE DESC_NUMERO;
              IF VALOR_DECENAS < 3
              THEN
                 LETRAS_UNIDADES := NULL;
                 OPEN DESC_NUMERO(VALOR_DC);
                 FETCH DESC_NUMERO INTO LETRAS_DECENAS;
                 IF DESC_NUMERO%NOTFOUND
                 THEN
                    LETRAS_DECENAS := NULL;
                 END IF;
              ELSE
                 CALCULADO := VALOR_DECENAS * 10;
                 OPEN DESC_NUMERO(CALCULADO);
                 FETCH DESC_NUMERO INTO LETRAS_DECENAS;
                 CLOSE DESC_NUMERO;
                 OPEN DESC_NUMERO(VALOR_UNIDADES);
                 FETCH DESC_NUMERO INTO LETRAS_UNIDADES;
                 IF DESC_NUMERO%FOUND
                 THEN
                    IF VALOR_UNIDADES <> 0
                    THEN
                       LETRAS_DECENAS := LETRAS_DECENAS||' Y';
                    END IF;
                 END IF;
             END IF;
             CLOSE DESC_NUMERO;
             LETRAS_MILES := NULL;
             IF GRUPO = 2 THEN
                LETRAS_MILES := 'MIL';
             ELSIF GRUPO = 3 THEN
                DEMILLONES := TRUE;
                IF  VALOR_UNIDADES > 1 OR (VALOR_DECENAS  <> 0 OR  VALOR_CENTENAS <> 0)
                THEN
                    LETRAS_MILES := 'MILLONES';
                ELSE
                    LETRAS_MILES := 'MILLON';
                END IF;
             END IF;
             LETRAS := RTRIM(LETRAS,' ')||' '||
                       LETRAS_CENTENAS||' '||
                       LETRAS_DECENAS||' '||
                       LETRAS_UNIDADES||' '||
                       LETRAS_MILES;
            END IF;
            CADA_DIGITO := CADA_DIGITO - 3;
          END LOOP;
          IF LETRAS IS NULL THEN
             LETRAS := 'CERO';
          END IF;
          --
          NUMERO_LETRAS :=  LETRAS;
          RETURN(NUMERO_LETRAS);
END;

 


De: perezrozowilson [mailto:perezrozowilson@...]
Enviado el: Martes, 10 de Junio de 2008 02:55 p.m.
Para: DesarrolloOracleForms@yahoogroups.com
Asunto: [Forms] convertir un valor en letras

hola amigos del grupo, actualmente tengo una forma en la cual genero un
valor el cual deseo poder convertirlo a letras como en un cheque se que
exite un funcion o algo sililar por favor me pueden colaborar
gracias

wilson desde bogota



__________ Información de NOD32, revisión 3174 (20080610) __________

Este mensaje ha sido analizado con NOD32 antivirus system
http://www.nod32.com


Mar, 10 de Jun, 2008 9:22 pm

ernestomarti...
Sin conexión Sin conexión
Enviar mensaje Enviar mensaje

Reenviar Mensaje #13621 de 14130 |
Desplegar mensajes Autor Ordenar por fecha

hola amigos del grupo, actualmente tengo una forma en la cual genero un valor el cual deseo poder convertirlo a letras como en un cheque se que exite un...
perezrozowilson
Sin conexión Enviar mensaje
10 de Jun, 2008
8:54 pm

Puedes utilizar este.... create or replace FUNCTION "FUN$NUMERO_LETRAS" (NUMERO_ENTRADA IN NUMBER) RETURN CHAR IS NUMERO_LETRAS VARCHAR2(300); ...
Alvaro Gomez
ernestomarti...
Sin conexión Enviar mensaje
10 de Jun, 2008
9:22 pm
Avanzado

Copyright © 2009 Yahoo! Todos los derechos reservados.
Política de Privacidad Actualizada - Condiciones del servicio - Directrices - Ayuda