CARREGAR DATAGRIDVIEW POR UMA PROCEDURE

RAFINHAAREIS 18/04/2014 00:55:40
#437415
BOA NOITE GALERA.

ESTOU MONTANDO UM TRABALHO EM VISUAL STUDIO 2012, E PRECISO TRAZER OS PEDIDOS QUE ESTÃO CADASTRADOS EM MINHA BASE DE DADOS.

OK, ISSO EU CONSEGUI FAZER FACILMENTE, INPUTANDO AS INFORMAÇÕES NO DATAGRIDVIEW. ESSE PROCEDIMENTO é FEITO ATRAVéS DE UMA PROCEDURE QUE CRIEI NO SQL SERVER.

ACONTECE QUE A PESSOA TEM A OPÇÃO DE FILTRAR OS PEDIDOS, POIS QUANDO A BASE DE DADOS CRESCER A PESSOA NÃO VAI FICAR PROCURANDO UM PEDIDO EM MEIO A UM MILHÃO DE PEDIDOS.

MONTEI ENTÃO UMA PROCEDURE QUE RECEBE ALGUNS PARAMETROS (OPCIONAIS) PARA QUE SEJA REALIZADO UM WHERE APENAS DAQUILO QUE A PESSOA DESEJE.

O PROBLEMA COMEÇOU AQUI... POIS AS INFORMAÇÕES NÃO APARECERAM MAIS DESDE QUE MUDEI DE PROCEDURE.

O QUE EU QUERO FAZER é ASSIM: INSERIR OS PARAMETROS NA PROCEDURE COM OS VALORES DO MEU FORMULARIO VB. REALIZAR O SELECT COM AS INFORMAÇÕES FILTRADAS E RETORNAR EM UM DATAGRID

VEJA A PROCEDURE ABAIXO:
CREATE PROCEDURE sp_pedido_vendas_temp
--@cod_cli
--@total
--@vend
--@ped_comp
--@ped_vend
@num_ped int = 0,
@status_ped int = 0,
@dt_inicial datetime = [ô][ô],
@dt_final datetime = [ô][ô]

AS
BEGIN
SET NOCOUNT ON;
DECLARE @filtro NVARCHAR(4000)
DECLARE @sqlQuery NVARCHAR(4000)

--VERIFICA SE EXISTE PARAMETRO PARA PEDIDO
IF @num_ped <> 0
BEGIN
SET @filtro = [ô]P.num_ped=[ô] + @num_ped
END

--VERIFICA SE EXISTE PARAMETRO PARA DATA
IF @dt_inicial <> [ô][ô] AND @dt_final <> [ô][ô]
BEGIN
IF @filtro <> [ô][ô]
BEGIN
SET @filtro = @filtro + [ô] AND [ô]
END
SET @filtro = @filtro + [ô]P.dt_entrega >=[ô] + [ô][ô][ô][ô] + @dt_inicial + [ô][ô][ô][ô] + [ô] AND P.dt_entrega <=[ô] + [ô][ô][ô][ô] + @dt_final + [ô][ô][ô][ô]
END

--VERIFICA DE EXISTE PARAMETRO PARA STATUS
IF @status_ped <> 0
BEGIN
IF @filtro <> [ô][ô]
BEGIN
SET @filtro = @filtro + [ô] AND [ô]
END
SET @filtro = @filtro + [ô]S.id=[ô] + @status_ped
END

SET @sqlQuery =
[ô]SELECT
P.num_pedido AS [Num Pedido],
C.nome_fantasia AS [Cliente],
P.total_pedido AS [Total],
P.usuario AS [Vendedor],
S.descricao AS [Status],
P.dt_entrega AS [Data Entrega]
FROM tb_pedidos AS P
INNER JOIN tb_clientes AS C ON
P.cod_forn_cli = C.cod_cliente
INNER JOIN tb_status_pedidos AS S ON
P.status_pedido = S.id
WHERE [ô] + @filtro +
[ô]ORDER BY p.num_pedido[ô]

EXEC(@sqlQuery)
END

VEJA O TRECHO QUE ESTOU USANDO ATUALMENTE, MAS QUE NÃO REALIZA NENHUM FILTRO (SERÁ DESCARTADO)
OBS: ESSE FUNCIONA, E ESTOU USANDO UMA OUTRA PROCEDURE MESMO, NÃO ESTÁ ERRADO
[ô]***********************************************************
[ô] SELECIONAR TODOS OS PEDIDOS - FUNCIONA MAS NÃO SERÁ USADA
[ô]***********************************************************
sqlQuery = [Ô]sp_pedido_vendas[Ô]
dt = New DataTable
cmd = New SqlClient.SqlCommand(sqlQuery, cnn)
da = New SqlClient.SqlDataAdapter(cmd)
da.SelectCommand.CommandType = CommandType.StoredProcedure

da.Fill(dt)

dgvResultPesquisa.DataSource = dt
[ô]***********************************************************
[ô] FINAL DO TRECHO QUE SERÁ DESCARTADO
[ô]***********************************************************

ESPERO QUE ALGUéM POSSA ME DAR UMA AJUDA
Faça seu login para responder