Cancellare i dati di alcuni campi di una tabella di grandi dimensioni.

Anonimo
2019-07-25T08:13:28+00:00

Buongiorno a tutti.

Ho una tabella con 108 campi di diversi formati ( Valuta, ora e data, testo, memo) e devo ( per poi utilizzarla nuovamente e popolarla di dati nuovi) eliminare i dati di 102 campi e non di tutti poiché i 6 campi restanti contengono dati anagrafici che non devono essere toccati.

La tabella è una base dati per una applicazione Web e non va assolutamente modificata e toccata la sua struttura, ho provato a svuotare alcuni campi a mano ed ho avuto problemi  ( cioè collegata all'applicazione WEB mi segnalava errori, invece ricollegando la tabella originale andava tutto bene)  con quei campi che hanno come valore predefinito come da immagine allegata.

Come faccio per fare ciò:

  1. creo una query elencando i 102 campi da cancellare? non è laborioso questo, c'è una procedura vba molto più veloce ;

 2) che differenza c'è tra eliminazione di record e svuotamento dei campi?

Spero di essere stato chiaro, chiedetemi pure altre informazioni se occorre.

Ringrazio anticipatamente chi mi aiuta in questo.

Cia Nicola.

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

5 risposte

Ordina per: Più utili
  1. Anonimo
    2019-07-26T05:38:44+00:00

    ciao Nicola,

    resto dell'idea che è bene conservare lo storico.

    Per il nuovo kick-off dell'inizio anno, si, puoi procedere come indicato da Mimmo o da me nel post precedente a questo.

    Un saluto e buona giornata.

    Ciao!

    Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2019-07-25T11:35:38+00:00

    Ciao Sandro, grazie per la tua spiegazione, si tutto chiaro la spiegazione della differenza tra eliminazione di righe e svuotamento dei campi della tabella.

    Per quanto riguarda la mia esigenza, in realtà, ogni anno preparo ( non ho motivo di creare copie di backup della vecchia tabella perché non necessarie a tale scopo, per un uso limitato di quei dati) la stessa tabella, svuotata dei dati tranne nei 6 campi come sopraccennato per poi lanciare l'applicazione web che funge da modulo di domanda per partecipare ad un concorso interno all'azienda.

    Quindi penso che la soluzione di Mimmo di mantenere la stessa struttura e trasferire solo i dati dei sei campi sia la soluzione migliore, cosa ne pensi.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2019-07-25T10:31:01+00:00

    ciao Nicola,

    personalmente non sono cosi' favorevole all'eliminazione di righe nelle tabelle, non si sa mai che prima o poi proprio quei dati ti possano servire ed una volta cancellati, a meno di non recuperarli, da qualche back-up....puf….sono andati.

    Vedrei molto meglio un flag, un campi si/no nominato attivo  tramite il quale se esso è spuntato la riga viene visualizzata piuttosto che no.

    Visualizzata tramite filtro, ( la riga) naturalmente.

    Se invece si tratta di creare una tabella nuova lasciando l'originale come storico, si….adotterei sempre la soluzione del flag andando a ricreare la tabella solo per le righe che effettivamente saranno attive.

    Qui una scelta se ci sono poche righe non attive nella tabella nuova si potrebbero portare nella nuova quelle attive cancellando quelle non attive appunto ( nella tabella nuova non nella storica dove si mantiene tutto e non si cancella nulla) altrimenti trasferire nella nuova tabella solo quelle attive sempre se sono inferiori ( numericamente ) in modo da massimizzare le performance.

    Per quanto alle precedenti domande quindi : 

    […]

    1. creo una query elencando i 102 campi da cancellare? non è laborioso questo, c'è una procedura vba molto più veloce ;

     2) che differenza c'è tra eliminazione di record e svuotamento dei campi?

    […]

    una query di eliminazione cancella le righe in una tabella, lo svotamento di un campo lo interpreterei, come l'assegnazione, a quel campo di quella specifica riga, che viene individuata tra le n righe presenti con una clausola where che viene valutata vera, a null. ( occhio alla punteggiature altrimenti non ci capisce il senso della frase).

    […]

    ciao Nicola

    HTH e un saluto.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2019-07-25T09:35:34+00:00

    Ciao Mimmo, grazie come sempre per la tua gentilezza ed il tuo cortese riscontro.

    Ci avevo già pensato e creato il codice per fare questo, lo posto.

    Private Sub SvuotaCampi_Click()

    Dim db As DAO.Database, RecCount As Long

    On Error GoTo ErrorHandler

    DoCmd.Hourglass True

    RecCount = DCount("*", "tblAnagrafica")

    Set db = CurrentDb

    db.Execute "INSERT INTO Tabella2 (Matricola,MatrMecc,Grado,Cognome,Nome,cod_Reparto,Cod_Fiscale,REPARTO)" & _

               "SELECT Matricola,MatrMecc,Grado,Cognome,Nome,cod_Reparto,Cod_Fiscale,REPARTO " & _

              "FROM tblAnagrafica", dbFailOnError

    If RecCount = db.RecordsAffected Then

        db.Execute "DELETE * FROM tblAnagrafica", dbFailOnError

    End If

    DoCmd.Hourglass False

    Me.Requery

    MsgBox "Importazione dati completata con successo!!"

    ErrorHandler_Exit:

      Exit Sub

    ErrorHandler:

      MsgBox "Error " & Err.Number & " " & Chr(13) & Err.Description

      Resume ErrorHandler_Exit

    End Sub

    Ero curioso di conoscere altre possibili alternative alla mia esigenza imparando da voi professionisti di Access, del tipo creare una query di eliminazione (o di aggiornamento a valori Null negli altri campi, spero di non dire fesserie) con l'indicazione dei soli 6 campi da preservare.

    Ciao Nicola.

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2019-07-25T09:23:42+00:00

    Ciao Nicola,

    forse puoi copiare la sola struttura della tabella in una nuova e quindi con una query aggiornare i soli sei campi di interesse.

    Ciao Mimmo

    La risposta è stata utile?

    0 commenti Nessun commento