Jump to content
Fórum Script Brasil
  • 0

Alterando todos os dados do gridview


Paulo Jardim

Question

Prezados,

Segue a modelagem do banco em anexo.

Link

Como pode ver a declaração esta ligado a loja, além disso tb coloquei a identificação do documento no documento, assim na hora de cadastrar o documento ele informa a loja o tipo e o numero do documento.

minha dúvida esta na forma com que vou dar select e update ou insert no banco desses dados. EX:

tenho um grid view lista os seguintes campos:

TIPO DOCUMENTO    |  Identifcação do documento |   Obs_Declaração | Valor Declaração

RDZ                         |                 1234                 |       xxx                |        1.250

RDZ                         |                 12345                |       xxx                |        2500

RDZ                         |                 123456               |       131233        |         2.250

Garantia                  |                    12                   |       xxx                |        1.587

Link Para tela de declaracao

E assim por diante , e ao clicar em editar tenho um procedimento que transforma os labels em text box conforme códido abaixo*

<asp:Label ID="lbObs_declaracao" Visible='<%# !(bool) IsInEditMode %>' runat="server" Text='<%# Eval("obs_declaracao") %>' />

<asp:TextBox ID="txtObs_declaracao" Visible='<%# IsInEditMode %>' runat="server" Text='<%# Eval("obs_declaracao") %>' />

*caso tenha forma melhor de editar todos os dados do gridview ao mesmo tempo estou ouvindo.

Como pode ver, tenho 2 tabelas nesse gridiew a tabela Documento e a tabela itens de declaração entretanto quando eu for armazenar eu preciso armazenar primeiro em DECLARAÇÂO

pois tenho de armazenar quem esta fazendo, qual tipo de declaração e qual data, qual loja. Após isso tenho de pegar esse ID que foi gerada e criar na tabela itens_declaração

os dados do grid acima.

Minha linha de raciocínio esta plausível?

como devo proceder, poderia me ajudar com isso?

Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Paulo, pelo que entendi sua dúvida está mais relacionada à lógica das regras do que ao código. As tabelas estão bem normalizadas. Sendo assim, o seu raciocínio está correto. Você primeiro insere os dados na tabela Declaração, gerendo um novo ID. Com esse novo ID gerado, você insere os dados correspondentes àquela declaração na tabela Itens_Declaração.

Sobre a dúvida de código, não manjo nada de web :/

Link to comment
Share on other sites

  • 0

Xistyle,

Mais uma vez grato pelo apoio.

Mas se for este o caso, se eu tiver que criar a declaração depois os itens dela.

Como faça isso?

Minha dúvida é a seguinte.

O usuário informa a loja, tipo e data.

1- caso:

1.1- não existem dados cadastrados com esse filtro.

1.1.1 - Preenche o grid com com as seguintes informações

select Tipo_Documento.desc_documento, Documento.ident_doc , Itens_Declaracao.obs_declaracao, Itens_Declaracao.valor,
        Declaracao.data_declaracao,  tipo_declaracao.tipo_declaracao 
        from Tipo_Documento
        LEFT JOIN Documento on Documento.cod_tipo_documento = Tipo_Documento.cod_tipo_documento
        LEFT JOIN Itens_Declaracao on Itens_Declaracao.Documento_cod_documento = Documento.cod_documento
        LEFT JOIN Loja on Loja.cod_loja = Documento.cod_loja
        LEFT JOIN Declaracao on Declaracao.cod_declaracao = Itens_Declaracao.cod_declaracao
        LEFT JOIN Tipo_Declaracao on tipo_declaracao.cod_tipo_declaracao = Declaracao.cod_tipo_declaracao

Minha dúvida já começa por ai.

O retorno disso é o que preciso. só que essa consulta precisa estar sendo filtrado pela loja pelo tipo de declaração e pela data.

Só que se eu botar where ai ele não retorna nada.

eu quero botar para filtrar por tudo isso e ainda obter os campos, mesmo que NULL

Link to comment
Share on other sites

  • 0

E na hora de consultar,

Quero que atravéz do filtros me retorne se já dados informados para aquela data daquela loja e daquele tipo de declaração.

MASSSSS independente de haver dados ou não, quero que ele me retorne a consulta da tabela DCOUMENTO ( que vai estar preenchida ) e do lado a tabela itens_declaração

que pode estar vazia ou parcialmente preenchida.

