Aprire una query come una tabella ma con parametri

di il
11 risposte

Aprire una query come una tabella ma con parametri

Miei cari,

non riesco più a provarne altre, le ho esaurite tutte.

Intendo aprire una query in modo classico come se fosse una semplice tabella ma con il parametro where per filtrare una data che nel mio codice è contenta in una variabile (ditemi voi se è meglio di tipo Stringa o Data)

Io sto usando:

Dim rsQ as DAO.Recordset

Set rsQ = CurrentDb.OpenRecordset("Select * from Q_Importabili where D_Evento = " &  <nomevar>, dbOpenSnapshot)

Se inserisco una data manualmente nella query oppure faccio leggere la data che ho inserito in una casella di testo, questa funziona ma in ogni caso da codice mi da errore 3061, Parametri insufficienti: previsto 1.

Premetto che la stessa sintassi la uso qualche riga prima (senza where) e funziona tranquillamente.

Grazie a chi risponde

11 Risposte

  • Re: Aprire una query come una tabella ma con parametri

    Se la where si riferisce a un campo date cosa vuoi usare? Numero? Usa un parametro date lo inizializzi e fai un requery.

    Se usi una stringa ti complichi la vita per la conversione d stringa a date. Perché?

  • Re: Aprire una query come una tabella ma con parametri

    15/09/2025 - antocuomo ha scritto:

    Miei cari,

    non riesco più a provarne altre, le ho esaurite tutte.

    Intendo aprire una query in modo classico come se fosse una semplice tabella ma con il parametro where per filtrare una data che nel mio codice è contenta in una variabile (ditemi voi se è meglio di tipo Stringa o Data)

    Spiega meglio questa cosa perchè quello che fai sotto, consente di aprire un RS caricato con i dati ma non li puoi vedere... sono in memoria accessibili solo da codice...!

    Io sto usando:

    Dim rsQ as DAO.Recordset

    Set rsQ = CurrentDb.OpenRecordset("Select * from Q_Importabili where D_Evento = " &  <nomevar>, dbOpenSnapshot)

    Se inserisco una data manualmente nella query oppure faccio leggere la data che ho inserito in una casella di testo, questa funziona ma in ogni caso da codice mi da errore 3061, Parametri insufficienti: previsto 1.

    Premetto che la stessa sintassi la uso qualche riga prima (senza where) e funziona tranquillamente.

    Grazie a chi risponde

    La sintassi che hai scritto è errata, i segni Maggiore/Minore non devono esserci, ma a prescindere poi l'oggeto [rsQ] è accessibile solo da codice...!

    Set rsQ = CurrentDb.OpenRecordset("Select * from Q_Importabili where D_Evento = " &  <nomevar>, dbOpenSnapshot)

    Tu cosa devi fare di preciso...?

  • Re: Aprire una query come una tabella ma con parametri

    15/09/2025 - antocuomo ha scritto:

    Set rsQ = CurrentDb.OpenRecordset("Select * from Q_Importabili where D_Evento = " &  <nomevar>, dbOpenSnapshot)

    Io obietto questa istruzione. Perché non apri la query normalmente con DoCmd.OpenQuery?

    Se racconti a più ampio respiro come è fatta la query e cosa vuoi ottenere passo passo, si riesce a capire meglio.

  • Re: Aprire una query come una tabella ma con parametri

    Come vedi @Antocuomo ci sono un po' di quesiti a cui devi rispondere se vuoi ricevere qualche aiuto... non ultimo il fatto che dici che vuoi aprire la query come fosse una "semplice tabella"

    15/09/2025 - antocuomo ha scritto:

    come se fosse una semplice tabella ma con il parametro where per filtrare una data che nel mio codice è contenta in una variabile (ditemi voi se è meglio di tipo Stringa o Data)

    ma come ti ha suggerito @Alex con il tuo metodo apri solo un recordset che puoi manipolare ma non vedere...

    Hai due alternative: il metodo suggerito da Osvaldo con il Docmd ma occorre capire come pensi di esporre la tua variabile di filtro alla query parametrica oppure seguendo quanto suggerito qui:

    https://www.donkarl.com/it/?FAQ6.16

    Facci sapere

  • Re: Aprire una query come una tabella ma con parametri

    No Alex, i segni > e < sono solo un mio eccesso, era per virgolettare, capisco che è fuori della consuetudine.

    Capisco anche che l'apertura della query in quanto con opensnapshot è disponibile solo in lettura e mi sta bene utilizzarla solo da codice, ma almeno riuscissi a capire come.

    Intanto preciso che il campo D_Evento contenuto nella query è di tipo data e mi viene  visualizzato come dd/mm/yyyy 

    Ad onor del vero, ho provato anche a salvare la variabile in una textbox per farla usare in query come criterio maschere[![Menu]![nometextbox] per poi aprire la query senza la clausola where, ma questa volta era la query a non funzionare più.

  • Re: Aprire una query come una tabella ma con parametri

    Se è un campo data ovviamente non funziona così, la sintassi è differente...!

    Set rsQ = CurrentDb.OpenRecordset("Select * from Q_Importabili where D_Evento = " &  clng(nomevar), dbOpenSnapshot)

    Detto questo poi il Recordset lo devi usare... e non si compende se sai come si fa...

  • Re: Aprire una query come una tabella ma con parametri

    Brancolando nel buio del contesto esposto da antocuomo...a me sorge il sospetto che nella query occorre dichiarare esplicitamente i PARAMETERS. Poi le tipologie dati (variabile, textbox...) devono tutti confluire in tipo Data.

    1. Puoi mostrare la visualizzazione struttura query oppure il corrispondente SQL?
    2. Puoi mostrare tutto il codice VBA?
    3. Puoi spiegare con un esempio pratico cosa vuoi ottenere?

  • Re: Aprire una query come una tabella ma con parametri

    Ho provato ad utilizzare il comando set rsQ = ........... Clng(nomevar) ... va da bomba. 

    Grazie Alex, fallo sapere a Microsoft così questa soluzione potrebbe andare ad arricchire i troppo pochi esempi di filtro data con where su Query che si propongono su internet. 

    Ero andato letteralmente in fault.

    Ad Osvaldo dico:

    1 la query è delle più semplici e contiene un campo id, un campo nomepaziente ed una data (in cui è stato visitato. 

    Il  problema di errore all'apertura si poneva indipendentemente dalla query.

    2 sotto il codice attuale (rivisto)

    3 l'uso che voglio fare della query è quello di partire dal primo record e visitare, mediante rsQ.MoveNext, i primi tre record al massimo, in funzione della logica del codice scritto.

    Grazie a tutti

        Dim db As DAO.Database
        Dim rsQ As DAO.Recordset
        Set db = CurrentDb
    '    Ult_Eve è la mia variabile di tipo data che contiene la data sulla quale filtrare la query Q_Importabili
        Set rsQ = CurrentDb.OpenRecordset("Select * from Q_Importabili where D_Evento = " & CLng(Ult_Eve), dbOpenSnapshot)
  • Re: Aprire una query come una tabella ma con parametri

    Ciao @Alex, potresti postare il link al tuo (vecchio) progetto database Access di gestione ricette in cui hai gestito l'organizzazione gerarchica?

    Sto costruendo un progettino di database Access che deve effettuare fondamentalmente delle analisi RAMS. 

    Ho una tabella Articoli in relazione con sè stessa, relazione di tipo molti a molti. Ho una junction table che realizza questo tipo di relazione molti a molti nominata RAMS Breakdown table. 

    Mi servirebbe qualche spunto per il mio progettino. 

    Grazie mille

  • Re: Aprire una query come una tabella ma con parametri

    Prova a vedere se era questo:

    https://1drv.ms/u/c/8285b3eb6cb0b6b7/Ebe2sGzrs4UggIJaFgAAAAABEMeDg7P00_o1mQn20XS6jQ?e=YY4eEM

  • Re: Aprire una query come una tabella ma con parametri

    17/09/2025 - @Alex ha scritto:

    Prova a vedere se era questo:

    https://1drv.ms/u/c/8285b3eb6cb0b6b7/Ebe2sGzrs4UggIJaFgAAAAABEMeDg7P00_o1mQn20XS6jQ?e=YY4eEM

    Ciao @Alex , grazie della condivisione e scusami di questa mia risposta tardiva. Il tuo è un progetto da adattare ad un pc con sistema a 64 bit ma molto interessante per quello che sto cercando di realizzare. 

    La mia idea è di un back-end sql server e un front-end access. 

    L'architettura che ho in mente è simile a quella del tuo programma di ricette-semilavorati-componenti. Nel mio caso avrò uno schema del genere:

    Nella tabella tbl_RAMSBreakDownStructure si creano tutti i link padre-figlio per progetto RAMS tra i vari articoli, dovrebbe essere simile ad una BOM table.

    Nella tabella tbl_Articoli ci saranno i codici dei prodotti "componenti" e i codici prodotti "semilavorati" che saranno rispettivamente gli articoli singoli e gli articoli assiemi di articoli singoli (un assieme sarà un record che avrà il campo IsAssieme valorizzato a TRUE) .

    La tabella tbl_ProgettiRAMS conterrà i nomi delle "ricette" ossia dei progetti RAMS. 

    Pensi che la strutturazione sia corretta? Riesci a passarmi altro materiale che possa essermi d'aiuto nel realizzare il mio progettino? Ho in mente sulla parte front-end un tree-vew della breakdown che si riferisca al progetto RAMS che analizzo e compongo....

Devi accedere o registrarti per scrivere nel forum
11 risposte