Query di eliminazione dati obsoleti

di il
8 risposte

Query di eliminazione dati obsoleti

Salve a tutti! Avrei necessità di schedulare una query che mi elimini dei dati contenuti in un db access più vecchi di 7 gg.
Si tratta di log registrati da lettori di badge. Esiste il campo data, come posso far si che la query vada bene per ogni giorno in automatico?

Grazie a chi mi aiuterà

8 Risposte

  • Re: Query di eliminazione dati obsoleti

    AlessioFoxDM ha scritto:


    query che mi elimini dei dati contenuti in un db access più vecchi di 7 gg
    1. Imposta una query di selezione con criterio sul campo Data:
    <Date()-7
    2. Trasforma la query in "query di eliminazione"...leggi anche qui
    https://support.office.com/it-it/article/creare-ed-eseguire-una-query-di-eliminazione-6da65fe1-0fc7-4a64-8ef0-c052cd4c3ec5
    3. Salva la query con nome EliminaPrima7

    AlessioFoxDM ha scritto:


    come posso far si che la query vada bene per ogni giorno in automatico?
    Devi decidere tu quando ciò deve accadere. Ad esempio un clic di pulsante. Potresti anche farlo all'apertura del database, ma quest'ultima soluzione la vedo un po' "caotica".
    Dopo che hai scelto quale evento deve eseguire la query EliminaPrima7, devi impostare una macro o codice VBA che fa questo
    ApriQuery
    Nome query: EliminaPrima7

    se usi macro
    DoCmd.OpenQuery "EliminaPrima7"
    se usi codice VBA
  • Re: Query di eliminazione dati obsoleti

    Grazie mille per la risposta così rapida, ora sto staccando da lavoro, quindi eseguiro' questa prova domani mattina. Ti faccio sapere i risvolti, magari potrà essere utile anche ad altri utenti.

    Grazie ancora e buona serata!
  • Re: Query di eliminazione dati obsoleti

    Purtroppo ho sbagliato, il campo "Data" nel db non è presente Sono stringhe inserite su un'unica colonna. Usero' le macro comunque...
  • Re: Query di eliminazione dati obsoleti

    AlessioFoxDM ha scritto:


    Purtroppo ho sbagliato, il campo "Data" nel db non è presente Sono stringhe inserite su un'unica colonna. Usero' le macro comunque...
    E cosa scrivi nella macro? (solo scrivere macro mi sono venuti i brividi)
  • Re: Query di eliminazione dati obsoleti

    Non so ancora cosa scrivere nella macro.

    Allora, supponiamo di avere questi record:

    00001000903201823152
    00001000903201823156
    00001000903201823121
    00001000903201823178
    00001000903201823132
    00001000903201823145

    Li ho inventati ma più o meno sono tutti cosi, all'interno della stringa ci sono valori che rappresentanto la data, altri se è giorno festivo o lavorativo ed eccetera. Tutti in un unico campo comunque. Ora, io posso interrogare il db per capire in qualche modo quale record sia più vecchio di xx giorni? Posso selezionare con una query solo la parte di testo contente la data e successivamente confrontarla a quella attuale per dire "si eliminalo" oppure " no lascialo"?
  • Re: Query di eliminazione dati obsoleti

    AlessioFoxDM ha scritto:


    Non so ancora cosa scrivere nella macro.
    Ovviamente la mia domanda era retorica.
    Tantissime domande, alcune da parte nostra, altre che dovresti porti tu. Parli di db. Chi ha costruito quel db? chi importa quelle stringhe? perché non è strutturato con i "campi" come magari dovrebbe essere oppure ci sono e tu devi solo svuotare questi record di log? Perché cancellare questi record? Se non ha senso mantenerli ok, ma non vorrei che fosse un presunto problema di spazio. Access (almeno nelle versioni più recenti) ne tiene parecchie di informazioni.

    Detto questo, se persisti nella tua necessità, potresti valutare 2 strade:
    1) aggiungere un campo che inserisca la data di importazione (che può però differire da quella a cui si riferisce il log) e fare la cancellazione in base a quella.
    2) individuare all'interno del record, con Mid$() la parte che si riferisce alla data. Dall'estratto che ci hai dato per noi è impossibile aiutarti. Si potrebbe un po' indovinare ma... è meglio andare sul sicuro e su quello impostare una where condition per la query di cancellazione.
    Il punto 2) è la riposta a questa tua domanda

    AlessioFoxDM ha scritto:


    Ora, io posso interrogare il db per capire in qualche modo quale record sia più vecchio di xx giorni? Posso selezionare con una query solo la parte di testo contente la data e successivamente confrontarla a quella attuale per dire "si eliminalo" oppure " no lascialo"?
  • Re: Query di eliminazione dati obsoleti

    Dunque, il db è stato creato dall'azienda che ci ha installato il software. Le stringhe vengono importate da un file dat generato dal lettore di badge. La necessità è per motivi di spazio, altrimenti il db crescerebbe continuamente e vorremmo evitare di doverlo svuotare manualmente. Dunque, la soluzione del campo data potrebbe essere ideale, come posso pero' inserirlo nel db? O meglio, come posso dire ad access di scrivere all'interno di quel campo la data in cui è stato scritto il record?
  • Re: Query di eliminazione dati obsoleti

    Ok risolto. Ho aggiunto un campo data con valore predefinito Date(), in modo tale che tutti i record che vengono scritti contengono di default la data di importazione. Lavorerò su quel campo con una query di eliminazione e dovrei aver risolto. Vi tengo aggiornati, grazie
Devi accedere o registrarti per scrivere nel forum
8 risposte