pes_piloto 22/7/2023, 16:23
Achei uma solução, não sei se é a melhor.
Ao invés de fazer a soma no controle do subformulário, fiz a soma no procedimento CURRENT do FORM. Não acho que seja o ideal porque o subformulario já estava traz os dados do "numcotacao" e no procedimento abaixo eu percorro toda a tabela "cotacao compra" para fazer a soma. Aceito sugestões.
Private Sub Form_Current()
Dim DB As dao.Database
Dim RSme As dao.Recordset
Dim BuscaME As String
Dim MEcot(3) As String
Dim i, j As Integer
On Error GoTo info
i = 0
BuscaME = "SELECT [Cotacao Compra].NumCotacao, [Cotacao Compra].ME " & _
"FROM [Cotacao Compra] " & _
"GROUP BY [Cotacao Compra].ME, [Cotacao Compra].Numcotacao " & _
"HAVING [Cotacao Compra].numcotacao='" & Me.NumCotacao & "'"
Set DB = CurrentDb()
Set RSme = DB.OpenRecordset(BuscaME)
RSme.FindFirst "[numcotacao]='" & Me.NumCotacao & "'"
Do While Not RSme.NoMatch
MEcot(i) = RSme!ME
RSme.FindNext "[numcotacao]='" & Me.NumCotacao & "'"
i = i + 1
Loop
For j = 0 To i - 1
If j = 0 Then Me.rotme1 = MEcot(0)
If j = 1 Then Me.rotme2 = MEcot(1)
If j = 2 Then Me.rotme3 = MEcot(2)
Next
Me.txtCompFme1 = DSum("[totalc]", "cotacao compra", "[me]='" & Me.rotme1 & "' AND [cpo_localitem] ='F' AND [numcotacao]='" & Me.NumCotacao & "'")
Me.txtCompFme2 = DSum("[totalc]", "cotacao compra", "[me]='" & Me.rotme2 & "' AND [cpo_localitem] ='F' AND [numcotacao]='" & Me.NumCotacao & "'")
Me.txtCompFme3 = DSum("[totalc]", "cotacao compra", "[me]='" & Me.rotme3 & "' AND [cpo_localitem] ='F' AND [numcotacao]='" & Me.NumCotacao & "'")
Me.txtCompOme1 = DSum("[totalc]", "cotacao compra", "[me]='" & Me.rotme1 & "' AND [cpo_localitem] ='O' AND [numcotacao]='" & Me.NumCotacao & "'")
Me.txtCompOme2 = DSum("[totalc]", "cotacao compra", "[me]='" & Me.rotme2 & "' AND [cpo_localitem] ='O' AND [numcotacao]='" & Me.NumCotacao & "'")
Me.txtCompOme3 = DSum("[totalc]", "cotacao compra", "[me]='" & Me.rotme3 & "' AND [cpo_localitem] ='O' AND [numcotacao]='" & Me.NumCotacao & "'")
Me.txtCompDme1 = DSum("[totalc]", "cotacao compra", "[me]='" & Me.rotme1 & "' AND [cpo_localitem] ='D' AND [numcotacao]='" & Me.NumCotacao & "'")
Me.txtCompDme2 = DSum("[totalc]", "cotacao compra", "[me]='" & Me.rotme2 & "' AND [cpo_localitem] ='D' AND [numcotacao]='" & Me.NumCotacao & "'")
Me.txtCompDme3 = DSum("[totalc]", "cotacao compra", "[me]='" & Me.rotme3 & "' AND [cpo_localitem] ='D' AND [numcotacao]='" & Me.NumCotacao & "'")
Me.txtCompPme1 = DSum("[totalc]", "cotacao compra", "[me]='" & Me.rotme1 & "' AND [cpo_localitem] ='P' AND [numcotacao]='" & Me.NumCotacao & "'")
Me.txtCompPme2 = DSum("[totalc]", "cotacao compra", "[me]='" & Me.rotme2 & "' AND [cpo_localitem] ='P' AND [numcotacao]='" & Me.NumCotacao & "'")
Me.txtCompPme3 = DSum("[totalc]", "cotacao compra", "[me]='" & Me.rotme3 & "' AND [cpo_localitem] ='P' AND [numcotacao]='" & Me.NumCotacao & "'")
Set DB = Nothing
Set RSme = Nothing
Exit Sub
info:
MsgBox Err.Number & Chr(13) & Err.Description
End Sub