none
CONSULTA COM ALIAS RRS feed

  • Pergunta

  • oi bom dia eu tenho este codigo que funciona , só que gostaria de adicionar mais um campo,ele faz isso

    CODIGO       PRODUTO    QNTENTRADA          QNTSAIDA

    25                 bota                 5                          2                                  eu quero adicionar  um campo pra ficar assim

    CODIGO       PRODUTO    QNTENTRADA          QNTSAIDA       ESTOQUE

    25                    bota                5                         2                    3

     Dim sql As String = "select CODIGOPRODUTO, ENTRADA,"
                    sql += " iif(isnull(TotEnt), 0, TotEnt) as TotalEntradas, iif(isnull(TotSai), 0, TotSai) as TotalSaidas from"
                    sql += " (Select Tab_CadastrarProdutos.CODIGOPRODUTO, Tab_CadastrarProdutos.ENTRADA,"
                    sql += " (select SUM(Tab_Entrada_Historico.Quantidade) from Tab_Entrada_Historico"
                    sql += " WHERE Tab_Entrada_Historico.CodigoProduto = Tab_CadastrarProdutos.CodigoProduto AND"
                    sql += " tab_Entrada_historico.Data >= CDATE('" & MaskedTextBox1.Text & "') AND tab_Entrada_historico.Data <= CDATE('" & MaskedTextBox2.Text & "') ) as TotEnt,"
                    sql += " (select SUM(Tab_Saida.Quantidade) from Tab_Saida"
                    sql += " WHERE Tab_Saida.CodigoProduto = Tab_CadastrarProdutos.CodigoProduto AND"
                    sql += " tab_saida.Data >= CDATE('" & MaskedTextBox1.Text & "') AND tab_saida.Data <= CDATE('" & MaskedTextBox2.Text & "') ) as TotSai"
                    sql += " FROM Tab_CadastrarProdutos)) as t"
                    sql += " WHERE TotEnt > 0 or TotSai > 0"
                    sql += " ORDER BY ENTRADA ASC "

    DESEJO ADICIONAR ESTE O CÓDIGO A BAIXO PARA TER O RESULTADO PARA TRER ESTE RESULTADO 

    CODIGO       PRODUTO    QNTENTRADA          QNTSAIDA       ESTOQUE

    25                    bota                5                         2                    3

       sql += "(select Tab_Entrada.Quantidade from Tab_Entrada"
                    sql += " WHERE Tab_Entrada.CodigoProduto = Tab_CadastrarProdutos.CodigoProduto "

    quinta-feira, 30 de agosto de 2018 12:34

Respostas

  • Dependendo do tipo de erro, a ferramenta de administração do banco de dados pode indicar a linha em que ocorre o erro se a consulta for executada dentro dela. Mas dependendo do caso só suprimindo trechos da consulta mesmo até que o erro não ocorra mais.

    Os nomes das colunas utilizadas no Join com a tabela Tab_Entrada estão corretos? Presumi os nomes, não sei se estão corretos. E o tipo de dados das colunas devem ser compatíveis, nem que seja feita alguma conversão de tipos, que na verdade não é o ideal.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Arlindo António quinta-feira, 30 de agosto de 2018 18:52
    quinta-feira, 30 de agosto de 2018 18:28

