sábado, 9 de noviembre de 2013

VARIABLE TABLE SQL SERVER 2008

 Buenas en esta ocasion veremos el uso de la variable tipo TABLE , conbinandose con otras sentencias dentro del Transact SQL.


/*

Autor                 :     Martin Cox R.
  */
CREATE PROC [FINANZAS].[PA_ESTADOCUENTA_CLIENTES] --1, 24,1 , '21/01/2013','21/08/2013'     
@IDCompania numeric ,      
@IDCliente numeric  ,      
@IDMoneda numeric  ,     
@FechaInicio datetime ,     
 @FechaFinal datetime      
AS     
declare @FechaRegistro DateTime        
declare @NumeroComprobante varchar(100)       
declare @TipoDocumento varchar(100)       
declare @Total decimal(18,4)       
declare @Flag  char(1)       
declare @Contador numeric = 1       
 declare @Saldo decimal(18,4)= 0       
declare @RazonSocial varchar(200)=''     
declare @Ruc varchar(15)=''     
     
      
       
DECLARE @tempEstadoCuentaFinal table(       
FechaRegistro DateTime ,       
NumeroComprobante varchar(100),       
 TipoDocumento varchar(100),       
Debito decimal(18,4),        
Credito decimal(18,4),        
Saldo decimal(18,4)  ,      
RazonSocial varchar(200) ,      
Ruc varchar(15)        
)     
     
select        
 FechaEmision as FechaRegistro ,NumeroDocumento as NumeroComprobante ,        
 tipDoc_cNombreTipoDocumento as TipoDocumento ,       
Total  , 'H' AS Flag ,  RazonSocial , Ruc     
     
into #tempDoc from MAESTROS.VIEW_DOCUMENTOSCOBRAR_LISTAR     
    where MAESTROS.VIEW_DOCUMENTOSCOBRAR_LISTAR.FormaPago = 2     
      and IDPersona =@IDCliente and IDMonedaDocumento = @IDMoneda     
Union All     
SELECT     FINANZAS.COMPROBANTECAJA.FechaRegistro, FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.NumeroComprobante,      
                      FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.TipoDocumento, FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.ImportePagar AS Total,      
                       'D' AS Flag , MAESTROS.MAE_CLIENTES.cli_cNombreCompletoCliente as RazonSocial ,MAESTROS.MAE_CLIENTES.cli_cRucCliente as Ruc     
FROM FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR      
INNER JOIN FINANZAS.COMPROBANTEENTRADACAJA ON FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.IDCompania = FINANZAS.COMPROBANTEENTRADACAJA.IDCompania AND  FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.IDTipoDocumento = FINANZAS.COMPROBANTEENTRADACAJA.IDTipoDocumento AND      
                       FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.IDSede = FINANZAS.COMPROBANTEENTRADACAJA.IDSede AND      
                      FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.IDCentroFinanciero = FINANZAS.COMPROBANTEENTRADACAJA.IDCentroFinanciero AND      
                       FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.NumeroComprobanteCaja = FINANZAS.COMPROBANTEENTRADACAJA.NumeroComprobante AND      
                      FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.NumeroSerieCaja = FINANZAS.COMPROBANTEENTRADACAJA.NumeroSerie      
 INNER JOIN              FINANZAS.COMPROBANTECAJA ON FINANZAS.COMPROBANTEENTRADACAJA.IDCompania = FINANZAS.COMPROBANTECAJA.IDCompania AND      
                      FINANZAS.COMPROBANTEENTRADACAJA.IDTipoDocumento = FINANZAS.COMPROBANTECAJA.IDTipoDocumento AND      
                       FINANZAS.COMPROBANTEENTRADACAJA.IDSede = FINANZAS.COMPROBANTECAJA.IDSede AND      
                      FINANZAS.COMPROBANTEENTRADACAJA.IDCentroFinanciero = FINANZAS.COMPROBANTECAJA.IDCentroFinanciero AND      
                       FINANZAS.COMPROBANTEENTRADACAJA.NumeroComprobante = FINANZAS.COMPROBANTECAJA.NumeroComprobante AND      
                      FINANZAS.COMPROBANTEENTRADACAJA.NumeroSerie = FINANZAS.COMPROBANTECAJA.NumeroSerie     
 inner join MAESTROS.MAE_CLIENTES on FINANZAS.COMPROBANTEENTRADACAJA.IDCliente =MAESTROS.MAE_CLIENTES.cli_nCodigoCliente     
                           
                           
