Entrar
¿Usuario nuevo? Regístrate
vbasicworld · Lista de discusión sobre programación en Visual Basic
? ¿Ya estás suscrito? Entrar en Yahoo!

Consejos de Yahoo! Grupos

¿Sabías que...?
Puedes determinar el orden de los mensajes. Pulsa el enlace en la columna correspondiente a la fecha. Tus preferencias serán guardadas y no tendrás que introducirlas de nuevo.

Mensajes

  Mensajes Ayuda
Avanzado
Offtopic: Funcion SQL para convertir numero a cantidad con letra   Lista de mensajes  
Responder | Reenviar Mensaje #3654 de 4541 |

/*
FUNCIONES PARA LA CONVERSION DE NUMEROS A CANTIDADES CON LETRA
PROG. SAM
VER. 1.0
ENVIO: 11 NOV 2004
*/

CREATE FUNCTION dbo.fnUnidades(@Numero tinyint)
RETURNS varchar(6)
AS
BEGIN
DECLARE
@Resultado varchar(6)

IF(@Numero = 1)
SET @Resultado = 'un'
IF(@Numero = 2)
SET @Resultado = 'dos'
IF(@Numero = 3)
SET @Resultado = 'tres'
IF(@Numero = 4)
SET @Resultado = 'cuatro'
IF(@Numero = 5)
SET @Resultado = 'cinco'
IF(@Numero = 6)
SET @Resultado = 'seis'
IF(@Numero = 7)
SET @Resultado = 'siete'
IF(@Numero = 8)
SET @Resultado = 'ocho'
IF(@Numero = 9)
SET @Resultado = 'nueve'
RETURN @Resultado
END
GO

CREATE FUNCTION dbo.fnDecenas(@Numero tinyint)
RETURNS varchar(25)
AS
BEGIN
DECLARE
@Decena tinyint,
@Unidad tinyint,
@Resultado varchar(25)

SET @Decena = FLOOR(@Numero / 10)
SET @Unidad = (@Numero - (@Decena * 10))

IF(@Numero BETWEEN 1 AND 9)
SET @Resultado = dbo.fnUnidades(@Unidad)
IF(@Numero BETWEEN 10 AND 20)
BEGIN
IF(@Numero = 10)
SET @Resultado = 'diez'
IF(@Numero = 11)
SET @Resultado = 'once'
IF(@Numero = 12)
SET @Resultado = 'doce'
IF(@Numero = 13)
SET @Resultado = 'trece'
IF(@Numero = 14)
SET @Resultado = 'catorce'
IF(@Numero = 15)
SET @Resultado = 'quince'
IF(@Numero BETWEEN 16 AND 19)
SET @Resultado = 'dieci' + dbo.fnUnidades(@Unidad)
IF(@Numero = 20)
SET @Resultado = 'veinte'
END
IF(@Numero BETWEEN 21 AND 29)
SET @Resultado = 'veinti' + dbo.fnUnidades(@Unidad)
IF(@Decena BETWEEN 3 AND 9)
BEGIN
IF(@Decena = 3)
SET @Resultado = 'treinta'
IF(@Decena = 4)
SET @Resultado = 'cuarenta'
IF(@Decena = 5)
SET @Resultado = 'cincuenta'
IF(@Decena = 6)
SET @Resultado = 'sesenta'
IF(@Decena = 7)
SET @Resultado = 'setenta'
IF(@Decena = 8)
SET @Resultado = 'ochenta'
IF(@Decena = 9)
SET @Resultado = 'noventa'
IF(dbo.fnUnidades(@Unidad) <> '')
SET @Resultado = @Resultado + ' y ' + dbo.fnUnidades
(@Unidad)
END
RETURN @Resultado
END
GO

CREATE FUNCTION dbo.fnCentenas(@Numero smallint)

RETURNS varchar(40)
AS
BEGIN
DECLARE
@Centena smallint,
@Decena tinyint,
@Resultado varchar(40)

SET @Centena = (@Numero / 100)
SET @Decena = (@Numero - (@Centena * 100))

