Allora premetto che parto proprio da zero. Devo fare uno scriptino VBA su Access.

Legge dati da tabelle, li analizza e modifica dei campi qua e là.

Vi posto subito il codice che sto iniziando a testare per capirci qualcosa:

Set db = CurrentDb
Set Sistemi = db.OpenRecordset("Sistemi", dbOpenDynaset)
Set Resi = db.OpenRecordset("Resi", dbOpenDynaset)
Set MDC = db.OpenRecordset("MDC", dbOpenDynaset)

Resi.MoveFirst
Do Until Resi.EOF

Query = "SELECT * FROM Sistemi WHERE [serial_number] = '" & Resi("SN") & "';"
Set Risultato = db.OpenRecordset(Query, dbOpenDynaset)
If IsNull(Risultato.RecordCount) Then GoTo Prossimo
-> Risultato.MoveFirst

Query = "SELECT * FROM MDC WHERE [custcode] = " & Risultato("custcode") & ";"
Set Risultato1 = db.OpenRecordset(Query, dbOpenDynaset)
If Not IsNull(Risultato1.RecordCount) Then
Risultato1.MoveFirst
MDC.Edit
MDC("Stato") = "Prova"
MDC.Update
End If

Prossimo:
Resi.MoveNext
Loop

Sistemi.Close
Resi.Close
MDC.Close
db.Close
Il problema sta nella riga con la freccina (lo so perchè se provo a stampare qualcosa prima di quella riga la stampa, se ci provo subito dopo no).

All'inizio c'era un Do-Until per scorrere Risultato. Poi mi sono reso conto che i dati hanno una corrispondenza univoca quindi posso leggere tranquillamente i campi di risultato senza dover fare un ciclo perchè avrò un record solo.
A questo punto non sapevo se l'istruzione MoveFirst servisse ancora.
Ma tanto non funza sia che la levo sia che la lascio.

Cosa sbaglio?



Ah, il GoTo mi serve perchè non ho il Continue e non so come risolvere il problema dei recordset vuoti che mi facevano impallare i cicli.

Grazie!