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á.
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á.