Jump to content
Fórum Script Brasil
  • 0

Preencher grid


Paulo Jardim

Question

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 to comment
Share on other sites

14 answers to this question

Recommended Posts

  • 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

Edited by Xistyle
Link to comment
Share on other 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 to comment
Share on other 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.

Edited by Xistyle
Link to comment
Share on other 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?

Edited by Paulo Jardim
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...