Allora ragazzi.
Grazie per la segnalazione di recordset e normalizzazione. MI sono fatto una cultura e facendo un pò di modifiche e creandomi due recordset parametrati opportunamente sono riuscito a raggiungere il mio obbiettivo. Perciò per me la discussione è chiusa.
Questo è il codice
Private Sub EsitoComplessivo_Click()
Dim db As Database
Dim rsint As DAO.Recordset
Dim rsest As DAO.Recordset
Dim verb As String
Dim esest As Long
Set db = CurrentDb
'IdUff, idverb, idprot, idua, iduser,ID_LETTERA, VERBALE, ID_UFFICIO, ID_UA, EsitoInterno, EsitoComplessivo
RicercaAnagEsiti = "Select ID_LETTERA, VERBALE, ID_UFFICIO, ID_UA, EsitoInterno, EsitoComplessivo from ANAGRAFICA Where ID_LETTERA= " & idprot & "AND ID_UA= " & idua & "AND ID_UFFICIO= " & IdUff 'creo query su anagrafica per cercare
Set rsint = CurrentDb.OpenRecordset(RicercaAnagEsiti, dbOpenDynaset, dbSeeChanges) 'chiamo la query dell'anagrafica filtrata sulla lettera
RicercaMovEstEsiti = "Select ID_LETTERA, VERBALE, EsitoEsterno from MovimentoEsterno Where ID_LETTERA= " & idprot 'creo query su anagrafica per cercare movimenti eseterni filtrati sulla lettera
Set rsest = CurrentDb.OpenRecordset(RicercaMovEstEsiti, dbOpenDynaset, dbSeeChanges) 'chiamo la query del movimento esterno filtrata sulla lettera
Do While Not rsint.EOF 'ciclo su anagrafica per trovare i non esitati
esint = rsint("EsitoInterno") 'valuto inserimento esito interno
If IsNull(esint) = True Then GoTo 5 'se è nullo passo al prossimo record
escomp = rsint("EsitoComplessivo") 'valuto inserimento esito complessivo
If IsNull(escomp) = True Then 'verifico che non è esitato
verbint = rsint("VERBALE") 'dichiaro il verbale che cerco
esest = 1
If IsNull(rsest.RecordCount) Then GoTo 6
Do While Not rsest.EOF 'ciclo su movest per trovare i movimenti
verbest = rsest("VERBALE") 'dichiaro il verbale trovato
If verbest = verbint Then 'se c'è un movimento per quel verbale
esesterno = rsest("EsitoEsterno")
If IsNull(esesterno) = True Then 'se non è esitato
GoTo 5 'allora esci dal ciclo e vai al prossimo campione
End If
If esesterno = "IRREGOLARE" Then 'se è irregolare
esest = esest * -1
End If
If esesterno = "REGOLARE" Then 'se è irregolare
esest = esest * 1
End If
End If
rsest.MoveNext 'cerco altri movimenti esterni per quel verbale
Loop 'fine ciclo esterni
End If 'fine esito movimentoesteno
6
If esint = "REGOLARE" And esest = 1 Then 'SE è TUTTO POSITIVO REGOLARE
rsint.Edit
rsint("EsitoComplessivo") = "REGOLARE"
rsint.Update
End If
If esint = "IRREGOLARE" And esest = 1 Then 'ALTRIMENTI IRREGOLARE
rsint.Edit
rsint("EsitoComplessivo") = "IRREGOLARE"
rsint.Update
End If
If esint = "IRREGOLARE" And esest = -1 Then 'ALTRIMENTI IRREGOLARE
rsint.Edit
rsint("EsitoComplessivo") = "IRREGOLARE"
rsint.Update
End If
5
rsint.MoveNext
Loop 'fine ciclo interni
End Sub
saluti e buone feste