WHERE  (FINANZAS.COMPROBANTECAJADOCUMENTOCOBRARPAGAR.FormaPago = 'CREDITO') and (FINANZAS.COMPROBANTEENTRADACAJA.IDCliente = @IDCliente)     
 and FINANZAS.COMPROBANTECAJA.IDMoneda = @IDMoneda    and RTRIM( FINANZAS.COMPROBANTECAJA.EstadoEntrega) != 'ANULADO' 
        
DECLARE CursorEstadoCuenta CURSOR     
FOR       
select *  from  #tempDoc     
--where FechaRegistro between  CONVERT(CHAR(10),@FechaInicio,103) and CONVERT(CHAR(10),@FechaFinal  ,103)     
  where CONVERT(CHAR(10),FechaRegistro,103) between  CONVERT(CHAR(10),@FechaInicio,103) and CONVERT(CHAR(10),@FechaFinal  ,103)     
     
       
OPEN CursorEstadoCuenta       
FETCH CursorEstadoCuenta        
        
INTO  @FechaRegistro ,@NumeroComprobante ,@TipoDocumento ,@Total ,@Flag ,@RazonSocial ,@Ruc     
       
WHILE (@@FETCH_STATUS = 0)       
       
 begin       
   if(@Flag = 'D')       
     begin       
      set @Saldo  =  @Saldo  -  @Total - 0 ;         
       insert into @tempEstadoCuentaFinal values (@FechaRegistro ,@NumeroComprobante ,       
      @TipoDocumento ,@Total ,0,@Saldo,rtrim(@RazonSocial) ,@Ruc )       
             
     end       
          
  else if(@Flag = 'H')       
       begin       
      set @Saldo  =  @Saldo  +  @Total - 0 ;        
       insert into @tempEstadoCuentaFinal values (@FechaRegistro ,@NumeroComprobante ,       
       @TipoDocumento ,0 ,@Total,@Saldo ,RTRIM( @RazonSocial),@Ruc)       
               
      end         
   FETCH CursorEstadoCuenta INTO  @FechaRegistro ,@NumeroComprobante ,@TipoDocumento ,@Total ,@Flag    ,@RazonSocial     
                                ,@Ruc     
   set  @Contador =@Contador +1;       
           
 END -- end loop while       
       
CLOSE CursorEstadoCuenta       
DEALLOCATE CursorEstadoCuenta       
       
select * from  @tempEstadoCuentaFinal       
drop table #tempDoc   
   

jueves, 7 de noviembre de 2013

Acceder a los DataKeys de un GridView desde el evento RowDeleting

Buenas mis estimados ,
Despues de algun tiempo que deje de publicar ya que por motivos de tiempo se me hace muy dificil , pero bueno aqui estamos , en esta ocasion veremos obtener los valores de un DataKey desde el evento RowDeleting de nuestro GridView

Aqui el ejemplo:

protected void GridFamiliaProductos_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        int rowIndex = e.RowIndex;

        DataKeyArray ArrayKeys = GridFamiliaProductos.DataKeys;

        string IDCompania = Convert.ToString(ArrayKeys[rowIndex].Values[0]);
        string IDTipodocumento = Convert.ToString(ArrayKeys[rowIndex].Values[1]);
        string IDSede = Convert.ToString(ArrayKeys[rowIndex].Values[2]);
        string IDCentroFinanciero = Convert.ToString(ArrayKeys[rowIndex].Values[3]);
        string NumeroSerie = Convert.ToString(ArrayKeys[rowIndex].Values[4]);
        string NumeroComprobante = Convert.ToString(ArrayKeys[rowIndex].Values[5]);        

    }


Nos vemos

lunes, 19 de agosto de 2013

Obtener Hora del Sistema en MS SQL SERVER 2008

Buenas , en esta ocasion veremos algo bastante sencillo, pero que hay veces nos hace perder un poco de tiempo o mas bien dicho invertir un poco de tiempo en googlear , es recuperar la Hora actual en SQL server



declare @HORREG char(8)
set @HORREG = CONVERT (time, SYSDATETIME())
select @HORREG as Hora


Saludos

lunes, 22 de julio de 2013

Crecer y disminuir DIV con javascript


