prova a togliere il settaggio del db e ad aprire i recordset direttamente con CurrentDb:
codice:
Option Compare Database
Option Explicit
Public Function SalvataggioOfferteSuArchivio2()
Dim dbs As Database
Dim rst As Recordset, rst2 As Recordset, rsta1 As Recordset,
Dim rsta As Recordset, rsControlloOf As Recordset,
Dim rsControlloDf As Recordset
Dim strSQL As String, strSql2 As String
Dim strSQL3 As String, strSQL4 As String
strSql2 = "SELECT * FROM Offerta WHERE IDOfferte = " &
Forms!Offerte01!IDOfferte
strSQL = "SELECT * FROM DettaglioOfferta WHERE IDOfferte = " &
Forms!Offerte01!IDOfferte & " ORDER BY Riga"
strSQL3 = "SELECT * FROM Offerta WHERE IDOfferte = " &
Forms!Offerte01!IDOfferte
strSQL4 = "SELECT * FROM DettaglioOfferta WHERE IDOfferte = " &
Forms!Offerte01!IDOfferte & " ORDER BY Riga"
Set dbs = OpenDatabase("C:\Documenti\ArchivioEstero.mdb")
Set rst = dbs.OpenRecordset(strSQL4, dbOpenDynaset)
Set rst2 = dbs.OpenRecordset(strSQL3, dbOpenDynaset)
Set rsta = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
Set rsta1 = CurrentDb.OpenRecordset(strSql2, dbOpenDynaset)

Ultra, se IDOfferte è un campo numerico è inutile che nelle select aggiungi & "" dopo Forms!Offerte01!IDOfferte