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


2 participantes

    [Resolvido]Converter consulta access para sql

    linx1010
    linx1010
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 105
    Registrado : 03/10/2011

    [Resolvido]Converter consulta access para sql Empty Converter consulta access para sql

    Mensagem  linx1010 Ter 03 Abr 2012, 10:58

    Pessoal to com o seguinte problema.
    Eu preciso passar uma consulta feita no access para o SQL, eu fiz um trabalho gigante nela em access e agora por conhecer pouco de SQL nao estou conseguindo gerar todos os criterios em SQL.
    A consulta em access é a seguinte:

    SELECT Usuarios.CodUsu AS CodUsuF, Usuarios.LoginUsu AS VendedorF, Day([dataPed]) AS Dia, CDate(Day([datasts]) & "/" & Format(Month([datasts]))) AS PeriodoF, Sum((([ScrProdutos]+[scrPrazo]+[ScrFrete])*([totprod]+[valipi])))/Sum([totprod]+[valipi]) AS MargemF, (([MargemF]*[TotF])/[TotF])/0.004-25 AS Pontos, Sum((Pedidos.TotProd+Pedidos.ValIpi)) AS TotF, funcionarios.foto
    FROM ((((Clientes INNER JOIN Pedidos ON Clientes.codcli = Pedidos.CodCli) INNER JOIN Operacoes ON Pedidos.CodOp = Operacoes.codop) INNER JOIN ConsultasPedidosConfirmacao ON Pedidos.NumPed = ConsultasPedidosConfirmacao.NumPed) INNER JOIN (usupainel INNER JOIN funcionarios ON usupainel.codfunc = funcionarios.codfunc) ON Clientes.vendedor = usupainel.codUsu) INNER JOIN Usuarios ON usupainel.codUsu = Usuarios.CodUsu
    WHERE (((Usuarios.Inativo)=False) AND (Not (Pedidos.ScrProdutos) Is Null) AND ((ConsultasPedidosConfirmacao.DataPed)>=CDate("01/" & Month(Date()) & "/" & Year(Date()))) AND ((Pedidos.Codsts)>11 And (Pedidos.Codsts)<66) AND ((Operacoes.operacao) Like "*venda*"))
    GROUP BY Usuarios.CodUsu, Usuarios.LoginUsu, Day([dataPed]), CDate(Day([datasts]) & "/" & Format(Month([datasts]))), funcionarios.foto
    ORDER BY Usuarios.LoginUsu;

    Meu problema maior está em montar a data do campo datasts "CDate(Day([datasts]) & "/" & Format(Month([datasts]))) AS PeriodoF", nao acho em lugar nenhum como montar isto na consulta em SQL.

    Me ajudem por favor mestres.


    .................................................................................
    Leio playboy pelo mesmo motivo que assisto national geographic, para poder ver lugares que sei que nunca irei visitar.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Converter consulta access para sql Empty Re: [Resolvido]Converter consulta access para sql

    Mensagem  Alexandre Neves Ter 03 Abr 2012, 15:32

    Em vez de
    CDate(Day([datasts]) & "/" & Format(Month([datasts]))) AS PeriodoF
    Utilize
    Format(datasts,'dd/mm') AS PeriodoF

    Veja se funciona assim
    SELECT CodUsu AS CodUsuF, LoginUsu AS VendedorF, Day(dataPed) AS Dia, Format(datasts,'dd-mm') AS PeriodoF, Sum(ScrProdutos+scrPrazo+ScrFrete)*(totprod+valipi)/Sum(totprod+valipi) AS MargemF, ((MargemF*TotF)/TotF)/0.004-25 AS Pontos, Sum(TotProd+ValIpi) AS TotF, foto
    FROM ((((Clientes INNER JOIN Pedidos ON Clientes.codcli = Pedidos.CodCli) INNER JOIN Operacoes ON Pedidos.CodOp = Operacoes.codop) INNER JOIN ConsultasPedidosConfirmacao ON Pedidos.NumPed = ConsultasPedidosConfirmacao.NumPed) INNER JOIN (usupainel INNER JOIN funcionarios ON usupainel.codfunc = funcionarios.codfunc) ON Clientes.vendedor = usupainel.codUsu) INNER JOIN Usuarios ON usupainel.codUsu = Usuarios.CodUsu
    WHERE Usuarios.Inativo=False AND Not IsNull(ScrProdutos) AND DataPed>=DateSerial(Year(Date(),Month(Date(),1) AND Codsts>11 And Codsts<66 AND operacao Like "*venda*" GROUP BY CodUsu, LoginUsu, Day(dataPed), Format(datasts,'dd-mm'), foto
    ORDER BY LoginUsu;
    linx1010
    linx1010
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 105
    Registrado : 03/10/2011

    [Resolvido]Converter consulta access para sql Empty Re: [Resolvido]Converter consulta access para sql

    Mensagem  linx1010 Ter 03 Abr 2012, 15:56

    Entao amigo nao funcionou eu meio que resolvi o problema transformando em string com o "CONVERT(VARCHAR(12),datasts,103) as PeriodoF" mas agora preciso filtrar os que são do mes corrente. agora tenho que converter novamente em data a consulta ta demorando horrores.
    Tem alguma ideia de como exibir apenas os dias se as horas, ou simpesmente zerrar as horas, pois preciso agrupar e se há apenas 1 segundo de diferença ja da erro

    Obrigado pela atenção dispensada


    .................................................................................
    Leio playboy pelo mesmo motivo que assisto national geographic, para poder ver lugares que sei que nunca irei visitar.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Converter consulta access para sql Empty Re: [Resolvido]Converter consulta access para sql

    Mensagem  Alexandre Neves Ter 03 Abr 2012, 16:34

    Do que precisa?
    linx1010
    linx1010
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 105
    Registrado : 03/10/2011

    [Resolvido]Converter consulta access para sql Empty Re: [Resolvido]Converter consulta access para sql

    Mensagem  linx1010 Ter 03 Abr 2012, 18:01

    Então... eu consegui criar a consulta mas o meu problema atual é o seguinte. preciso que ela retorne apenas as vendas realizadas este mes, fiz varias conversoes até conseguir tornar o campo em data novamente sem a hora, mas quando tento filtrar por data ele nao tras o que efetuado hoje.
    A consulta ficou assim, (espero que entendam pois eu só entendo com o designer):

    SELECT TOP (100) PERCENT USUARIOS_1.CodUsu AS CodUsuF, USUARIOS_1.LoginUsu AS VendedorF, pedidos2.PeriodoF,
    SUM(PEDIDOS_1.TotProd + PEDIDOS_1.ValIpi) AS TotF, dbo.funcionarios.foto, ConsultasPedidos.DataPed
    FROM LS_SYSCONF...USUARIOS AS USUARIOS_1 INNER JOIN
    lfx.usupainel ON USUARIOS_1.CodUsu = lfx.usupainel.codUsu INNER JOIN
    dbo.funcionarios ON lfx.usupainel.codfunc = dbo.funcionarios.codfunc INNER JOIN
    LS_VENDAS...CLIENTES AS CLIENTES_1 ON lfx.usupainel.codUsu = CLIENTES_1.Vendedor INNER JOIN
    LS_PEDIDOS...PEDIDOS AS PEDIDOS_1 ON CLIENTES_1.CodCli = PEDIDOS_1.CodCli INNER JOIN
    dbo.operacoes ON PEDIDOS_1.CodOp = dbo.operacoes.CodOp INNER JOIN
    (SELECT NumPed, CONVERT(VARCHAR(12), datasts, 103) AS PeriodoF
    FROM LS_PEDIDOS...pedidos AS pedidos_2) AS pedidos2 ON PEDIDOS_1.NumPed = pedidos2.NumPed INNER JOIN
    (SELECT NumPed, CONVERT(datetime, DataPed, 103) AS DataPed
    FROM web.ConsultasPedidosConfirmacao AS ConsultasPedidosConfirmacao_1) AS ConsultasPedidos ON
    PEDIDOS_1.NumPed = ConsultasPedidos.NumPed INNER JOIN
    (SELECT CONVERT(datetime, CONVERT(VARCHAR, GETDATE() - DAY(GETDATE()) + 1, 103), 103) AS PrimeiroDiaDoMes) AS mes ON
    ConsultasPedidos.DataPed >= mes.PrimeiroDiaDoMes
    WHERE (dbo.funcionarios.inativo = 0) AND (NOT (PEDIDOS_1.ScrProdutos IS NULL)) AND (PEDIDOS_1.Codsts > 11) AND (PEDIDOS_1.Codsts < 66) AND
    (dbo.operacoes.Operacao LIKE N'%venda%')
    GROUP BY USUARIOS_1.CodUsu, USUARIOS_1.LoginUsu, dbo.funcionarios.foto, pedidos2.PeriodoF, ConsultasPedidos.DataPed


    .................................................................................
    Leio playboy pelo mesmo motivo que assisto national geographic, para poder ver lugares que sei que nunca irei visitar.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Converter consulta access para sql Empty Re: [Resolvido]Converter consulta access para sql

    Mensagem  Alexandre Neves Ter 03 Abr 2012, 18:14

    Parece-me que lhe lhe faltam parêntisis.
    Tente assim:
    SELECT TOP (100) PERCENT USUARIOS_1.CodUsu AS CodUsuF, USUARIOS_1.LoginUsu AS VendedorF, pedidos2.PeriodoF,
    SUM(PEDIDOS_1.TotProd + PEDIDOS_1.ValIpi) AS TotF, dbo.funcionarios.foto, ConsultasPedidos.DataPed
    FROM LS_SYSCONF...USUARIOS AS USUARIOS_1 INNER JOIN
    lfx.usupainel ON USUARIOS_1.CodUsu = lfx.usupainel.codUsu INNER JOIN
    dbo.funcionarios ON lfx.usupainel.codfunc = dbo.funcionarios.codfunc INNER JOIN
    LS_VENDAS...CLIENTES AS CLIENTES_1 ON lfx.usupainel.codUsu = CLIENTES_1.Vendedor INNER JOIN
    LS_PEDIDOS...PEDIDOS AS PEDIDOS_1 ON CLIENTES_1.CodCli = PEDIDOS_1.CodCli INNER JOIN
    dbo.operacoes ON PEDIDOS_1.CodOp = dbo.operacoes.CodOp INNER JOIN
    (SELECT NumPed, CONVERT(VARCHAR(12), datasts, 103) AS PeriodoF
    FROM LS_PEDIDOS...pedidos AS pedidos_2) AS pedidos2 ON PEDIDOS_1.NumPed = pedidos2.NumPed INNER JOIN
    (SELECT NumPed, CONVERT(datetime, DataPed, 103) AS DataPed
    FROM web.ConsultasPedidosConfirmacao AS ConsultasPedidosConfirmacao_1) AS ConsultasPedidos ON
    PEDIDOS_1.NumPed = ConsultasPedidos.NumPed INNER JOIN
    (SELECT CONVERT(datetime, CONVERT(VARCHAR, GETDATE() - DAY(GETDATE()) + 1, 103), 103) AS PrimeiroDiaDoMes) AS mes ON
    ConsultasPedidos.DataPed >= mes.PrimeiroDiaDoMes
    WHERE (dbo.funcionarios.inativo = 0) AND (NOT (PEDIDOS_1.ScrProdutos IS NULL)) AND (PEDIDOS_1.Codsts > 11) AND (PEDIDOS_1.Codsts < 66) AND
    (dbo.operacoes.Operacao LIKE N'%venda%') WHERE Format(ConsultasPedidos.DataPed,'mm-yyyy')=Format(Date,'mm-yyyy')
    GROUP BY USUARIOS_1.CodUsu, USUARIOS_1.LoginUsu, dbo.funcionarios.foto, pedidos2.PeriodoF, ConsultasPedidos.DataPed
    linx1010
    linx1010
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 105
    Registrado : 03/10/2011

    [Resolvido]Converter consulta access para sql Empty Re: [Resolvido]Converter consulta access para sql

    Mensagem  linx1010 Qua 04 Abr 2012, 15:39

    Muito obrigado Alexandre, mas o format nao executa no sql infelismente como no where que voce me mostrou "WHERE Format(ConsultasPedidos.DataPed,'mm-yyyy')=Format(Date,'mm-yyyy')", tem algum outro comando que resolva isto?, estou tentando com o convert(datetime,[campo],103)


    .................................................................................
    Leio playboy pelo mesmo motivo que assisto national geographic, para poder ver lugares que sei que nunca irei visitar.
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Converter consulta access para sql Empty Re: [Resolvido]Converter consulta access para sql

    Mensagem  Alexandre Neves Qua 04 Abr 2012, 16:10

    Se ConsultasPedidos.DataPed for tipo data, a comparação funcionará
    linx1010
    linx1010
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 105
    Registrado : 03/10/2011

    [Resolvido]Converter consulta access para sql Empty Re: [Resolvido]Converter consulta access para sql

    Mensagem  linx1010 Seg 16 Jul 2012, 16:56

    Desculpe a demora achei a solução
    a consulta pode retornar datahora com a função convert do SQL
    CONVERT(datetime, CONVERT(nvarchar(12), GETDATE() - DAY(GETDATE()) + 1, 103), 103) AS primeirodia


    .................................................................................
    Leio playboy pelo mesmo motivo que assisto national geographic, para poder ver lugares que sei que nunca irei visitar.

    Conteúdo patrocinado


    [Resolvido]Converter consulta access para sql Empty Re: [Resolvido]Converter consulta access para sql

    Mensagem  Conteúdo patrocinado


      Data/hora atual: Sex 10 maio 2024, 08:57