puoi provare ad eliminare tutto questo pezzo di codice

codice:
sql = "select NumVisualizzazioni, ufficio from faldone where codice=" & codice
        Response.Write(sql & "
")
        Dim gestdb As New DBgest
        gestdb.sql = sql
        Dim dati = gestdb.apridati()
        dati.Read()
        Dim visual = dati("NumVisualizzazioni")
        Dim ufficio = dati("ufficio")
        'Inizializzo a 0 se l'articolo è nuovo
        If visual Is DBNull.Value Then visual = 0
        visual = visual + 1
e fare solo la query di update per vedere su funziona il tutto (il codice fa la stessa identica cosa di prima)

codice:
 ' Aggiorno il DB
        sql = "update faldone set NumVisualizzazioni=NumVisualizzazioni+1 where codice=" & codice
        Dim gestdb As New DBgest
        gestdb.sql = sql
        Response.Write(sql)
        gestdb.esegui()
Il problema potrebbe essere nel metodo Read che per qualche motivo locka la tabella/riga?

Se usi sql server potresti usare sqlprofiler e controllare cosa succede sul db. L'operazioni dovrebbe essere istantanea visto che immagino che l'update sia su di un solo record