CARREGAR DATAGRIDVIEW POR UMA PROCEDURE
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
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