MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    [Resolvido]Soma de campo em consulta obedecendo diversos critérios na tabela.

    avatar
    Convidado
    Convidado


    [Resolvido]Soma de campo em consulta obedecendo diversos critérios na tabela. Empty Soma de campo em consulta obedecendo diversos critérios na tabela.

    Mensagem  Convidado 23/7/2012, 16:20

    Bem amigos, infelizmente estou apanhando nesta bendita.... rs

    tenho uma consulta ja filtrada por dois tres campos:

    VendaData = Date()
    cpturno = Manhã
    cpUsuario = Admin

    Preciso em alguns campos não acoplados na mesma a soma do:

    Campo SubTotal na tabela VendasFinal obedecendo aos seguintes critérios:

    Primeiro Campo não acoplado: SomaVista

    VendaData = Date()
    cpturno = Manhã
    cpUsuario = Admin
    cpTipoVenda = Vista

    Segundo Campo não acoplado: SomaTicket

    VendaData = Date()
    cpturno = Manhã
    cpUsuario = Admin
    cpTipoVenda = Ticket

    Terceiro Campo não acoplado: SomaCartão

    VendaData = Date()
    cpturno = Manhã
    cpUsuario = Admin
    cpTipoVenda = Cartão


    O Quarto Campo não acoplado: SomaFracionada
    Neste a soma não será do subTotal e sim do cpValorDin
    VendaData = Date()
    cpturno = Manhã
    cpUsuario = Admin
    cpTipoVenda = Fracionada
    TipoFração = Ticket

    O Quinto Campo não acoplado: SomaFracionada
    Neste a soma não será do subTotal e sim do cpValorDin
    VendaData = Date()
    cpturno = Manhã
    cpUsuario = Admin
    cpTipoVenda = Fracionada
    TipoFração = Cartão


    Se puderem me ajudar, fico imensamente grato.

    BD
    https://dl.dropbox.com/u/26441349/SysPDV_be.rar


    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Soma de campo em consulta obedecendo diversos critérios na tabela. Empty Re: [Resolvido]Soma de campo em consulta obedecendo diversos critérios na tabela.

    Mensagem  Convidado 23/7/2012, 16:49

    Resolvido por enquanto para os campos:


    Primeiro Campo não acoplado: SomaVista

    VendaData = Date()
    cpturno = Manhã
    cpUsuario = Admin
    cpTipoVenda = Vista


    TotalVendaVista: Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Vista'");0)


    Segundo Campo não acoplado: SomaTicket
    VendaData = Date()
    cpturno = Manhã
    cpUsuario = Admin
    cpTipoVenda = Ticket


    TotalVendaTicket: Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Ticket'");0)


    Terceiro Campo não acoplado: SomaCartão
    VendaData = Date()
    cpturno = Manhã
    cpUsuario = Admin
    cpTipoVenda = Cartão

    TotalVendaCartao: Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Cartão'");0)
    avatar
    Convidado
    Convidado


    [Resolvido]Soma de campo em consulta obedecendo diversos critérios na tabela. Empty Re: [Resolvido]Soma de campo em consulta obedecendo diversos critérios na tabela.

    Mensagem  Convidado 23/7/2012, 17:27

    Bem amigos, a lógica disso tudo é a seguinte:

    Neste sistema de PDV que estou a concluir, o cliente exigiu algumas formas de pagamento, quais seriam:

    vista
    Cartão
    Ticket
    Fracionada >>>>> Esta com parte do pagamento em dinheiro e a outra em Cartão ou ticket.


    Sendo assim ele quer no relatório a soma de cada tipo de pagamento efetuado...

    Vista + Vista da venda fracionada
    Cartão + Cartão da venda fracionada
    Ticket + Ticket da venda fracionada


    no post anterior, resolvi para os campos cuja informações estão bem definidas na tabela
    >>>> Vista, Cartão e ticket.

    O maior problema era separar as informações para a venda fracionada, posto que no cpValorDin está o valor total da venda, e posto que a venda é por item estava a somar o mesmo valor mais de uma vez.


    Então para isto tive que criar uma consulta agrupada por venda, (Venda Número), então baseado nesta consulta o campo não apoplado para os calculos dessa fração.


    SQL da consulta base:
    SELECT tblVendasFinal.VendaNumero, tblVendasFinal.VendaData, tblVendasFinal.cpTurno, tblVendasFinal.cpIdUser, tblVendasFinal.cpUsuario, tblVendasFinal.cpTipoVenda, tblVendasFinal.TipoFracao, tblVendasFinal.cpVendaFracionada, tblVendasFinal.cpValorDin
    FROM tblProdutos INNER JOIN tblVendasFinal ON tblProdutos.CodigoBarras = tblVendasFinal.CodigoBarras
    GROUP BY tblVendasFinal.VendaNumero, tblVendasFinal.VendaData, tblVendasFinal.cpTurno, tblVendasFinal.cpIdUser, tblVendasFinal.cpUsuario, tblVendasFinal.cpTipoVenda, tblVendasFinal.TipoFracao, tblVendasFinal.cpVendaFracionada, tblVendasFinal.cpValorDin
    HAVING (((tblVendasFinal.VendaData)=Date()) AND ((tblVendasFinal.cpTurno)="Manhã") AND ((tblVendasFinal.cpUsuario)="Admin"));




    SQL da consulta final com os campos não acoplados
    SELECT tblVendasFinal.VendaNumero, tblVendasFinal.VendaData, tblVendasFinal.cpTurno, tblVendasFinal.cpIdUser, tblVendasFinal.cpUsuario, tblVendasFinal.cpTipoVenda, tblVendasFinal.TipoFracao, tblVendasFinal.cpVendaFracionada, tblVendasFinal.cpValorDin, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Vista'"),0) AS TotalVendaVista, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Ticket'"),0) AS TotalVendaTicket, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Cartão'"),0) AS TotalVendaCartao, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0) AS TotalVendaFracionada, Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0) AS TotalVendaFracionadaVista, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)+Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Cartão'"),0)-Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0) AS TotalVendaFracionada_Din_Cartão, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)+Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Ticket'"),0)-Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0) AS TotalVendaFracionada_Din_Ticket, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado' And TipoFracao='Ticket'"),0)-(Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)+Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Ticket'"),0)-Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)) AS Valor_Fracionada_Ticket, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado' And TipoFracao='Cartão'"),0)-(Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)+Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Cartão'"),0)-Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)) AS Valor_Fracionada_Cartao
    FROM tblProdutos INNER JOIN tblVendasFinal ON tblProdutos.CodigoBarras = tblVendasFinal.CodigoBarras
    GROUP BY tblVendasFinal.VendaNumero, tblVendasFinal.VendaData, tblVendasFinal.cpTurno, tblVendasFinal.cpIdUser, tblVendasFinal.cpUsuario, tblVendasFinal.cpTipoVenda, tblVendasFinal.TipoFracao, tblVendasFinal.cpVendaFracionada, tblVendasFinal.cpValorDin, Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Vista'"),0), Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Ticket'"),0), Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Cartão'"),0), Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0), Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0), Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)+Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Cartão'"),0)-Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0), Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)+Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Ticket'"),0)-Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0), Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado' And TipoFracao='Ticket'"),0)-(Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)+Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Ticket'"),0)-Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)), Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado' And TipoFracao='Cartão'"),0)-(Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0)+Nz(DSum("CpValorDin","ConsultaBaseVendas","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Cartão'"),0)-Nz(DSum("SubTotal","tblVendasFinal","VendaData =#" & Date() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'"),0))
    HAVING (((tblVendasFinal.VendaData)=Date()) AND ((tblVendasFinal.cpTurno)="Manhã") AND ((tblVendasFinal.cpUsuario)="Admin") AND ((tblVendasFinal.cpTipoVenda)="Fracionado"));


    Os campos não acoplados para o tipo fracionado:

    TotalVendaFracionadaVista: Nz(DSoma("CpValorDin";"ConsultaBaseVendas";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'");0)

    TotalVendaFracionada: Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'");0)

    Valor_Fracionada_Cartao: Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado' And TipoFracao='Cartão'");0)-(Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'");0)+Nz(DSoma("CpValorDin";"ConsultaBaseVendas";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Cartão'");0)-Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'");0))

    Valor_Fracionada_Ticket: Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado' And TipoFracao='Ticket'");0)-(Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'");0)+Nz(DSoma("CpValorDin";"ConsultaBaseVendas";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'AND TipoFracao='Ticket'");0)-Nz(DSoma("SubTotal";"tblVendasFinal";"VendaData =#" & Data() & "# AND cpUsuario='Admin'AND cpTurno='Manhã' AND cpTipoVenda='Fracionado'");0))


    Bem... um pouco confuso... mas é isso...

    O BD com as consultas, espero que seja útil de alguma forma para vosso aprendizado.

    https://dl.dropbox.com/u/26441349/SysPDV_be_1.rar

    Abraços.


    Última edição por PILOTO em 23/7/2012, 18:31, editado 2 vez(es) (Motivo da edição : Acrecentar o link do BD atualizado)

    Conteúdo patrocinado


    [Resolvido]Soma de campo em consulta obedecendo diversos critérios na tabela. Empty Re: [Resolvido]Soma de campo em consulta obedecendo diversos critérios na tabela.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 26/4/2024, 19:40