function AumnetarTamanio(pAumentar){

var tabla = document.getElementById("divDinamic");
var anchoTabla = tabla.offsetWidth;
var altoTabla = tabla.offsetHeight;

 altoTabla = altoTabla + pAumentar + "px"  
 document.getElementById("divDinamic")
 .style.height =  altoTabla ;

// .style.height="400px";
//alert("NewHeigth " + altoTabla) ;

 }


 function DisminuirTamanio(pDisminuir){

 var tabla = document.getElementById("divDinamic");
var anchoTabla = tabla.offsetWidth;
var altoTabla = tabla.offsetHeight;

 altoTabla = altoTabla - pDisminuir; //+ "px" ;
 altoTabla =  altoTabla + "px"; 

 document.getElementById("divDinamic")
 .style.height =  altoTabla ;

 }

Valor no repetido en JavaScript

        /*    Validacion si se repiden codigos Servicios */
       
     for (var i = 0; i < parseInt(rowCount) ; i++){   

        if ($("#TXTCodigo" + (i+1)).val() != undefined && $("#TXTCodigo" + (i+1)).val() != 'undefined' && $("#TXTCodigo" + (i+1)).val() != '' ){
               
                 var count= 0 ;
                 if(Salir =="S") break;
               
                 CodigoServi1 =  $("#TXTCodigo" + (i+1)).val() ;
                 for (var j = 0; j < parseInt(rowCount) ; j++){   
               
                 if ($("#TXTCodigo" + (j+1)).val() != undefined && $("#TXTCodigo" + (j+1)).val() != 'undefined' && $("#TXTCodigo" + (j+1)).val() != '' ){
                        CodigoServi2 = $("#TXTCodigo" + (j+1)).val();
                                               
                        if(CodigoServi1 == CodigoServi2   ){
                                if(count>0){
                                cadenaValores += CodigoServi1 ;
                                //cadenaValores += CodigoServi1 + ",";
                                 cadenaIDRepetidos +=     "TXTCodigo" + (j+1);       
                                Salir ="S";
                                break ;
                                }
                                count ++; 
                        }
                    }
                 }               
            }
        }
   

 if(cadenaValores != "")
 {
    r_PopupAlert('El codigo de servicio ' +  cadenaValores + ' se esta repitiendo',0,cadenaIDRepetidos ,"");
    return false;
   
 }

jueves, 11 de julio de 2013

CURSOR Y SQL DINAMICO

Un ejemplo de un cursor con SQL Dinamico que muchas veces es nuestra ultima alternativa a una solucion , pero nos ayuda a resolver problemas a nivel de base de datos
CREATE PROCEDURE CURSORDINAMICO -- 1,'001,003,004,006,005,002,007,007'
@FirstParamters NUMERIC(2),
@StringValues VARCHAR(MAX)
as 
 -- Declaración del cursor
declare @Valor1 VARCHAR(MAX) = ''
declare @Valor2 VARCHAR(MAX) = ''
declare @Resultado VARCHAR(MAX)= ''
declare @Contador numeric = 0

DECLARE CursorSplit CURSOR
FOR
    select * from dbo.split(@StringValues,',')
-- Open Cursor
OPEN CursorSplit
--Reading First row
FETCH CursorSplit INTO  @Valor1  , @Valor2
WHILE (@@FETCH_STATUS = 0)
BEGIN
--Reading Second row
     if(@Valor2 != '')
    begin
        if(@Contador = 0)
                    begin 
                        set  @Resultado =  CHAR(39) + ' and XXX LIKE ' + CHAR(39)  + '%' + @Valor2  + '%' + CHAR(39) 
                    end
        else
                    begin
                            set  @Resultado =@Resultado  + ' or XXX LIKE ' + CHAR(39)  + '%' + @Valor2  + '%' + CHAR(39)
                    end
                set     @Contador = @Contador+1
        end    
    FETCH CursorSplit INTO  @Valor1  , @Valor2
END -- end loop while
CLOSE CursorSplit
DEALLOCATE CursorSplit

DECLARE @TSQL  VARCHAR(MAX)
SET @TSQL  = ' SELECT XXX,XXX,XXX
                            FROM XXX 
                            where XXX LIKE ''%' +RTRIM(CONVERT(CHAR(2),@FirstParameter)) + '%'  + @Resultado 
--SELECT @TSQL   AS TSQL
EXEC (@TSQL )

go