Preciso de estudar um exemplo de uma Ficha de um produto, composto por vários produtos.
Obrigado
Private Sub Prod_PUnit_AfterUpdate()
'// Variáveis
Dim strAtualiza As String
Dim rs, rsSoma As DAO.Recordset
'// Popula a variável
strAtualiza = "UPDATE dbProduto_Composicao SET Prod_PUnit = " & Me.Prod_PUnit.Value & _
" WHERE sysId_Prod_Comp=" & Me.sysId.Value & ";"
'// Tratamento de erros
On Error GoTo sair3021
'// Desativa os alertas do sistema
DoCmd.SetWarnings (False)
'// Ativa a ampulheta do mouse
DoCmd.Hourglass (True)
'// Executa a consulta para atualizar valores da tabela: dbProduto_Composicao
CurrentDb.Execute strAtualiza
'// Abre o recodset da tabela dbProduto
Set rs = CurrentDb.OpenRecordset("SELECT * from dbProduto")
'// Loop para atuallizar os preços
Do Until rs.EOF
Dim numId As Integer '................ Variável
numId = rs![sysId] '.................. Popula a variável
'// Atualiza o valor do produto
Set rsSoma = CurrentDb.OpenRecordset("SELECT sysId_Prod, Sum(Prod_PUnit) AS J FROM dbProduto_Composicao GROUP BY sysId_Prod HAVING sysId_Prod=" & numId & ";")
rs.Edit '......................... Modo de edição
rs![Prod_PUnit] = rsSoma![J] '.... Atuliza o campo PUNIT pela soma dos produtos obtidos na consulta, no campo J
rs.Update '....................... Grava a modificação feira no registro
rs.MoveNext '..................... Move para o próximo registro
'// Fecha o recordset e limpa a memória
Set rsSoma = Nothing: Close
Loop
'// Fecha o recordset e limpa a memória
Set rs = Nothing: Close
'// Ativa os alertas do sistema
DoCmd.SetWarnings (True)
'// Desativa a ampulheta do mouse
DoCmd.Hourglass (False)
sair3021:
'// Ao ocorrer o erro
If Err.Number = 3021 Then: Exit Sub
End Sub