Query Chiusura Automatica se Vuota

Anonimo
2020-07-25T13:14:46+00:00

BuonGiorno,

ho un database, che apro tutti i giorni, con una macro che apre circa 50 query molte di queste sono vuote oggi ma potrebbero contenere i dati cercati domani.

Vorrei che le query che non restituiscono alcun record, quindi le query vuote, si chiudano automaticamente, in modo da non dover chiudere 40 query io manualmente!!!

Esiste una possibilità di farlo???

Grazie Ciao GiulioMOTOSPORT

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

17 risposte

Ordina per: Più utili
  1. domenico laurenza 9,900 Punti di reputazione Moderatore volontario
    2020-07-26T08:17:52+00:00

    Ciao,

    avendo utilizzato dei nomi di query così particolari ricordati di racchiudere il nome della query utilizzando delle parentesi quadre, quindi avrai:

    Dim myRst As Recordset

    Set myRst = CurrentDb.OpenRecordset("Select * From [>=00450 And <=00500]") ' Query 1

    If Not myRst.EOF Then

       DoCmd.OpenQuery (">=00450 And <=00500")

    End If

    Set myRst = CurrentDb.OpenRecordset("Select * From [>=86950 And <=87000]") ' Query 2

    If Not myRst.EOF Then

       DoCmd.OpenQuery (">=86950 And <=87000")

    End If

    Set myRst = Nothing

    Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2020-07-26T07:25:31+00:00

    Grazie della risposta, ma.....faccio il meccanico e di quello che mi hai detto non ho cpito praticamente nulla!!!

    Le query sono per vedere ogni giorno i compleanni dei contatti, le scadenze delle assicurazione, delle revisioni e dei bolli, in più il database calcola la media giornaliera di ogni veicolo in archivio e apro una query per ogni kilometraggio in cui qualche casa costruttrice deve fare il tagliando e mi fa vedere se qualche cliente è in qualche query

    Ovviamente le query sono forse più di 100 divise in 2 gruppi perchè altrimenti non me le apre e molte di quelle aperte sono vuote

    Mi spieghi come per un bambino delle elementari quello che dovrei fare secondo te!!!

    Grazie GiulioMOTOSPORT

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2020-07-26T07:19:11+00:00

    BuonGiorno,

    faccio il meccanico e non è che la programmazione sia il mio forte, ma ci provo!!!!

    Allora sulla maschera iniziale, in formato struttura, genero evento mettendo il codice, (Poi capiro come e dove mettere l' evento, ma per adesso faccio una prova), 

    Dim myRst As Recordset

    Set myRst=currentdb.openrecordset("Select * From >=00450 And <=00500")   ' Query 1

    If not myRst.eof then

       docmd.openquery (">=00450 And <=00500")

    endif

    Set myRst=currentdb.openrecordset("Select * From >=86950 And <=87000")  ' Query 2

    If not myRst.eof then

       docmd.openquery (">=86950 And <=87000")

    endif

    set myRst=Nothing

    Ma mi esce questo errore: Errore di run-time '3131'

    Errore di sintassi nella clausola FROM

    Clicco sul DEBUG e mi evidenzia questo testo:

    Set myRst = CurrentDb.OpenRecordset("Select * From >=00450 And <=00500") ' Query 1

    Hai un idea di cosa possa volermi dire???

    Ciao Grazie iulioMOTOSPORT

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2020-07-26T06:12:13+00:00

    Ciao Giulio.

    50 queries di aprire? sarei curioso di sapere che cosa contengono...? sono tutte queries di selezione? 

    Ti suggerirei di impostare un suffisso nel nome di ognuna di essere di tipo x_nomeQuery ( x è il suffisso), ciclare la collection querydefs by-passando le queries di sistema, e se nel nome la prima lettera corrisponde al suffisso, in tal caso x, aprirla se contiene righe da mostrare, altrimenti passi alla successiva.

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. domenico laurenza 9,900 Punti di reputazione Moderatore volontario
    2020-07-25T15:02:35+00:00

    Ciao Giulio,

    non esiste automatismo che ti consente la chiusura di una query se vuota ma, potresti gestire il tutto con un po' di codice Vba.

    Ad esempio puoi sfruttare del codice tipo:

    Dim myRst As Recordset

    Set myRst=currentdb.openrecordset("Select * From tuaQuery_1")   ' Query 1

    If not myRst.eof then

       docmd.openquery ("tuaQuery_1")

    endif

    Set myRst=currentdb.openrecordset("Select * From tuaQuery_2")  ' Query 2

    If not myRst.eof then

       docmd.openquery ("tuaQuery_2")

    endif

    set myRst=Nothing

    Ovviamente devi ripetere il blocco per ciascuna delle tue query.

    Se realizzi una tabella contenente il nome delle tue query da eseguire potresti utilizzare un loop del blocco parametrizzando il nome della query.

    Facci sapere

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento