Quote Originariamente inviata da 19pantarei75 Visualizza il messaggio
.... però all'interno di un istruzione sql da passare al generatore di query. ...
Ci confondi le idee,
di solito al generatore di query non si passa una istruzione sql,
bensi è il generatore di query che crea le istruzioni sql

comunque usando il VBA di Access puoi fare:
- 1 recorset sulla tua tabella ( Chiamata "Tabe" ) ( id-testo / ref-numero / cartella-numero )
- 1 query che raggruppando per "id" gli da una numerazione come da esempio ( nel codice "ssq" )
- 1 recordset su ssq
- cicli sul recordset della tabella "RsT"
- per ogni ciclo
---- cicli sl recorset della qery RsQ
---- se id corrisponde aggiorni il valore della cartella
- chiudi tutto
codice:
Public Function AggiornaValori()

Dim ssq As String  ' La query che Raggruppa x id e conta quelli minori
ssq = ""
ssq = ssq & "SELECT DISTINCT Q2.id, Q2.conx FROM "
ssq = ssq & "(SELECT Tabe.id, (SELECT Count(T.id) FROM "
ssq = ssq & "(SELECT DISTINCT X.id FROM Tabe AS X) AS T "
ssq = ssq & "WHERE "
ssq = ssq & "T.id<=Tabe.id) AS conx FROM Tabe) AS Q2;"

Dim DBx As DAO.Database
Dim RsT As DAO.Recordset  ' La Tabella da aggiornare
Dim RsQ As DAO.Recordset  ' La Query da cui prelevare i valori da mettere in tabella

Set DBx = CurrentDb
Set RsT = DBx.OpenRecordset("Tabe", dbOpenDynaset)
Set RsQ = DBx.OpenRecordset(ssq, dbOpenDynaset)

' -- 1 --- Ciclo sui record della Tabella -------------------------------------------
RsT.MoveFirst
Do Until RsT.EOF
    
    ' -- 2 --- Per ogni record della tabelle ciclo sui record della query
    ' trovo il corrispondente id e aggiorno il valore di Tabe.cartella
    RsQ.MoveFirst
    Do Until RsQ.EOF
    
        If RsT.Fields("id") = RsQ.Fields("id") Then
            RsT.Edit
            RsT.Fields("cartella") = RsQ.Fields("conx")
            RsT.Update
        Else
            '
        End If
        RsQ.MoveNext
    Loop
    ' -- 2 --- Fine ---------------------------
    
    RsT.MoveNext
Loop
' -- 1 --- Fine -------------------------------------------

RsQ.Close
RsT.Close
DBx.Close
Set RsQ = Nothing
Set RsT = Nothing
Set DBx = Nothing

End Function
Attento se potresti avere dei valori vuoti di "id" allora bisogna aggiustarla
Facci sapere

.