Ir para conteúdo
Fórum Script Brasil
  • 0

Preencher grid


Paulo Jardim

Pergunta

Galera,

preciso de um help

no lin abaixo segue a modlagem do meu banco.

Modelagem do banco

Meu problema é o seguinte,

Na tabela itens de documento eu armazeno a quantidade do tipo de documento de cada loja.

Por exemplo.

Loja 1 tem 10 documentos do tipo DEVOLUÇÂO

Loja 1 tem 1 documento do tipo Transporte

Loja 1 tem 40 documentos do tipo RDZ

loja 2 tem 2 documentos do tipo DEVOLUÇÂo

ETC.

mas quando vou fazer a declaração preciso fazer uma consulta e preencher um grid da seguinte forma.

Usuário informa o Cliente, data e tipo de declaração,

ai abaixo é um filtro dos dados informados com as seguintes informações:

DATA DOCUMENTO VALOR ETC

Data que valor foi inserido DEVOLUCAO * O usuario informará caso não exista se será inserido ao final com um evento enviar.

xxxx/xx/xx DEVOLUCAO * ""

xxxx/xx/xx DEVOLUÇÂO * ""

xxxx/xx/xx RDZ * ""

Lembrando que a quantidade de devolução que aparecerá será igual a cadastrada, ou seja, se a loja tem 50 tipos de documentos devolução irá aparecer 50 linhas com os campos devolção ...

Link para o comentário
Compartilhar em outros sites

14 respostass a esta questão

Posts Recomendados

  • 0

Entendi... bom, como você tem filtros opcionais, seria interessante você ir concatenando sua string de consulta de acordo com o que o usuário escolher. Por exemplo:

sSQL = "SELECT nomeLoja, tipoDocumento, nomeUsuario, dataDeclaracao, valorDocumento FROM minhaTabela WHERE ";

//Aqui começam os filtros.
//Todos os campos aqui são FICTÍCIOS. É apenas um exemplo para você encaixar no seu contexto
if (cmbTipoDocumento.Text != string.Empty())
{
    sWhere = " tipoDocumento = '" + cmbTipoDocumento.Text + "'";
}

if (dataDeclaracao.Value != null)
{
    if (sWhere != string.Empty())
    {
         sWhere += " AND dataDeclaracao = '" + dataDeclaracao.Value + "'";
    }
    else
    {
         sWhere = " dataDeclaracao = '" + dataDeclaracao.Value + "'";
     }

}

//E assim para todos os demais filtros

Editado por Xistyle
Link para o comentário
Compartilhar em outros sites

  • 0

Mas o problema ta ae nesses filtros...

Problema co mConsulta ao banco

Nessa imagem mostra o problema:

o seguinte, já que a loja x tem y quantidades do documento z

eu gostaria que aparecesse a loja y quantidades do documento z

assim:

loja 1 RDZ

loja 1 RDZ

loja 1 RDZ

loja 1 RDZ

depois quando acabasse as rdz

loja 2 xxx

loja 2 xxx

e assim por diante...

mais com o outer join não consegui.

Link para o comentário
Compartilhar em outros sites

  • 0

Primeiramente, se Desc_Tipo e Itens_Doc são chaves estrangeiras da Itens_Declaracao E obrigatórios, simplifique e use dois INNER JOIN*. Se não forem obrigatórios (por exemplo, tenho um registro na Itens_Declaracao que não precisa de informações da Itens_Doc, ai use o LEFT JOIN**)

*Exemplo 1:

SELECT     i.data_declaracao,
    d.desc_doc,
    t.qtd_tipo_doc,
    i.identificacao_doc,
    i.obs_declaracao,
    i.valor
FROM         itens_declaracao   AS i WITH (NOLOCK)
INNER JOIN    itens_doc            AS t WITH (NOLOCK) ON i.cod_itens_doc = t.cod_itens_doc
INNER JOIN     desc_doc            AS d WITH (NOLOCK) ON d.cod_desc_doc = t.cod_desc_doc
**Exemplo 2:
SELECT     i.data_declaracao,
    d.desc_doc,
    t.qtd_tipo_doc,
    i.identificacao_doc,
    i.obs_declaracao,
    i.valor
FROM         itens_declaracao AS i WITH (NOLOCK)
LEFT   JOIN    itens_doc          AS t WITH (NOLOCK) ON i.cod_itens_doc = t.cod_itens_doc
INNER JOIN     desc_doc          AS d WITH (NOLOCK) ON d.cod_desc_doc = t.cod_desc_doc

