none
FILTRO - TEXTOX Y COMBOBOX EN UN DATAGRIDVIEW RRS feed

  • Pregunta

  • HOLA Q TAL, OJALA ME PUEDAN AYUDAR TENGO ESTE FORMULARIO :

     CUANDO SELECCIONO LA EMPRESA ME SALEN LAS VENTAS DE CADA PERIODO PERO CUANDO ESCRIBO EL
    PERIODO EN LE TEXTBOX EN ESTE CASO "ENERO2017" NO ME FILTRA, ME SALTA UN ERROR ,ESTE ES MI PROC. ALMACENADO :

    ALTER PROCEDURE [dbo].[VENTAS_X_PERIODO]
      @IdEmpresa as int
     
       as
     select E.IdEmpresa as IdEmpresa, E.Nombre_E as Empresa,V.Periodo as Periodo,V.Fecha_Venta,V.Tipo_Documento,V.Num_Documento,MAX(C.Nombre) as Nombre, MAX(C.DNI_RUC)as DNI_RUC,SUM(DV.Neto)AS Neto,SUM(DV.N_Credito)as N_Credito, SUM(DV.IGV)as IGV, SUM(DV.Total)as Total,MAX(DV.Tipo_Cambio)as Tipo_Cambio,SUM(DV.Dolares)as Dolares,MAX(dv.NumTexto)as Numero
     
      from  dbo.DETALLE_VENTA DV join
            dbo.PRODUCTO P on DV.IdProducto=P.IdProducto join
            dbo.VENTA V on DV.IdVenta=V.IdVenta join
            dbo.CLIENTE C on V.IdCliente=C.IdCliente join
            dbo.EMPRESA E on V.IdEmpresa=E.IdEmpresa
      
       where E.IdEmpresa=@IdEmpresa 
              
            
     Group By V.Num_Documento,V.Periodo,V.Fecha_Venta,V.Tipo_Documento,E.IdEmpresa,E.Nombre_E
     order by V.Num_Documento desc 
    OJALA ME PUEDAN AYUDAR GRACIAS

    miércoles, 1 de febrero de 2017 16:32

Respuestas

Todas las respuestas

  • Eduardo_82,

    Por favor, nada cuesta adjuntar el mensaje de la excepción que obtienes, nos ayudará a entender el error que posiblemente cometes.

    Por otro lado, ¿olvidaste colocar en el procedimiento almacenado el parámetro para el periodo?, no estoy seguro si baste con permitir al usuario escribir un periodo, quizá deberías implementar un desplegable o realizar un filtro por coincidencia.

    - Procedimiento almacenado

    ALTER PROCEDURE dbo.VENTAS_X_PERIODO
        @IdEmpresa int,
        @Periodo nvarchar(4000) = NULL 
    AS
    BEGIN
        SELECT 
    	   E.IdEmpresa AS IdEmpresa, 
    	   E.Nombre_E AS Empresa,
    	   V.Periodo AS Periodo,
    	   V.Fecha_Venta,
    	   V.Tipo_Documento,
    	   V.Num_Documento,
    	   C.Nombre AS Nombre, 
    	   C.DNI_RUC AS DNI_RUC,
    	   SUM(DV.Neto) AS Neto,
    	   SUM(DV.N_Credito) AS N_Credito, 
    	   SUM(DV.IGV) AS IGV, 
    	   SUM(DV.Total) AS Total,
    	   MAX(DV.Tipo_Cambio) AS Tipo_Cambio,
    	   SUM(DV.Dolares) AS Dolares,
    	   MAX(DV.NumTexto) AS Numero 
        FROM  
    	   dbo.DETALLE_VENTA DV 
    	   --INNER JOIN dbo.PRODUCTO P ON DV.IdProducto = P.IdProducto /*No usas la tabla*/
    	   INNER JOIN dbo.VENTA V ON DV.IdVenta = V.IdVenta
    	   INNER JOIN dbo.CLIENTE C ON V.IdCliente = C.IdCliente
    	   INNER JOIN dbo.EMPRESA E ON V.IdEmpresa = E.IdEmpresa  
        WHERE 
    	   E.IdEmpresa = @IdEmpresa
    	   AND (V.Periodo = @Periodo OR @Periodo IS NULL)
        GROUP BY 
    	   E.IdEmpresa,
    	   E.Nombre_E,
    	   V.Periodo,
    	   V.Fecha_Venta,
    	   V.Tipo_Documento,
    	   V.Num_Documento,	   	   
    	   C.Nombre, 
    	   C.DNI_RUC
        ORDER BY 
    	   V.Num_Documento DESC 
    END
    GO

    - Aplicación

    Se entiende que el parámetro 'PERIODO' es opcional, en cuyo caso dependerá si el cuadro de texto contiene un valor o no.

    Dim cmd As New SqlCommand("VENTAS_X_PERIODO", con)
    cmd.CommandType = CommandType.StoredProcedure
    
    cmd.Parameters.AddWithValue("@IdEmpresa", Convert.ToInt32(ComboBox1.SelectedValue))
    If String.IsNullOrEmpty(txtPeriodo.Text) Then
    	cmd.Parameters.AddWithValue("@Periodo", txtPeriodo.Text)
    End If


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    miércoles, 1 de febrero de 2017 17:12
  • GRACIAS POR LA AYUDA... YA ME SALIO TODO , TENIA QUE AGREGAR EN MI PROC ALMACENADO 

    SALUDOS

    miércoles, 1 de febrero de 2017 18:30