Todas as Respostas

  • Bom dia,

    Acho que poderia ser utilizada mais uma tabela derivada para não repetir o trecho, mas nesse caso optaria por repetir mesmo:

    Dim sql As String = "select CODIGOPRODUTO, ENTRADA,"
    sql += " iif(isnull(TotEnt), 0, TotEnt) as TotalEntradas, iif(isnull(TotSai), 0, TotSai) as TotalSaidas,"
    sql += " iif(isnull(TotEnt), 0, TotEnt) - iif(isnull(TotSai), 0, TotSai) as Estoque from"
    

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Arlindo António quinta-feira, 30 de agosto de 2018 13:08
    • Não Marcado como Resposta Arlindo António quinta-feira, 30 de agosto de 2018 13:54
    quinta-feira, 30 de agosto de 2018 12:53
  • oi, da uma olha como ficou, se não estrar nada no mês,mas no estoque tiver ele não mostra veja

    quinta-feira, 30 de agosto de 2018 13:57
  • Como deve ser obtido o estoque do produto? É necessário somar todas as entradas e as saídas anteriores desde o início?

    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 30 de agosto de 2018 14:17
  • bom dia, eu tenho 4 tabela, Tab_CadastrarProdutos, tab_Entrada, tab_Entrada_historico e tab_saida

    a ideia era ir na tabela tab_Entrada e pegar o total que tem lá assim mas juntando no código q vc me ajudou a monta, deu para entender?

     sql += "select Tab_Entrada.Total from Tab_Entrada"
                  

    quinta-feira, 30 de agosto de 2018 14:23
  • Experimente acrescentar um Join com a tabela Tab_Entrada para ver se é obtido o resultado esperado:

    Dim sql As String = "select CODIGOPRODUTO, ENTRADA,"
    sql += " iif(isnull(TotEnt), 0, TotEnt) as TotalEntradas, iif(isnull(TotSai), 0, TotSai) as TotalSaidas,"
    sql += " Tab_Entrada.Total + iif(isnull(TotEnt), 0, TotEnt) - iif(isnull(TotSai), 0, TotSai) as Estoque from"
    sql += " (Select Tab_CadastrarProdutos.CODIGOPRODUTO, Tab_CadastrarProdutos.ENTRADA,"
    sql += " (select SUM(Tab_Entrada_Historico.Quantidade) from Tab_Entrada_Historico"
    sql += " WHERE Tab_Entrada_Historico.CodigoProduto = Tab_CadastrarProdutos.CodigoProduto AND"
    sql += " tab_Entrada_historico.Data >= CDATE('" & MaskedTextBox1.Text & "') AND tab_Entrada_historico.Data <= CDATE('" & MaskedTextBox2.Text & "') ) as TotEnt,"
    sql += " (select SUM(Tab_Saida.Quantidade) from Tab_Saida"
    sql += " WHERE Tab_Saida.CodigoProduto = Tab_CadastrarProdutos.CodigoProduto AND"
    sql += " tab_saida.Data >= CDATE('" & MaskedTextBox1.Text & "') AND tab_saida.Data <= CDATE('" & MaskedTextBox2.Text & "') ) as TotSai"
    sql += " FROM Tab_CadastrarProdutos)) as t"
    sql += " INNER JOIN Tab_Entrada ON Tab_Entrada.CodigoProduto = t.CodigoProduto"
    sql += " WHERE TotEnt > 0 or TotSai > 0"
    sql += " ORDER BY ENTRADA ASC "

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 30 de agosto de 2018 14:46
  • oi, ele apresenta um erro na clausula FROM, sera que poderias me ajudar novamente a identificar o erro?

    quinta-feira, 30 de agosto de 2018 16:55
  • Pelo que vi parece que tinha um fechamento de parênteses a mais depois do último From.

    Experimente fazer um teste com a versão abaixo:

    Dim sql As String = "select t.CODIGOPRODUTO, t.ENTRADA,"
    sql += " iif(isnull(t.TotEnt), 0, t.TotEnt) as TotalEntradas, iif(isnull(t.TotSai), 0, t.TotSai) as TotalSaidas,"
    sql += " Tab_Entrada.Total + iif(isnull(t.TotEnt), 0, t.TotEnt) - iif(isnull(t.TotSai), 0, t.TotSai) as Estoque from"
    sql += " (Select Tab_CadastrarProdutos.CODIGOPRODUTO, Tab_CadastrarProdutos.ENTRADA,"
    sql += " (select SUM(Tab_Entrada_Historico.Quantidade) from Tab_Entrada_Historico"
    sql += " WHERE Tab_Entrada_Historico.CodigoProduto = Tab_CadastrarProdutos.CodigoProduto AND"
    sql += " tab_Entrada_historico.Data >= CDATE('" & MaskedTextBox1.Text & "') AND tab_Entrada_historico.Data <= CDATE('" & MaskedTextBox2.Text & "') ) as TotEnt,"
    sql += " (select SUM(Tab_Saida.Quantidade) from Tab_Saida"
    sql += " WHERE Tab_Saida.CodigoProduto = Tab_CadastrarProdutos.CodigoProduto AND"
    sql += " tab_saida.Data >= CDATE('" & MaskedTextBox1.Text & "') AND tab_saida.Data <= CDATE('" & MaskedTextBox2.Text & "') ) as TotSai"
    sql += " FROM Tab_CadastrarProdutos) as t"
    sql += " INNER JOIN Tab_Entrada ON Tab_Entrada.CodigoProduto = t.CodigoProduto"
    sql += " WHERE t.TotEnt > 0 or t.TotSai > 0"
    sql += " ORDER BY ENTRADA ASC "

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    quinta-feira, 30 de agosto de 2018 17:45
  • oi eu agradeço a sua atenção e dedicação em me ajudar, mas ainda continua apresentar erro:

    TIPO NÃO CONCIDENTE NA EXPRESSÃO

    como eu faço pra verificar linha a linha para encontrar o erro? 

       Dim sql As String = "select t.CODIGOPRODUTO, t.ENTRADA,"
                        sql += " iif(isnull(t.TotEnt), 0, t.TotEnt) as TotalEntradas, iif(isnull(t.TotSai), 0, t.TotSai) as TotalSaidas,"
                        sql += " Tab_Entrada.Total + iif(isnull(t.TotEnt), 0, t.TotEnt) - iif(isnull(t.TotSai), 0, t.TotSai) as Estoque from"
                        sql += " (Select Tab_CadastrarProdutos.CODIGOPRODUTO, Tab_CadastrarProdutos.ENTRADA,"
                        sql += " (select SUM(Tab_Entrada_Historico.Quantidade) from Tab_Entrada_Historico"
                        sql += " WHERE Tab_Entrada_Historico.CodigoProduto = Tab_CadastrarProdutos.CodigoProduto AND"
                        sql += " tab_Entrada_historico.Data >= CDATE('" & MaskedTextBox1.Text & "') AND tab_Entrada_historico.Data <= CDATE('" & MaskedTextBox2.Text & "') ) as TotEnt,"
                        sql += " (select SUM(Tab_Saida.Quantidade) from Tab_Saida"
                        sql += " WHERE Tab_Saida.CodigoProduto = Tab_CadastrarProdutos.CodigoProduto AND"
                        sql += " tab_saida.Data >= CDATE('" & MaskedTextBox1.Text & "') AND tab_saida.Data <= CDATE('" & MaskedTextBox2.Text & "') ) as TotSai"
                        sql += " FROM Tab_CadastrarProdutos) as t"
                        sql += " INNER JOIN Tab_Entrada ON Tab_Entrada.CodigoProduto = t.CodigoProduto"
                        sql += " WHERE t.TotEnt > 0 or t.TotSai > 0"
                        sql += " ORDER BY Tab_CadastrarProdutos.ENTRADA ASC "
    quinta-feira, 30 de agosto de 2018 18:04
  • Dependendo do tipo de erro, a ferramenta de administração do banco de dados pode indicar a linha em que ocorre o erro se a consulta for executada dentro dela. Mas dependendo do caso só suprimindo trechos da consulta mesmo até que o erro não ocorra mais.

    Os nomes das colunas utilizadas no Join com a tabela Tab_Entrada estão corretos? Presumi os nomes, não sei se estão corretos. E o tipo de dados das colunas devem ser compatíveis, nem que seja feita alguma conversão de tipos, que na verdade não é o ideal.


    Assinatura: http://www.imoveisemexposicao.com.br

    • Marcado como Resposta Arlindo António quinta-feira, 30 de agosto de 2018 18:52
    quinta-feira, 30 de agosto de 2018 18:28
  • na minha tabela Entrada o código estava como texto, mudei para numero e resolveu, muito obrigado pela paciencia em me ajudar

    quinta-feira, 30 de agosto de 2018 18:54