Cancellazione dati

di Anonimizzato23464 il
13 risposte
Buongiorno,
Ho creato un Database che tramite delle query mi permette di calcolare dei parametri statistici e altre elaborazioni a partire da dati di concentrazione di inquinanti con frequenza di un minuto.
Ho un piccolo problema, provo a spiegarmi al meglio:
I dati di concentrazione provengono da punti di campionamento diversi, che si alternano ogni 15 minuti, io ho bisogno che al minuto corrispondente il cambio di analisi e ai due minuti successivi i dati vengano cancellati, cioè il campo risulti vuoto.
Mi potreste dare un'aiuto?
Di seguito ho inserito un estratto della tabella.
Scusate se l'ho inserita in questo modo, ma non riuscivo ad allegare il file excel.

13 Risposte

  • Siccome non si capisce bene che cosa vorresti fare dovresti far vedere, rispetto ai dati mostrati, quale dovrebbe essere il risultato finale.
  • Stifone ha scritto:


    Siccome non si capisce bene che cosa vorresti fare dovresti far vedere, rispetto ai dati mostrati, quale dovrebbe essere il risultato finale.
    Ha ragione, ho allegato l'estatto della tabella ridotta e con alcune modifiche e come dovrebbe essere il risultato finale, come puoi vedere in corrispondenza del cambio dal punto1 al punto2 nella colonna "Punto Analisi", al campo SO2 non devono esserci i valori, cioè il campo deve risultare vuoto.
  • Perché due record con due cancellazioni? Hanno anche minuti differenti...
  • oregon ha scritto:


    Perché due record con due cancellazioni? Hanno anche minuti differenti...
    Non penso che questo possa essere utile alla risoluzione del mio problema.
    Il motivo sta nel fatto che il punto di campionamento è diverso, ma l'analizzatore è lo stesso, prima che campioni effettivamente l'inquinante di quel punto di analisi, trascorrono un paio di minuti.
  • Dominik ha scritto:


    oregon ha scritto:


    Perché due record con due cancellazioni? Hanno anche minuti differenti...
    Non penso che questo possa essere utile alla risoluzione del mio problema.
    Che c'entra questa affermazione? Era una domanda per chiarire ulteriormente la situazione ma se ti dà fastidio...

  • oregon ha scritto:


    Dominik ha scritto:


    oregon ha scritto:


    Perché due record con due cancellazioni? Hanno anche minuti differenti...
    Non penso che questo possa essere utile alla risoluzione del mio problema.
    Che c'entra questa affermazione? Era una domanda per chiarire ulteriormente la situazione ma se ti dà fastidio...

    Non ho ancora compreso ... ma fa niente altri ti risponderanno Grazie
  • Sempre con i dati dal primo post quelli origibali
    Anno Mese GiornoOra MinutoPunto Analisi( ) SO2
    2020 2 18 13 14 Camino 3.94
    2020 2 18 13 15 Camino 3.94
    2020 2 18 13 16 Camino 3.95
    2020 2 18 13 17 Camino 3.93
    2020 2 18 13 18 Camino 3.94
    2020 2 18 13 19 Camino 3.99
    2020 2 18 13 20 Camino 3.85
    2020 2 18 13 21 Camino 3.96
    2020 2 18 13 22 Camino 3.98
    2020 2 18 13 23 Camino 3.99
    2020 2 18 13 24 Camino 4.02
    2020 2 18 13 25 Aria Ambiente 4.00
    2020 2 18 13 26 Aria Ambiente 3.96
    2020 2 18 13 27 Aria Ambiente 3.98
    2020 2 18 13 28 Aria Ambiente 3.95
    2020 2 18 13 29 Aria Ambiente 3.96
    2020 2 18 13 30 Aria Ambiente 3.89
    2020 2 18 13 31 Aria Ambiente 3.92
    2020 2 18 13 32 Aria Ambiente 3.95
    2020 2 18 13 33 Aria Ambiente 3.96
    2020 2 18 13 34 Aria Ambiente 3.94
    2020 2 18 13 35 Aria Ambiente 3.95
    2020 2 18 13 36 Aria Ambiente 3.92
    2020 2 18 13 37 Aria Ambiente 3.98
    2020 2 18 13 38 Aria Ambiente 3.99
    2020 2 18 13 39 Aria Ambiente 3.98
    2020 2 18 13 40 Modulo 1 3.95
    2020 2 18 13 41 Modulo 1 3.98
    2020 2 18 13 42 Modulo 1 3.94
    2020 2 18 13 43 Modulo 1 3.92
    2020 2 18 13 44 Modulo 1 3.99
    2020 2 18 13 45 Modulo 1 3.94
    2020 2 18 13 46 Modulo 1 3.98
    2020 2 18 13 47 Modulo 1 3.97
    2020 2 18 13 48 Modulo 1 3.95
    2020 2 18 13 49 Modulo 1 3.98
    2020 2 18 13 50 Modulo 1 3.95
    2020 2 18 13 51 Modulo 1 4.01
    2020 2 18 13 52 Modulo 1 4.00
    2020 2 18 13 53 Modulo 1 3.95
    2020 2 18 13 54 Modulo 1 3.95
    dovrebbero diventare come sotto?
    Anno Mese GiornoOra MinutoPunto Analisi( ) SO2
    2020 2 18 13 14 Camino 3.94
    2020 2 18 13 15 Camino 3.94
    2020 2 18 13 16 Camino 3.95
    2020 2 18 13 17 Camino 3.93
    2020 2 18 13 18 Camino 3.94
    2020 2 18 13 19 Camino 3.99
    2020 2 18 13 20 Camino 3.85
    2020 2 18 13 21 Camino 3.96
    2020 2 18 13 22 Camino 3.98
    2020 2 18 13 23 Camino 3.99
    2020 2 18 13 24 Camino 4.02
    2020 2 18 13 25 Aria Ambiente
    2020 2 18 13 26 Aria Ambiente

    2020 2 18 13 27 Aria Ambiente 3.98
    2020 2 18 13 28 Aria Ambiente 3.95
    2020 2 18 13 29 Aria Ambiente 3.96
    2020 2 18 13 30 Aria Ambiente 3.89
    2020 2 18 13 31 Aria Ambiente 3.92
    2020 2 18 13 32 Aria Ambiente 3.95
    2020 2 18 13 33 Aria Ambiente 3.96
    2020 2 18 13 34 Aria Ambiente 3.94
    2020 2 18 13 35 Aria Ambiente 3.95
    2020 2 18 13 36 Aria Ambiente 3.92
    2020 2 18 13 37 Aria Ambiente 3.98
    2020 2 18 13 38 Aria Ambiente 3.99
    2020 2 18 13 39 Aria Ambiente 3.98
    2020 2 18 13 40 Modulo 1
    2020 2 18 13 41 Modulo 1

    2020 2 18 13 42 Modulo 1 3.94
    2020 2 18 13 43 Modulo 1 3.92
    2020 2 18 13 44 Modulo 1 3.99
    2020 2 18 13 45 Modulo 1 3.94
    2020 2 18 13 46 Modulo 1 3.98
    2020 2 18 13 47 Modulo 1 3.97
    2020 2 18 13 48 Modulo 1 3.95
    2020 2 18 13 49 Modulo 1 3.98
    2020 2 18 13 50 Modulo 1 3.95
    2020 2 18 13 51 Modulo 1 4.01
    2020 2 18 13 52 Modulo 1 4.00
    2020 2 18 13 53 Modulo 1 3.95
    2020 2 18 13 54 Modulo 1 3.95

    E' sicuro che i minuti escano sempre in successione o potrebbero esserci dei salti?
  • La query non è sufficiente per svolgere il compito da te indicato, devi scorrere il Recordset, valutando gli elementi nella sequenza e procedere in base alle condizioni.
  • Stifone ha scritto:


    Sempre con i dati dal primo post quelli origibali
    Anno Mese GiornoOra MinutoPunto Analisi( ) SO2
    2020 2 18 13 14 Camino 3.94
    2020 2 18 13 15 Camino 3.94
    2020 2 18 13 16 Camino 3.95
    2020 2 18 13 17 Camino 3.93
    2020 2 18 13 18 Camino 3.94
    2020 2 18 13 19 Camino 3.99
    2020 2 18 13 20 Camino 3.85
    2020 2 18 13 21 Camino 3.96
    2020 2 18 13 22 Camino 3.98
    2020 2 18 13 23 Camino 3.99
    2020 2 18 13 24 Camino 4.02
    2020 2 18 13 25 Aria Ambiente 4.00
    2020 2 18 13 26 Aria Ambiente 3.96
    2020 2 18 13 27 Aria Ambiente 3.98
    2020 2 18 13 28 Aria Ambiente 3.95
    2020 2 18 13 29 Aria Ambiente 3.96
    2020 2 18 13 30 Aria Ambiente 3.89
    2020 2 18 13 31 Aria Ambiente 3.92
    2020 2 18 13 32 Aria Ambiente 3.95
    2020 2 18 13 33 Aria Ambiente 3.96
    2020 2 18 13 34 Aria Ambiente 3.94
    2020 2 18 13 35 Aria Ambiente 3.95
    2020 2 18 13 36 Aria Ambiente 3.92
    2020 2 18 13 37 Aria Ambiente 3.98
    2020 2 18 13 38 Aria Ambiente 3.99
    2020 2 18 13 39 Aria Ambiente 3.98
    2020 2 18 13 40 Modulo 1 3.95
    2020 2 18 13 41 Modulo 1 3.98
    2020 2 18 13 42 Modulo 1 3.94
    2020 2 18 13 43 Modulo 1 3.92
    2020 2 18 13 44 Modulo 1 3.99
    2020 2 18 13 45 Modulo 1 3.94
    2020 2 18 13 46 Modulo 1 3.98
    2020 2 18 13 47 Modulo 1 3.97
    2020 2 18 13 48 Modulo 1 3.95
    2020 2 18 13 49 Modulo 1 3.98
    2020 2 18 13 50 Modulo 1 3.95
    2020 2 18 13 51 Modulo 1 4.01
    2020 2 18 13 52 Modulo 1 4.00
    2020 2 18 13 53 Modulo 1 3.95
    2020 2 18 13 54 Modulo 1 3.95
    dovrebbero diventare come sotto?
    Anno Mese GiornoOra MinutoPunto Analisi( ) SO2
    2020 2 18 13 14 Camino 3.94
    2020 2 18 13 15 Camino 3.94
    2020 2 18 13 16 Camino 3.95
    2020 2 18 13 17 Camino 3.93
    2020 2 18 13 18 Camino 3.94
    2020 2 18 13 19 Camino 3.99
    2020 2 18 13 20 Camino 3.85
    2020 2 18 13 21 Camino 3.96
    2020 2 18 13 22 Camino 3.98
    2020 2 18 13 23 Camino 3.99
    2020 2 18 13 24 Camino 4.02
    2020 2 18 13 25 Aria Ambiente
    2020 2 18 13 26 Aria Ambiente

    2020 2 18 13 27 Aria Ambiente 3.98
    2020 2 18 13 28 Aria Ambiente 3.95
    2020 2 18 13 29 Aria Ambiente 3.96
    2020 2 18 13 30 Aria Ambiente 3.89
    2020 2 18 13 31 Aria Ambiente 3.92
    2020 2 18 13 32 Aria Ambiente 3.95
    2020 2 18 13 33 Aria Ambiente 3.96
    2020 2 18 13 34 Aria Ambiente 3.94
    2020 2 18 13 35 Aria Ambiente 3.95
    2020 2 18 13 36 Aria Ambiente 3.92
    2020 2 18 13 37 Aria Ambiente 3.98
    2020 2 18 13 38 Aria Ambiente 3.99
    2020 2 18 13 39 Aria Ambiente 3.98
    2020 2 18 13 40 Modulo 1
    2020 2 18 13 41 Modulo 1

    2020 2 18 13 42 Modulo 1 3.94
    2020 2 18 13 43 Modulo 1 3.92
    2020 2 18 13 44 Modulo 1 3.99
    2020 2 18 13 45 Modulo 1 3.94
    2020 2 18 13 46 Modulo 1 3.98
    2020 2 18 13 47 Modulo 1 3.97
    2020 2 18 13 48 Modulo 1 3.95
    2020 2 18 13 49 Modulo 1 3.98
    2020 2 18 13 50 Modulo 1 3.95
    2020 2 18 13 51 Modulo 1 4.01
    2020 2 18 13 52 Modulo 1 4.00
    2020 2 18 13 53 Modulo 1 3.95
    2020 2 18 13 54 Modulo 1 3.95

    E' sicuro che i minuti escano sempre in successione o potrebbero esserci dei salti?
    Esattamente.
    Si i minuti escono sempre in successione e sono sicuro non ci siano salti
  • Il campo 'Punto Analisi( )' si chiama proprio così con lo spazio fra Punto e Analisi, le parentesi, lo spazio fra le parentesi?
  • I campi sono:
    • Anno
    • Mese
    • Giorno
    • Ora
    • Minuto
    • Punto
    • Analisi( ) SO2
    il campo 'Analisi( ) SO2' è con lo spazio fra le parentesi e lo spazio fra parentesi chiusa e SO2'?
    Comunque supposto che si chiamino come sopra, altrimenti dovrai cambiare i nomi all'interno del codice, dovrai creare un Modulo, nella finestra VBA, ed in collare, in esso, il seguente codice:
    
    Sub VerificaDati()
        On Error GoTo Errore
    Dim rs As DAO.Recordset
    Dim intMinuto As Integer
    Dim strPunto As String
        Set rs = CurrentDb.OpenRecordset("SELECT Minuto, Punto, [Analisi( ) SO2] AS Analisi FROM TabellaTemp")
        If rs.RecordCount > 0 Then
            intMinuto = rs!Minuto
            strPunto = rs!Punto
            rs.MoveNext
            Do While Not rs.EOF
                If strPunto <> rs!Punto Then
                    If (rs!Minuto - intMinuto) < 3 Then
                        rs.Edit
                        rs!Analisi = Null
                        rs.Update
                    Else
                        intMinuto = rs!Minuto
                    End If
                    If (rs!Minuto - intMinuto) = 2 Then strPunto = rs!Punto
                Else
                    intMinuto = rs!Minuto
                End If
                rs.MoveNext
            Loop
        End If
        MsgBox "Elaborazione dati eseguita regolarmente.", vbInformation
        Exit Sub
        
    Errore:
        MsgBox "Elaborazione dati interrortta in quanto si è verificato un errore.", vbInformation
    End Sub
    quindi dovrai cambiare nel codice il nome della tabella da TabellaTemp a quello della tua e aver creato una copia della tua tabella, dove sono i dati da elaborare, posizionarsi all'interno della routine e premere il tasto F5 e verrà eseguito il codicecodice
  • Stifone ha scritto:


    Il campo 'Punto Analisi( )' si chiama proprio così con lo spazio fra Punto e Analisi, le parentesi, lo spazio fra le parentesi?
    Si purtroppo è proprio così.
  • Stifone ha scritto:


    I campi sono:
    • Anno
    • Mese
    • Giorno
    • Ora
    • Minuto
    • Punto
    • Analisi( ) SO2
    il campo 'Analisi( ) SO2' è con lo spazio fra le parentesi e lo spazio fra parentesi chiusa e SO2'?
    Comunque supposto che si chiamino come sopra, altrimenti dovrai cambiare i nomi all'interno del codice, dovrai creare un Modulo, nella finestra VBA, ed in collare, in esso, il seguente codice:
    
    Sub VerificaDati()
        On Error GoTo Errore
    Dim rs As DAO.Recordset
    Dim intMinuto As Integer
    Dim strPunto As String
        Set rs = CurrentDb.OpenRecordset("SELECT Minuto, Punto, [Analisi( ) SO2] AS Analisi FROM TabellaTemp")
        If rs.RecordCount > 0 Then
            intMinuto = rs!Minuto
            strPunto = rs!Punto
            rs.MoveNext
            Do While Not rs.EOF
                If strPunto <> rs!Punto Then
                    If (rs!Minuto - intMinuto) < 3 Then
                        rs.Edit
                        rs!Analisi = Null
                        rs.Update
                    Else
                        intMinuto = rs!Minuto
                    End If
                    If (rs!Minuto - intMinuto) = 2 Then strPunto = rs!Punto
                Else
                    intMinuto = rs!Minuto
                End If
                rs.MoveNext
            Loop
        End If
        MsgBox "Elaborazione dati eseguita regolarmente.", vbInformation
        Exit Sub
        
    Errore:
        MsgBox "Elaborazione dati interrortta in quanto si è verificato un errore.", vbInformation
    End Sub
    quindi dovrai cambiare nel codice il nome della tabella da TabellaTemp a quello della tua e aver creato una copia della tua tabella, dove sono i dati da elaborare, posizionarsi all'interno della routine e premere il tasto F5 e verrà eseguito il codicecodice
    Great!! Grazie mille sei stato gentilissimo.
Devi accedere o registrarti per scrivere nel forum
13 risposte