Lembrando que não sei as regras de negócios e estruturas das suas tabelas. Não consigo visualizar, por exemplo, a ligação desses registros com as lojas. Com o relacionamento das lojas, podemos ordenar por LOJA, seguido de TIPO DOC.

Editado por Xistyle
Link para o comentário
Compartilhar em outros sites

  • 0

entendo Xistyle...

Eu realmenter não sei o que fazer agora.

Pois se peço para vizualizar Itens da declaração ele não me retorna a quantidade de documentos de cada loja.

eu andei pensando em no lugar de um select geral fazer ele por partes. exemplo

dar um select em itens_doc e armazenar a quantidade em uma variavel qtd_itens_doc e a descrição do tipo em desc_tipo;

depois preencher uma tabela ou um grid onde a primeira coluna seja a desc_tipo e o resto das colunas sejam ou outros dados que quero armazenar.

ai na hora de dar um insert jogo no tabela itens declaração os itens declarados.

Não sei se essa é a melhor forma...mais não vejo outra.

por que eu quero que os dados aparecam igual a uma planilha de excel

ex:

LOJA            Tipo Documento          VALOR           ETC

loja 1           rdz1                              11111
loja 1           rdz2                               1111
loja 1           rdz3                               11111
loja 1           rdz4                               1111

e assim até acabar a quantidade desse tipo de documento que esta definida na tabela desc_doc.

ta dando pra entender?

Editado por Paulo Jardim
Link para o comentário
Compartilhar em outros sites

  • 0

Qual é a relação entre Itens_Declaracao e Loja? Digo, em termos técnicos, qual é a chave estrangeira, onde ela se encontra, qual é a ligação entre as tabelas? Deu pra entender como você quer visualizar, mas as regras de negócio, as ligações entre as informações, não estão nada claras.

Link para o comentário
Compartilhar em outros sites

  • 0

Xistyle,

Entendi...

Eu tb vejo isso, infelizmente eu tinha uma outra estrutura, mas meu professor sugeriu dessa forma, eu realmene não concordo que seja a melhor.

Mas independente disso acho que da para implementar.

bom, a regra de negocio é a seguinte.

A loja tem documentos vários tipos de documentos com quantidades diferentes ex:

loja 1 tem o tipo de documento RDZ e sua quantidade é 5

loja 1 tem o tipo de documento XXX e sua quantidade é 1

assim por diante.

Bom, a loja faz declaração. pela razão a loja deveria ficar ligada a essa tabela, mas meu professor me disse que não era ideal. Sendo assim ele sugeriu esse formado.

Mas continuando. Existe uma página onde será feita a declaração..

nessa página tera um grid esse grid será preenchido pela loja itens de declaração e itens de documento.

porém minha dúvida é como fazer para que nesse grid apareca 5 vezes a rdz quando eu selecionar o filtro de loja 1, já que a loja 1 tem 5 quantidade do tipo de documento rdz;

Segue abaixo scrip do banco.

Script do banco

Link para o comentário
Compartilhar em outros sites

  • 0

Acho que entendi... você transformar o seu campo qtde_tipo_doc em linhas. Ou seja, se no seu campo qtde_tipo_doc tem a informação 5, para a loja 1, do tipo RDZ, você quer que essa informação gere 5 linhas com a informação LOJA1 RDZ VALOR.

Seria isso?

Link para o comentário
Compartilhar em outros sites

  • 0

Acredito que a forma mais simples seja montar uma Stored Procedure. Existe o método PIVOT no SQL, mas ele funciona de forma contrária, para transformar linhas em colunas. Vou montar algo simples, mais para exemplicar algumas sintaxes.

CREATE PROCEDURE ...
AS
BEGIN
    --1) Crie uma tabela temporária (#nomeTabela) com os campos que deseja exibir na grid
    --2) Fazer o SELECT que irá trazer a quantidade de documentos para uma determinada loja e tipo de documento. Armazenar em variáveis
    DECLARE @idLoja                  AS INT
    DECLARE @idTipoDocumento AS INT
    DECLARE @qtdeDocumentos  AS INT
    
    --Não lembro mais os nomes dos campos, basta substituir
    SELECT @idLoja = cod_Loja, @idTipoDocumento = cod_doc_itens, @qtdeDocumentos = qtde_docs FROM tabela ... WHERE ...

    DECLARE @Contador AS INT 
    SET @Contador = 1
   
    WHILE @Contador <= @qtdeDocumentos
    BEGIN

       --3) Aqui você fará todo o INSERT na sua tabela temporária. Essas informações serão inseridas de acordo com a quantidades de documentos que você precisa
       SET @Contador = @Contador + 1

    END

    SELECT campo1, campo2 FROM #nomeTabela

END

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...