DAO ed elemento non trovato in questo insieme

di Armada il
9 risposte

Buongiorno a tutti, saltuariamente programmo in VBA il database access che uso per la mia attività lavorativa. Oggi non riesco a venire fuori dall'errore di runtime 3265 : Elemento non trovato in questo insieme semplicemente a seguito di queste semplicissime righe di codice:

Dim database As DAO.database
Dim tabella As DAO.Recordset

Set database = CurrentDb
Set tabella = database.OpenRecordset("commesse", dbOpenDynaset)

tabella.MoveLast

servizio = tabella.Fields(“chiave_primaria”) ?-------------------------------------- L'ERRORE VIENE RESTITUITO QUA
MsgBox servizio

tabella.Close
database.Close

Non riesco a capire a cosa sia dovuto. La tabella commesse esiste ed anche il campo al suo interno che sto andando a leggere. Utilizzo Office 2007. Grazie a tutti per il supporto.

9 Risposte

  • Se apri un rs su tabella si usa [dbOpenTable] hai letto come si usa il metodo OPENRECORDSET ed i parametri…?

    La grossa differenza tra i 2 type è che dbOpenTable supporta la collection Inexes… ed il metodo Seek.

    Non credo impattino nel tuo esempio, ma prova… devi tuttavia mettere una gestione errori perche se il rs fosse vuoto … insomma quel codice è un po semplificato.

  • Il movelast è solo un refuso di programmazione, era stato inserito per una prova ma irrilevante ai fini del problema.

  • 18/08/2024 - Armada ha scritto:


    MsgBox servizio

    Sicura che la sintassi sia giusta?

    MsgBox(servizio)

    Servizio dove lo hai dichiarato? Ha la stessa natura del campo? Testo? Numero?

    Errore 3265 Crash - Errore 3265 è un noto, che si verifica quando una riga di codice errata viene compilata nel codice sorgente del programma. Quando Microsoft Access non è in grado di fornire un output sufficiente all'input dato, o non sa veramente cosa produrre, spesso confonderà il sistema in questo modo.

  • 19/08/2024 - Antony73 ha scritto:


    Lo suppongo anche io. Ma a quale scopo?

    Supposto che si tratta di un faidate…

    Magari l'indice non è autoincrementante e forse manco numerico…. Lo prende per aggiungere l'unità?

    Oppure per verificare che abbia letto l'ultimo id?

    Il punto è quell'errore che dal supporto microsoft ne da più cause tra le quali quello che mi sembra più probabile: errore di sintassi al msgbox.

    In ogni caso non ha risposto  al mio intervento.

  • 19/08/2024 - sihsandrea ha scritto:


    19/08/2024 - Antony73 ha scritto:


    Lo suppongo anche io. Ma a quale scopo?

    Supposto che si tratta di un faidate…

    Magari l'indice non è autoincrementante e forse manco numerico…. Lo prende per aggiungere l'unità?

    Oppure per verificare che abbia letto l'ultimo id?

    Il punto è quell'errore che dal supporto microsoft ne da più cause tra le quali quello che mi sembra più probabile: errore di sintassi al msgbox.

    In ogni caso non ha risposto  al mio intervento.

    Speriamo non sia per questo… senza l'ordinamento Crescente forzato io non mi fiderei… e poi basterebbe un DMAX, se non si è in MultiUtenza.

    Come dicevo in modo bonario quel codice “è semplificato” tradotto significa che non ha senso perchè non fa nulla di comprensibile, quindi speravo l'utente lo completasse.

  • Allora, ho risolto, posto che ho poi usato una query come recordset, ma il problema era sul fatto che volesse le parentesi quadre così: recset.Fields("[commerciale]").

    Grazie!

Devi accedere o registrarti per scrivere nel forum
9 risposte