L’errore di MS Access “Segnalibro non valido” si verifica solitamente quando si imposta la proprietà segnalibro di un record set con una stringa non valida. La proprietà segnalibro viene utilizzata per accedere ai record delle tabelle del database.
L’errore si presenta in questo modo:
Ci sono vari motivi che possono portare all’errore “Segnalibro non valido” in Microsoft Access, ad esempio:
- Quando si imposta una proprietà Recordset.bookmark (DAO) con una stringa non valida.
- Quando il database di Access è danneggiato.
- Quando si tenta di creare un segnalibro per una stringa che non è stata salvata in precedenza.
Metodi per risolvere l’errore 3159 di MS Access: Segnalibro non valido
È possibile provare le seguenti soluzioni per risolvere l’errore 3159 di MS Access.
Metodo 1: riprodurre l’errore
Se si ottiene l’errore “Non è un segnalibro valido” a causa di una stringa non valida nella proprietà del segnalibro, è possibile riprodurre l’errore per trovare e correggere la stringa. A tale scopo, utilizzare il codice seguente nel modulo:
Option Compare Database
Private Sub Command0_Click()
Dim rst As Recordset
Dim str As String
Error 3159 Not a valid bookmark.
Set rst = CurrentDb.OpenRecordset(“Orders”, dbOpenDynaset)
str = rst(0)
rst.Bookmark = str
End Sub
Nella finestra del messaggio di errore, fare clic sull’opzione Debug e poi,
- Utilizzare la stringa corretta.
- Aggiornare la stringa e salvarla per un secondo momento.
Metodo 2: utilizzare il comando Decompila
Quando il codice VBA lancia un errore o si comporta in modo strano, è possibile utilizzare il comando Decompila. Questo comando viene utilizzato per correggere gli errori relativi a VBA. Per utilizzare il comando Decompila, procedere come segue:
- Identificare il percorso di Microsoft Access. A tale scopo, è possibile cercare il programma Access in Esplora risorse.
- Aprire la finestra del Prompt dei comandi digitando cmd nell’utilità Esegui.
- Fare clic su OK.
- Viene visualizzata la finestra cmd.exe.
- Immettere il seguente comando di decompilazione.
C:\Program Files (x86)\Microsoft Office\root\Office16\MSACCESS.EXE /decompilare
- Ora, aprite il database di MS Access.
- Fare clic su Crea > Modulo.
- Andare a Debug > Compilazione.
- Fare clic su File e poi su Salva.
Metodo 3: Riparazione del database
A volte, l’errore 3159 di MS Access può verificarsi quando il database MS è danneggiato. È possibile utilizzare l’utilità integrata – Compatta e ripara – per riparare il database danneggiato o corrotto. Per eseguire questo strumento, seguite i seguenti passaggi:
- Aprire Microsoft Access.
- Andate su File > Info > Compatta e ripara database.
- Selezionate il file di database di Access danneggiato e fate clic su OK.
A questo punto, verificare se il problema è stato risolto. Se l’errore persiste o l’utilità “Compatta e ripara non funziona”, è possibile utilizzare uno strumento di riparazione professionale per Access, come Stellar Repair for Access. Questo strumento è raccomandato da esperti di database certificati per riparare i file di database Access corrotti (.ACCDB e .MDB). Consente di recuperare tutti gli oggetti del database, tra cui query, relazioni, tabelle, report, ecc. Lo strumento è compatibile con Office 365, Access 2019, 2016, 2013 e versioni inferiori.
Chiusura
L’errore 3159 di MS Access si verifica quando si lavora con i recordset nel codice VBA. Di solito si verifica quando si tenta di utilizzare una stringa non valida durante l’impostazione della proprietà Recordset.Bookmark. È possibile risolvere il problema riproducendo l’errore e correggendo il valore della stringa. Se il database è danneggiato, è possibile utilizzare lo strumento Compatta e ripara di MS Access. Se questa utility non funziona, si può provare Stellar Repair for Access per riparare i file di database di Access corrotti. È in grado di riparare i file di database gravemente danneggiati e di recuperare tutti i dati senza modificare la struttura originale. È uno strumento avanzato che può aiutare a risolvere l’errore MS 3159 o qualsiasi altro errore legato alla corruzione.
Was this article helpful?