Questo nel tuo codice non c'è:
adoPrimaryRS.CursorLocation = adUseClient

Questo nel tuo codice non c'è e ti serve perchè se fai eof e leggi i valori dei campi del record va in errore

If Not(adoPrimaryRS.eof) then

E QUESTO

Dim oText As Field
i= 0
For Each oText In adoPrimaryRS.Fields
TxtFields(i) = adoPrimaryRS(i)
i = i + 1
Next
End if

NON MI SEMBRA UGUALE A QUESTO

Dim oText As TextBox
'Associa le caselle di testo al fornitore di dati
For Each oText In Me.txtFields
Set oText.DataSource = adoPrimaryRS
Next
Utilizzare i nomi delle variabili uguali non significa che il codice è uguale, perchè per associare i campi testi o usi un adodc oppure devi dire che il contenuto dei campi del record nell'ordine della selezione si spostano sui campi testo del form.

Ciao