Private Sub Comando4_Click()
'Variables de tipo Numérico
Dim ctaReg, i, veCliente As Long
'Variable de Tipo texto
Dim traeComentAnt As String
'quita las advertencias
DoCmd.SetWarnings False
'Borra el contenido de la tabla resultado
DoCmd.RunSQL "DELETE Resultado.* FROM Resultado;"
'Cuenta la cantidad de registros de la tabla Detalle
ctaReg = DCount("Cliente", "Detalle")
'Repite el proceso para cada registro de la tabla Detalle, en este caso 17 veces
For i = 1 To ctaReg
'Ve si el Cliente de la Tabla Detalle existe en la TablaResultado
veCliente = DCount("Cliente", "Resultado", "Resultado.Cliente = Forms![Formulario1]![Cliente]")
'Si la cuenta arroja 0 se anexa el cliente con su respectivo comentario
If veCliente = 0 Then
DoCmd.OpenQuery "01 Anexa a Resultado el 1er Comentario para ese nuevo Cliente"
'Si la cuenta es mayor que 0 el cliente ya existe en la Tabla Resultado, así que se actualiza el comentario de dicho Cliente
ElseIf veCliente > 0 Then
'Se busca el comentario en la Tabla Resultado de ese cliente y se concatena con el comentario actual en ComentarioAcum
traeComentAnt = DLookup("Comentario", "Resultado", "Resultado.Cliente = Forms![Formulario1]![Cliente]")
ComentarioAcum.Value = traeComentAnt & " " & Comentario.Value
'Se actualiza el comentario en la Tabla Resultado para ese cliente
DoCmd.OpenQuery "02 Actualiza Resultado sgtes Comentario del Cliente Existente"
End If
'Se limpia ComentarioAcum
ComentarioAcum.Value = Null
'Se va al siguiente registro hasta el final 17
DoCmd.GoToRecord acDataForm, "Formulario1", acNext
'Termina de recorrer la Tabla Detalle representada en el formulario Formulario1
Next i
'Vuelve al primer registro para dejar el formulario en el prmer registro por si queremos ejecutar nuevamente el proceso
DoCmd.GoToRecord acDataForm, "Formulario1", acFirst
'Abre la tabla Resultado con los registros concatenados por cliente
DoCmd.OpenTable "Resultado", acViewNormal
'Es muy importante reestablecer las advertencias
DoCmd.SetWarnings True
End Sub