IF(@Centena = 0)
SET @Resultado = dbo.fnDecenas(@Decena)
IF(@Centena = 1)
BEGIN
SET @Resultado = 'cien'
IF(dbo.fnDecenas(@Decena) <> '')
SET @Resultado = @Resultado + 'to ' + dbo.fnDecenas
(@Decena)
END
IF(@Centena BETWEEN 2 AND 4)
BEGIN
SET @Resultado = dbo.fnUnidades(@Centena) + 'cientos'
IF(dbo.fnDecenas(@Decena) <> '')
SET @Resultado = @Resultado + ' ' + dbo.fnDecenas
(@Decena)
END
IF(@Centena > 4)
BEGIN
IF(@Centena = 5)
SET @Resultado = 'quinientos'

IF(@Centena = 6)
SET @Resultado = 'seiscientos'

IF(@Centena = 7)
SET @Resultado = 'setecientos'

IF(@Centena = 8)
SET @Resultado = 'ochocientos'

IF(@Centena = 9)
SET @Resultado = 'novecientos'
IF(dbo.fnDecenas(@Decena) <> '')
SET @Resultado = @Resultado + ' ' + dbo.fnDecenas(@Decena)
END
RETURN @Resultado
END
go


ALTER FUNCTION dbo.fnMillares(@Numero int)

RETURNS varchar(80)
AS
BEGIN
DECLARE
@Millar int,
@Centena smallint,
@Resultado varchar(80)

SET @Millar = FLOOR(@Numero / 1000)
SET @Centena = (@Numero - (@Millar * 1000))
IF(@Millar < 1)
SET @Resultado = dbo.fnCentenas(@Centena)
IF(@Millar = 1)
BEGIN
SET @Resultado = 'mil'
IF(dbo.fnCentenas(@Centena) <> '')
BEGIN
SET @Resultado = @Resultado + ' ' + dbo.fnCentenas
(@Centena)
END
END
IF(@Millar > 1)
BEGIN
SET @Resultado = dbo.fnCentenas(@Millar) + ' mil'
IF(dbo.fnCentenas(@Centena) <> '')
SET @Resultado = @Resultado + ' ' + dbo.fnCentenas
(@Centena)
END
RETURN @Resultado
END
GO

CREATE FUNCTION dbo.fnImporteLetra(@Numero money)

RETURNS varchar(180)
AS
BEGIN
DECLARE
@Millon int,
@Millar int,
@Centavos tinyint,
@Moneda varchar(5),
@Mon varchar(4),
@Resultado varchar(180)

SET @Millon = FLOOR((@Numero / 1000000))
SET @Millar = @Numero - (@Millon * 1000000)
IF(@Millon < 1)
BEGIN
SET @Resultado = dbo.fnMillares(@Millar)
END
IF(@Millon = 1)
BEGIN
SET @Resultado = 'un millón'
IF(dbo.fnMillares(@Millar) <> '')
SET @Resultado = @Resultado + dbo.fnMillares(@Millar)
END
IF(@Millon > 1)
BEGIN
SET @Resultado = dbo.fnMillares(@Millon) + ' millones'
IF(dbo.fnMillares(@Millar) <> '')
SET @Resultado = @Resultado + ' ' + dbo.fnMillares
(@Millar)
END
SET @Moneda = 'pesos'
SET @Mon = 'm.n.'
SET @Centavos = CONVERT(tinyint, (@Numero * 100 - FLOOR(@Numero)
* 100))
SET @Resultado = @Resultado + ' ' + @Moneda + ' ' + CONVERT
(varchar(2), @Centavos) + '/100 ' + @Mon
RETURN '(' + @Resultado + ')'
END
GO

SELECT 444444444.25, dbo.fnImporteLetra(444444444.25)
GO

-- Espero que esta contribucion sea de utilidad
-- Atte. Sam







Jue, 11 de Nov, 2004 3:03 pm

samuelmercado
Sin conexión Sin conexión
Enviar mensaje Enviar mensaje

Reenviar Mensaje #3654 de 4541 |
Desplegar mensajes Autor Ordenar por fecha

/* FUNCIONES PARA LA CONVERSION DE NUMEROS A CANTIDADES CON LETRA PROG. SAM VER. 1.0 ENVIO: 11 NOV 2004 */ CREATE FUNCTION dbo.fnUnidades(@Numero tinyint) ...
Samuel Mercado
samuelmercado
Sin conexión Enviar mensaje
11 de Nov, 2004
3:04 pm
Avanzado

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