MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Consulta LEFT JOIN por VBA.

    Compartilhe
    avatar
    XPTOS
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 509
    Registrado : 20/01/2014

    [Resolvido]Consulta LEFT JOIN por VBA.

    Mensagem  XPTOS em Sex 18 Mar 2016, 14:15

    Prezados, bom dia,

    Criei a consulta abaixo pelo assistente do access e chamo ele por DoCmd.OpenQuery "QueryComparativoDetalhe", no entanto, ao tentar adaptar para executar por VBA, não consigo prosseguir pelo fato de estar ligada a duas tabelas ligadas por FROM EnviadoConf LEFT JOIN Comparativo ON (EnviadoConf.CódGuia = Comparativo.CódGuia) AND (EnviadoConf.CódServiço = Comparativo.CódServiço).

    Código completo:
    INSERT INTO ComparativoDetalhe ( NomeUsuário, CódUsuário, CódGuia, DtAtendimento, DtAlta, CódServiço, NomeServiço, SomaDeQuantidadeServiço, Referencia, SomaDeValorPago, QtRecebido, valorUnitario, valorTotalRecebido, Saldo, Fechamento, Nota, MarcaRecurso, Convenio )
    SELECT EnviadoConf.NomeUsuário, EnviadoConf.CódUsuário, EnviadoConf.CódGuia, EnviadoConf.DtAtendimento, EnviadoConf.DtAlta, EnviadoConf.CódServiço, EnviadoConf.NomeServiço, Sum(EnviadoConf.QuantidadeServiço) AS SomaDeQuantidadeServiço, EnviadoConf.Referencia, Sum(EnviadoConf.ValorPago) AS SomaDeValorPago, Nz([QtdRecebido],0) AS QtRecebido, Comparativo.valorUnitario, Comparativo.valorTotalRecebido, Nz([valorTotalRecebido])-Nz([somadevalorPago]) AS Saldo, EnviadoConf.Fechamento, EnviadoConf.Nota, EnviadoConf.MarcaRecurso, EnviadoConf.Convenio
    FROM EnviadoConf LEFT JOIN Comparativo ON (EnviadoConf.CódGuia = Comparativo.CódGuia) AND (EnviadoConf.CódServiço = Comparativo.CódServiço)
    GROUP BY EnviadoConf.NomeUsuário, EnviadoConf.CódUsuário, EnviadoConf.CódGuia, EnviadoConf.DtAtendimento, EnviadoConf.DtAlta, EnviadoConf.CódServiço, EnviadoConf.NomeServiço, EnviadoConf.Referencia, Nz([QtdRecebido],0), Comparativo.valorUnitario, Comparativo.valorTotalRecebido, EnviadoConf.Fechamento, EnviadoConf.Nota, EnviadoConf.MarcaRecurso, EnviadoConf.Convenio
    HAVING (((EnviadoConf.CódGuia)='" & Me.lstXML.Column(0, i) & "') AND ((EnviadoConf.Convenio)=[Forms]![logon]![cboConvenio]));


    Se os amigos puder me da uma dica para tratar esta ocorrência eu agradeço.
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9255
    Registrado : 04/11/2009

    Re: [Resolvido]Consulta LEFT JOIN por VBA.

    Mensagem  JPaulo em Sex 18 Mar 2016, 15:22

    Código:
    Dim strSql$
    strSql = "INSERT INTO ComparativoDetalhe ( NomeUsuário, CódUsuário, CódGuia, DtAtendimento, DtAlta, CódServiço, NomeServiço, SomaDeQuantidadeServiço, Referencia, SomaDeValorPago, QtRecebido, valorUnitario, valorTotalRecebido, Saldo, Fechamento, Nota, MarcaRecurso, Convenio )"
    strSql = strSql & " SELECT EnviadoConf.NomeUsuário, EnviadoConf.CódUsuário, EnviadoConf.CódGuia, EnviadoConf.DtAtendimento, EnviadoConf.DtAlta, EnviadoConf.CódServiço, EnviadoConf.NomeServiço, Sum(EnviadoConf.QuantidadeServiço) AS SomaDeQuantidadeServiço, EnviadoConf.Referencia,"
    strSql = strSql & " Sum(EnviadoConf.ValorPago) AS SomaDeValorPago, Nz([QtdRecebido],0) AS QtRecebido, Comparativo.valorUnitario, Comparativo.valorTotalRecebido, Nz([valorTotalRecebido])-Nz([somadevalorPago]) AS Saldo, EnviadoConf.Fechamento, EnviadoConf.Nota, EnviadoConf.MarcaRecurso,"
    strSql = strSql & " EnviadoConf.Convenio"
    strSql = strSql & " FROM EnviadoConf"
    strSql = strSql & " LEFT JOIN Comparativo"
    strSql = strSql & " ON (EnviadoConf.CódGuia = Comparativo.CódGuia) AND (EnviadoConf.CódServiço = Comparativo.CódServiço)"
    strSql = strSql & " GROUP BY EnviadoConf.NomeUsuário, EnviadoConf.CódUsuário, EnviadoConf.CódGuia, EnviadoConf.DtAtendimento, EnviadoConf.DtAlta, EnviadoConf.CódServiço, EnviadoConf.NomeServiço, EnviadoConf.Referencia, Nz([QtdRecebido],0), Comparativo.valorUnitario,"
    strSql = strSql & " Comparativo.valorTotalRecebido, EnviadoConf.Fechamento, EnviadoConf.Nota, EnviadoConf.MarcaRecurso, EnviadoConf.Convenio"
    strSql = strSql & " HAVING (((EnviadoConf.CódGuia)='" & Me.lstXML.Column(0, i) & "') AND ((EnviadoConf.Convenio)='" & [Forms]![logon]![cboConvenio] & "'));"
    DoCmd.RunSQL (strSql)


    .................................................................................
    Contribua com o maximoaccess, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    avatar
    XPTOS
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 509
    Registrado : 20/01/2014

    Re: [Resolvido]Consulta LEFT JOIN por VBA.

    Mensagem  XPTOS em Sex 18 Mar 2016, 16:10

    Mestre,

    Muito obrigado pela ajuda.

    Problema solucionado!

    Obs: O que significa/para que serve o ($) no select que declarou na variável Dim strSql$?
    avatar
    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 9255
    Registrado : 04/11/2009

    Re: [Resolvido]Consulta LEFT JOIN por VBA.

    Mensagem  JPaulo em Sex 18 Mar 2016, 16:16

    Em vez de escrever "Dim x As String", reduz os caracteres no VBA e escreve apenas "Dim x$", o simbolo dólar diz que é string (texto).

    Em vez de escrever "Dim x As Integer", reduz os caracteres no VBA e escreve apenas "Dim x%", o simbolo porcentagem diz que é number (numero).

    Obrigado pelo retorno o forum agradece.



    .................................................................................
    Contribua com o maximoaccess, ajude a melhorar este que é o seu site na NET.

    [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

      Data/hora atual: Sex 23 Jun 2017, 21:34