Link to comment
Share on other sites

  • 0

Agora confundiu um pouco. Você tem uma página que o usuário digita os dados de loja, tipo e data. Se existir esses dados, aparece numa grid. Se não, permite o usuário cadastrá-los ou mostra a relação de dados já existentes?

Acho que seu SELECT também pode ser melhorado. Visto que, aparentemente, você deseja exibir as declarações, pode fazer desta forma:

SELECT
tdo.desc_documento, 
doc.ident_doc , 
ide.obs_declaracao, 
ide.valor,
dec.data_declaracao,  
tde.tipo_declaracao

FROM declaracao AS dec
INNER JOIN itens_declaracao AS ide ON ide.cod_declaracao = dec.cod_declaracao
INNER JOIN tipo_declaracao   AS tde ON tde.cod_tipo_declacarao = dec.cod_tipo_declaracao
INNER JOIN documento          AS doc ON doc.cod_documento = ide.documento_cod_documento
INNER JOIN tipo_documento   AS tdo ON tdo.cod_tipo_documento = doc.cod_tipo_documento
INNER JOIN loja                 AS loj ON loj.cod_loja = dec.cod_loja

WHERE loj.cod_loja = 1
AND   dec.data_declaracao = '2011-10-27'
AND   tde.tipo_declaracao = 'TIPO999'

É uma boa prática sempre colocar no seu FROM a tabela principal de acordo com a consulta que você quer fazer. Ou seja, no seu SELECT a impressão que dá é que você quer procurar primariamente por Tipo_Documento.

Link to comment
Share on other sites

  • 0

Brigado pela dica

Xistyle

O Seu select realmente esta bem mais mais alinhado.

Agora confundiu um pouco. Você tem uma página que o usuário digita os dados de loja, tipo e data. Se existir esses dados, aparece numa grid. Se não, permite o usuário cadastrá-los ou mostra a relação de dados já existentes?

São 3 tabelas diretamente envolvidas

Primeiro A declaração que irá armazena a data da declaração, essa data não é a data atual, mas sim a data dos quais os dados inseridos no banco irão atualizar.

Por exemplo um usuário quer fazer a declaração de vendas de uma loja do dia 01-01-2012

ela seleciona a loja, seleciona qual tipo de declaração, cada tipo declaração tem seus proprior valores, por exemplo.

Existem a declração feita pelo auditor (tipo = auditor) e tem a declração feita pela loja (tipo = loja) os dados estão na mesma data porém tem atributos diferentes.

Após selecionar esses dados aparecerá um grid e conforme imagem abaixo:

Link

Essa imagem é após clicar em editar ai o grid fica editavel.

A questão é que com certeza a loja 1 por exemplo irá ter 5, por exemplo documentos do tipo RDZ e 2 por exemplo do garantia.

Meu select tem de retornar exatamente a descrição seguido da identificação do tipo de documento.

Entretanto se eu der um inner join na tabela itens declração, como eu ainda não tenho nada cadastrado para esses itens. A consulta me retorna Vazia.

Link to comment
Share on other sites

  • 0

Hó! Já adianto que posso estar ~pirando~ total nas idéias. Mas VAI QUE isso ajuda algo:

Paulo,

O que o Xistyle falou abaixo faz sentido. O que você quer mostrar quando não existir documento?

Mas se não existe nenhum documento cadastrado, o que você deseja exibir? Continua uma interrogação seu problema :P

Sobre o que você disse:

...Entretanto se eu der um inner join na tabela itens declração, como eu ainda não tenho nada cadastrado para esses itens. A consulta me retorna Vazia.

Pelo o que percebi, você está usando INNER JOIN pra fazer o SELECT. Desse modo, serão retornadas linhas quando todas as condições estabelecidas no SQL forem correspondidas, em todas as tabelas. Em outras palavras, ele descarta as linhas não correspondentes de ambas as tabelas.

Será que se você usar FULL JOIN não seria melhor? Desta forma, serão retornadas as linhas mesmo que as condições sejam parcialmente correspondidas. Ou seja, permite que a linha da tabela esquerda ou direita que não atende à condição seja incluída nos resultados, e as colunas de saída correspondentes q outra tabela sejam definidas como NULL.

E ENTÂO tendo o resultado como NULL, você pode tratar via programação (CREIO EU) e definir como quer apresentar para o usuário, já que não deseja manter em branco.

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...