jueves, 20 de enero de 2011

poner eventos de javascript en un boton de .net

Con este sencillo comando es posible poner eventos de javascript e incluso mandar a llamar funciones como se hacia en los buenos tiempos, en botones de .net


Button1.Attributes.Add("onclick", "history.back(-1);");

lunes, 17 de enero de 2011

convertir numeros en letras tsql

Para realizar este proceso se utilizan 4 funciones que detallo a continuacion:
1.
CREATE FUNCTION Convi_FindNum( @Cual Int )
RETURNS nVarChar(Max)
AS BEGIN
Declare @Resu nVarChar(Max)
Set @Resu = Case @Cual
When 1 Then 'uno'
When 2 Then 'dos'
When 3 Then 'tres'
When 4 Then 'cuatro'
When 5 Then 'cinco'
When 6 Then 'seis'
When 7 Then 'siete'
When 8 Then 'ocho'
When 9 Then 'nueve'
When 10 Then 'diez'
When 11 Then 'once'
When 12 Then 'doce'
When 13 Then 'trece'
When 14 Then 'catorce'
When 15 Then 'quince'
When 16 Then 'dieciseis'
When 17 Then 'diecisiete'
When 18 Then 'dieciocho'
When 19 Then 'diecinueve'
When 20 Then 'veinte'
When 30 Then 'treinta'
When 40 Then 'cuarenta'
When 50 Then 'cincuenta'
When 60 Then 'sesenta'
When 70 Then 'setenta'
When 80 Then 'ochenta'
When 90 Then 'noventa'
When 100 Then 'cien'
Else Case
When @Cual <= 29 Then 'veinti*'
When @Cual <= 39 Then 'treinta y *'
When @Cual <= 49 Then 'cuarenta y *'
When @Cual <= 59 Then 'cincuenta y *'
When @Cual <= 69 Then 'sesenta y *'
When @Cual <= 79 Then 'setenta y *'
When @Cual <= 89 Then 'ochenta y *'
When @Cual <= 99 Then 'noventa y *'
When @Cual <= 199 Then 'ciento *'
When @Cual <= 299 Then 'doscientos *'
When @Cual <= 399 Then 'trescientos *'
When @Cual <= 499 Then 'cuatrocientos *'
When @Cual <= 599 Then 'quinientos *'
When @Cual <= 699 Then 'seiscientos *'
When @Cual <= 799 Then 'setecientos *'
When @Cual <= 899 Then 'ochocientos *'
When @Cual <= 999 Then 'novecientos *'
When @Cual <= 1999 Then 'un mil *'
When @Cual <= 9999 Then '# mil *'
When @Cual <= 99999 Then '## mil *'
When @Cual <= 999999 Then '### mil *'
When @Cual <= 1999999 Then 'un millón *'
When @Cual <= 9999999 Then '# millones *'
When @Cual <= 99999999 Then '## millones *'
When @Cual <= 999999999 Then '### millones *'
When @Cual <= 999999999 Then '### millones *'
Else ''
End
End
RETURN @Resu
END
2.
CREATE FUNCTION Convi_PreConvierte
( @Cual Int )
RETURNS nVarChar(Max)
AS BEGIN
Declare @Resu nVarChar(Max)
Set @Resu = ''
If @Cual <= 0 Return @Resu
Set @Resu = dbo.Convi_FindNum(@Cual)
Declare @TmpPre Int
Set @TmpPre = 0
Declare @TmpSuf Int
Set @TmpSuf = @Cual
Declare @i Int
Declare @TmpNum nVarChar(Max)
Set @i = Case
When CharIndex('###',@Resu) > 0 Then 3
When CharIndex('##',@Resu) > 0 Then 2
When CharIndex('#',@Resu) > 0 Then 1
Else 0
End
If @i > 0 Begin
Set @TmpNum = Convert(nVarChar(Max),@Cual)
Set @TmpPre = Convert(Int,Left(@TmpNum,@i))
Set @Resu = Right(@Resu,Len(@Resu)-@i)
Set @TmpSuf = Convert(Int,Right(@TmpNum,Len(@TmpNum)-@i))
End
If CharIndex('*',@Resu) > 0 Begin
If @TmpPre > 0
Set @Resu = dbo.Convi_PreConvierte(@TmpPre) + Left(@Resu,Len(@Resu)-1) + dbo.Convi_PreConvierte(@TmpSuf)
Else Begin
Set @TmpNum = Convert(nVarChar(Max),@TmpSuf)
Set @TmpSuf = Convert(Int,Right(@TmpNum,Len(@TmpNum)-1))
Set @Resu = Left(@Resu,Len(@Resu)-1) + dbo.Convi_PreConvierte(@TmpSuf)
End
End Else
If @TmpPre > 0
Set @Resu = dbo.Convi_PreConvierte(@TmpPre) + @Resu
RETURN @Resu
END
3.
CREATE FUNCTION Convi_Convierte
( @Cual Int )
RETURNS nVarChar(Max)
AS BEGIN
Declare @Resu nVarChar(Max)
Set @Resu = dbo.Convi_PreConvierte(@Cual)
If Right(@Resu,4) = 'uno'
Set @Resu = Left(@Resu,Len(@Resu)-4) + 'uno'
Set @Resu = Replace(@Resu,'uno','un')
RETURN @Resu
END
4.
CREATE FUNCTION Convi_EnLetras
( @Cual Float )
RETURNS nVarChar(Max)
AS BEGIN
Declare @TmpFloat Float
Set @TmpFloat = Round(@Cual,2)
Declare @Decs nVarChar(Max)
Set @Decs = Right('00' + Convert(nVarChar(Max),Round((@TmpFloat - Floor(@TmpFloat))*100,0)),2)
Declare @Resu nVarChar(Max)
Set @Resu = dbo.Convi_Convierte(Floor(@TmpFloat)) + ' con ' + @Decs + '/100'
RETURN @Resu
END
Al ejecutar estas funciones en un Enterprise Manager de sql server estas se generan en la base de datos en la que las ejecutamos, y asi nos da la posibilidad de ejecutarlas de la siguiente manera:
select dbo.Convi_convierte(9146654)
select dbo.Convi_EnLetras(94.57845)
Con los siguientes resultados:
nueve millones ciento cuarenta y seis mil seiscientos cincuenta y cuatro
noventa y cuatro con 58/100