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


3 participantes

    [Resolvido]Conversão de SQL p/ VBA

    Csmelan
    Csmelan
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 25
    Registrado : 28/12/2011

    [Resolvido]Conversão de SQL p/ VBA Empty [Resolvido]Conversão de SQL p/ VBA

    Mensagem  Csmelan 18/1/2012, 11:09

    Nunca consigo de primeira, é incrivel, não sei exatamente o que devo mexer, trocar, alterar e retirar p/ que rode de boa no VBA.


    Na consulta do Access está assim:

    SELECT Sum(t_pagamento.vl_valor) AS total, t_contrato.pk_id_contrato, t_pagamento.tp_cancelado
    FROM (t_contrato INNER JOIN t_empenho ON t_contrato.pk_id_contrato=t_empenho.fk_id_contrato) INNER JOIN t_pagamento ON t_empenho.pk_id_empenho=t_pagamento.fk_id_empenho
    GROUP BY t_contrato.pk_id_contrato, t_pagamento.tp_cancelado
    HAVING (((t_contrato.pk_id_contrato) Like Forms.f_contrato.txb_pk_id_contrato) And ((t_pagamento.tp_cancelado)=2));
    (roda perfeitamente)


    Passei p/ VBA assim:

    Set rs = db.OpenRecordset("SELECT Sum(Nz(t_pagamento.vl_valor,0)) AS total, t_contrato.pk_id_contrato, t_pagamento.tp_cancelado FROM (t_contrato INNER JOIN t_empenho ON t_contrato.pk_id_contrato = t_empenho.fk_id_contrato) INNER JOIN t_pagamento ON t_empenho.pk_id_empenho = t_pagamento.fk_id_empenho GROUP BY t_contrato.pk_id_contrato, t_pagamento.tp_cancelado HAVING (t_contrato.pk_id_contrato) Like [Forms].[f_contrato].[txb_pk_id_contrato]AND t_pagamento.tp_cancelado=2")

    Da erro de poucos parametros, 1 esperado.



    Sugestões???
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3880
    Registrado : 04/04/2010

    [Resolvido]Conversão de SQL p/ VBA Empty Re: [Resolvido]Conversão de SQL p/ VBA

    Mensagem  Avelino Sampaio 18/1/2012, 13:09

    Olá

    Procure primeiro passar a sql para uma variável para se ter uma organização melhor. Exemplo:

    Código:
    Dim strSql as string
    Dim rs as dao.recordset

    strsql = "SELECT Sum(t_pagamento.vl_valor) AS total, t_contrato.pk_id_contrato, t_pagamento.tp_cancelado "
    strSql = strSql & "FROM (t_contrato INNER JOIN t_empenho ON t_contrato.pk_id_contrato=t_empenho.fk_id_contrato) "
    strSql = strSql & "INNER JOIN t_pagamento ON t_empenho.pk_id_empenho=t_pagamento.fk_id_empenho "
    strSql = strSql & "GROUP BY t_contrato.pk_id_contrato, t_pagamento.tp_cancelado "
    strSql = strSql & "HAVING (((t_contrato.pk_id_contrato) Like Forms.f_contrato.txb_pk_id_contrato) And ((t_pagamento.tp_cancelado)=2));"

    Set rs = db.OpenRecordset(strSql)

    Sucesso!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Csmelan
    Csmelan
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 25
    Registrado : 28/12/2011

    [Resolvido]Conversão de SQL p/ VBA Empty Re: [Resolvido]Conversão de SQL p/ VBA

    Mensagem  Csmelan 18/1/2012, 13:16

    Dessa forma o código fica particionado em 5? Não entendi direito...

    Eu estou declarando em DB:
    Dim db As Database
    Dim rs As Recordset

    Set db = CurrentDb()
    Set rs = db.OpenRecordset("SELECT Sum(Nz(t_pagamento.vl_valor,0)) AS total, t_contrato.pk_id_contrato, t_pagamento.tp_cancelado FROM (t_contrato INNER JOIN t_empenho ON t_contrato.pk_id_contrato = t_empenho.fk_id_contrato) INNER JOIN t_pagamento ON t_empenho.pk_id_empenho = t_pagamento.fk_id_empenho GROUP BY t_contrato.pk_id_contrato, t_pagamento.tp_cancelado HAVING t_contrato.pk_id_contrato = Forms.f_contrato.txb_pk_id_contrato AND t_pagamento.tp_cancelado=2")

    pagar = rs.Fields("total")


    Me explique melhor o funcionamento da coisa, por favor.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3880
    Registrado : 04/04/2010

    [Resolvido]Conversão de SQL p/ VBA Empty Re: [Resolvido]Conversão de SQL p/ VBA

    Mensagem  Avelino Sampaio 18/1/2012, 13:21

    Isso se chama concatenação (junção). Juntamos partes para forma um todo.

    Assista minha vídeo-aula abaixo que vc irá entender bem como isso funciona.

    Aprenda sobre filtragens - vídeo-aula

    Sucesso!


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Csmelan
    Csmelan
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 25
    Registrado : 28/12/2011

    [Resolvido]Conversão de SQL p/ VBA Empty Re: [Resolvido]Conversão de SQL p/ VBA

    Mensagem  Csmelan 18/1/2012, 13:29

    Infelizmente aqui não posso abrir videos.
    Tentei com seu código e deu erro 424, o objeto é obrigatório :/
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3880
    Registrado : 04/04/2010

    [Resolvido]Conversão de SQL p/ VBA Empty Re: [Resolvido]Conversão de SQL p/ VBA

    Mensagem  Avelino Sampaio 18/1/2012, 13:33

    Olá

    No exemplo que forneci não foi passdo todo o código. Vc acrescentou ao código as linhas abaixo ?

    Dim db As dao.Database
    ...
    Set db = CurrentDb()
    ...



    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    Csmelan
    Csmelan
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 25
    Registrado : 28/12/2011

    [Resolvido]Conversão de SQL p/ VBA Empty Re: [Resolvido]Conversão de SQL p/ VBA

    Mensagem  Csmelan 18/1/2012, 13:40

    Não.

    Não sei como fazer a conversão...
    Estou apanhando p/ caramba, ainda não entendi direito o que é o SET e p/ que serve o DAO...

    coloquei um recorcount, por causa dos nulos, mas está difícil, rs
    Csmelan
    Csmelan
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 25
    Registrado : 28/12/2011

    [Resolvido]Conversão de SQL p/ VBA Empty Re: [Resolvido]Conversão de SQL p/ VBA

    Mensagem  Csmelan 18/1/2012, 13:50

    Tentei colocar, veja se está na ordem correta:



    Dim db As Database
    Dim rs As Recordset

    Set db = CurrentDb()

    Dim strSql As String

    strSql = "SELECT Sum(t_pagamento.vl_valor) AS total, t_contrato.pk_id_contrato, t_pagamento.tp_cancelado "
    strSql = strSql & "FROM (t_contrato INNER JOIN t_empenho ON t_contrato.pk_id_contrato=t_empenho.fk_id_contrato) "
    strSql = strSql & "INNER JOIN t_pagamento ON t_empenho.pk_id_empenho=t_pagamento.fk_id_empenho "
    strSql = strSql & "GROUP BY t_contrato.pk_id_contrato, t_pagamento.tp_cancelado "
    strSql = strSql & "HAVING (((t_contrato.pk_id_contrato) Like Forms.f_contrato.txb_pk_id_contrato) And ((t_pagamento.tp_cancelado)=2));"

    Set rs = db.OpenRecordset(strSql)

    If rs.RecordCount > 0 Then
    pagar = rs.Fields("total")
    txb_vl_vlpagar = txb_vl_atu - pagar

    Else

    txb_vl_vlpagar = txb_vl_atu

    End If

    rs.Close

    End If





    Bom, voltou a dar erro do parâmetro
    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]Conversão de SQL p/ VBA Empty Re: [Resolvido]Conversão de SQL p/ VBA

    Mensagem  Alexandre Neves 18/1/2012, 19:24

    Tente assim:

    Dim rs As DAO.Recordset

    Set rs = db.OpenRecordset("SELECT Sum(t_pagamento.vl_valor) AS total, t_contrato.pk_id_contrato, t_pagamento.tp_cancelado
    FROM (t_contrato INNER JOIN t_empenho ON t_contrato.pk_id_contrato=t_empenho.fk_id_contrato) INNER JOIN t_pagamento ON t_empenho.pk_id_empenho=t_pagamento.fk_id_empenho
    GROUP BY t_contrato.pk_id_contrato, t_pagamento.tp_cancelado
    HAVING t_contrato.pk_id_contrato Like " & Forms.f_contrato.txb_pk_id_contrato & " And t_pagamento.tp_cancelado)=2;")

    If rs.RecordCount > 0 Then
    pagar = rs.Fields("total")
    txb_vl_vlpagar = txb_vl_atu - pagar
    Else
    txb_vl_vlpagar = txb_vl_atu
    End If

    set rs =nothing
    Csmelan
    Csmelan
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 25
    Registrado : 28/12/2011

    [Resolvido]Conversão de SQL p/ VBA Empty Re: [Resolvido]Conversão de SQL p/ VBA

    Mensagem  Csmelan 19/1/2012, 10:35

    Ae Alexandre arrazou hein, obrigada.
    Mas ainda não entendi o funcionamento da coisa :/ rs

    Conteúdo patrocinado


    [Resolvido]Conversão de SQL p/ VBA Empty Re: [Resolvido]Conversão de SQL p/ VBA

    Mensagem  Conteúdo patrocinado


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