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]Passar 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]Passar de SQL p/ VBA Empty Passar de SQL p/ VBA

    Mensagem  Csmelan 29/12/2011, 10:34

    Nesse caso são 3 formulários, form_contrato, form_empenho e form_pagamento, onde cada contrato possui varios empenhos e cada empenho possui varios pagamentos.

    Preciso de um calculo que me de a soma de todos os valores em "pagamentos" referentes aquele "contrato" aberto em questão.

    Essa infomação não será mostrada (a_pagar), será calculada com um campo do form_contrato (txb_vl_atu) e será mostrado o resultado em form_contrato (txb_vl_vlpagar).

    Eu havia feito em VBA só que somente atualizava o calculo se eu entrasse em form_pagamento, a idéia é que ao entrar em form_contrato já moste o resultado.

    Por isso, em form_contrato, fiz uma SQL assim:



    Dim a_pagar As Currency

    If Not IsNull(txb_vl_vlcontratual) Then

    Dim db As Database
    Dim rs As Recordset

    Set db = CurrentDb()
    Set rs = db.OpenRecordset("SELECT Sum(t_pagamento.vl_valor) AS total, t_contrato.pk_id_contrato 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 HAVING (t_contrato.pk_id_contrato Like Forms!f_contrato.txb_pk_id_contrato)")

    a_pagar = rs.Fields("total")
    txb_vl_vlpagar = txb_vl_atu - a_pagar
    Else
    txb_vl_vlpagar = ""
    End If



    O engraçado é que essa SQL funciona direitinho se eu fizer em uma consulta a parte, aqui ela diz ERRO 3061, falta 1 parâmetro.
    Sem o HAVING ela calcula com o valor dos pagamentos do 1º contrato, independente do contrato que eu estou.

    Não sei mais o que mexer, obrigado pela ajuda desde já.
    avatar
    Convidad
    Convidado


    [Resolvido]Passar de SQL p/ VBA Empty Re: [Resolvido]Passar de SQL p/ VBA

    Mensagem  Convidad 30/12/2011, 15:09

    Olá
    Não seria possível obter este valor diretamente na tabela?
    Algo assim:
    DSum("ValorPgto", "TabelaPagamentos", "IDcontrato=" & Forms!form_contrato!IDcontrato")
    Csmelan
    Csmelan
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Passar de SQL p/ VBA Empty Re: [Resolvido]Passar de SQL p/ VBA

    Mensagem  Csmelan 2/1/2012, 15:56

    Não, pois assim ele só carregaria ao entrar no formulario de pagamento, mas ja consegui, fiz dessa forma:


    If Not IsNull(txb_vl_atu) Then

    Dim db As Database
    Dim rs As Recordset

    Set db = CurrentDb()

    Set rs = db.OpenRecordset(Nz("SELECT Sum(t_pagamento.vl_valor) AS total, t_contrato.pk_id_contrato 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 HAVING (((t_contrato.pk_id_contrato) =" & txb_pk_id_contrato & "))"))


    pagar = rs.Fields("total")
    txb_vl_vlpagar = txb_vl_atu - pagar


    Else

    txb_vl_vlpagar = ""

    End If

    Agora o problema é com os nulos, hehehhe
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Passar de SQL p/ VBA Empty Re: [Resolvido]Passar de SQL p/ VBA

    Mensagem  JPaulo 2/1/2012, 15:58

    Trate os nulos com a mesma função, Nz

    txb_vl_vlpagar = Nz(txb_vl_atu,0) - Nz(pagar,0)



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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Passar de SQL p/ VBA Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Passar de SQL p/ VBA Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Passar de SQL p/ VBA Folder_announce_new Instruções SQL como utilizar...
    Csmelan
    Csmelan
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Passar de SQL p/ VBA Empty Re: [Resolvido]Passar de SQL p/ VBA

    Mensagem  Csmelan 2/1/2012, 16:28

    É na linha de cima que dá o erro

    pagar = rs.Fields("total")



    erro em tempo de execução 3021. Não existe registro atual (no caso nao teve pagamentos ainda)

    tentei com o NZ no SQL e nd...
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Passar de SQL p/ VBA Empty Re: [Resolvido]Passar de SQL p/ VBA

    Mensagem  JPaulo 2/1/2012, 16:39

    Então ?

    pagar = Nz(rs.Fields("total"),0)

    Sempre que o Recordset "total" estiver Nulo, devolve um zero.

    Já agora, esse pagar é uma variavel ou campo ?





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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Passar de SQL p/ VBA Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Passar de SQL p/ VBA Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Passar de SQL p/ VBA Folder_announce_new Instruções SQL como utilizar...
    Csmelan
    Csmelan
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Passar de SQL p/ VBA Empty Re: [Resolvido]Passar de SQL p/ VBA

    Mensagem  Csmelan 2/1/2012, 16:50

    Continua dando erro
    dessa vez em tempo de execução -2147352567 (80020009)
    nao existe registro atual.

    Ainda não sei mexer direito com esse negocio de colocar SQL no VBA,me atrapalho toda.

    nao daria p/ colocar um IF aí? O que eu deveria usar na condição??



    E "pagar" é uma variavel, eu a declarei só p/ fazer a conta depois.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Passar de SQL p/ VBA Empty Re: [Resolvido]Passar de SQL p/ VBA

    Mensagem  JPaulo 2/1/2012, 17:13

    Onde está a declaração dessa variavel ?

    Pode colocar aqui todo o trecho do código ?



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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Passar de SQL p/ VBA Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Passar de SQL p/ VBA Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Passar de SQL p/ VBA Folder_announce_new Instruções SQL como utilizar...
    Csmelan
    Csmelan
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Passar de SQL p/ VBA Empty Re: [Resolvido]Passar de SQL p/ VBA

    Mensagem  Csmelan 2/1/2012, 17:17


    Private Sub Form_current()

    Me.Refresh


    Dim som_vl As Variant

    som_vl = Nz(DSum("[vl_vladit]", "t_aditamento", "t_contrato.pk_id_contrato = t_aditamento.fk_id_contrato"))
    txb_vl_atu = txb_vl_vlcontratual + som_vl



    Dim pagar As Currency
    pagar = 0

    If Not IsNull(txb_vl_atu) Then

    Dim db As Database
    Dim rs As Recordset


    Set db = CurrentDb()
    Set rs = db.OpenRecordset(Nz("SELECT Sum(t_pagamento.vl_valor) AS total, t_contrato.pk_id_contrato 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 HAVING (((t_contrato.pk_id_contrato) =" & txb_pk_id_contrato & "))"))


    pagar = Nz(rs.Fields("total"), 0)
    txb_vl_vlpagar = txb_vl_atu - pagar


    Else

    txb_vl_vlpagar = ""

    End If



    Dim som As Variant
    Dim som_pro As Variant
    Dim vig_atu As Variant

    som_pro = Nz(DSum("[nr_prorrogacao]", "t_aditamento", "t_contrato.pk_id_contrato = t_aditamento.fk_id_contrato"))
    som = som_pro
    vig_atu = som + txb_nr_vigencia
    txb_nr_vigatu = vig_atu


    End Sub
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Passar de SQL p/ VBA Empty Re: [Resolvido]Passar de SQL p/ VBA

    Mensagem  JPaulo 2/1/2012, 17:35

    Cristina vai-me desculpar, mas existe aqui muita instrução que não sei não se funciona, só acompanhando pelo VBA fazendo um break algures.

    Você pode disponibilizar o seu banco ou parte dele ?



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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Passar de SQL p/ VBA Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Passar de SQL p/ VBA Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Passar de SQL p/ VBA Folder_announce_new Instruções SQL como utilizar...
    Csmelan
    Csmelan
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Passar de SQL p/ VBA Empty Re: [Resolvido]Passar de SQL p/ VBA

    Mensagem  Csmelan 2/1/2012, 17:42

    Nesse caso, então, dei sorte, porque está tudo funcionando direitinho, deu pau depois que inseri esse SQL aí, e me desculpe você, não posso disponibilzar o banco, sabe como é...

    De qualquer forma, muito obrigada!!
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Passar de SQL p/ VBA Empty Re: [Resolvido]Passar de SQL p/ VBA

    Mensagem  JPaulo 2/1/2012, 17:44

    Está funcionando direitinho ?

    Valew... Laughing


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

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Passar de SQL p/ VBA Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Passar de SQL p/ VBA Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Passar de SQL p/ VBA Folder_announce_new Instruções SQL como utilizar...

    Conteúdo patrocinado


    [Resolvido]Passar de SQL p/ VBA Empty Re: [Resolvido]Passar de SQL p/ VBA

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 16/9/2024, 20:31