Showing results 1 to 7 of 7

Thread: Archivdaten löschen

  1. #1
    Join Date
    06.05.2011
    Posts
    41

    Default Archivdaten löschen

    Hallo,

    ich möchte unserm Kunden ermöglichen Archivdaten (Chargenprotokolle) zu löschen. Projektiert ist ein Archiv (BS) das einmal am Tag gespeichert wird und ereignisgesteuert aufzeichnet. Ich verwende Zenon 7.00.

    Der folgende Code läuft fehlerfrei ab und es werden auch die richtigen Variablen und deren Werte dem Archivfilter hinzugefügt. Die Varialen und Werte hab ich mir testweise anzeigen lassen. Leider funktioniert die Anweisung boResult = zArvBSValues.DeleteArchiveValue(k) nicht. Woran kann das liegen?

    'löschen eines Archivdatensatzes
    Public Sub BatchListDeleteBatch()
    Dim boResult As Boolean
    Dim i As Integer
    Dim k As Integer
    Dim lCnt As Long
    Dim dbStartTime As Double
    Dim dbEndTime As Double
    Dim strI1 As String
    Dim zArvBS As Archive
    Dim zArvBSFilter As ArchiveFilter
    Dim zArvBSVars As ArchiveFilterVariables
    Dim zArvBSVar As ArchiveFilterVariable
    Dim zArvBSValues As ArchiveValues
    
    On Error GoTo Err
        
        'Objekt von dem Archiv Batch Start und End"
        Set zArvBS = thisProject.Archives.Item("BATCH START")
        'neuen Archivfilter anlegen
        Set zArvBSFilter = zArvBS.ArchiveFilters.CreateArchiveFilter
        'alle Archivvaribalen aus dem Archiv BS dem Archivfilter hinzufügen
        For i = 0 To zArvBS.ArchiveVariables.Count - 1
            zArvBSFilter.AddArchiveVariable zArvBS.ArchiveVariables.Item(i)
        Next i
        
        'Chargenliste durchsuchen und Start- und Endzeit erfassen
        For i = 1 To Constant.iLIST50
            strI1 = CStr(i)
            'Ausgewählte Charge suchen
            If thisProject.oVarCon.Item("l.Archiv.Batch.List.boActive[" & strI1 & "]").value = 1 Then
                'Startzeit und Endzeit
                dbStartTime = thisProject.oVarCon.Item("l.Archiv.Batch.List.Time.dStart[" & strI1 & "]").value
                dbEndTime = thisProject.oVarCon.Item("l.Archiv.Batch.List.Time.dEnd[" & strI1 & "]").value
                GoTo NextStep
            End If
        Next i
    
    NextStep:
        'Zeiten den Archivfiltern übergeben
        zArvBSFilter.StartTime = dbStartTime
        zArvBSFilter.EndTime = dbEndTime
        'Den Archivfilter mit den entsprechenden Zeiten aktivieren
        Set zArvBSVars = zArvBSFilter.Query
        
        'Schleife über alle Archivvariablen aus dem Archiv BS
        For i = 0 To zArvBSVars.Count - 1
            Set zArvBSVar = zArvBSVars.Item(i)
            Set zArvBSValues = zArvBSVar.ArchiveValues
            'Schleife über alle Werte zu der Archivvariable(normal ist hier nur ein Wert vorhanden)
            lCnt = zArvBSValues.Count
            For k = 0 To lCnt - 1
                boResult = zArvBSValues.DeleteArchiveValue(k)
            Next k
            Set zArvBSVar = Nothing
            Set zArvBSValues = Nothing
        Next i
            
    Err:
        If Err.Number <> 0 Then Call Functions.WriteLogFile("AB.BLDB_1 " & Err.Description)
        If Not zArvBS Is Nothing Then Set zArvBS = Nothing
        If Not zArvBSFilter Is Nothing Then Set zArvBSFilter = Nothing
        If Not zArvBSVars Is Nothing Then Set zArvBSVars = Nothing
        If Not zArvBS Is Nothing Then Set zArvBS = Nothing
        
    End Sub

  2. #2
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    879

    Default Re: Archivdaten löschen

    was spricht dagegen anstatt dies über VBA/VSTA zu machen direkt die Archivdatei selbst zu löschen?
    -> funktionskategorie: Windows
    -> dateioperationen

    - hier kann der pfad relativ zum runtimedaten ordner angegeben werden
    - hier kann die dateioperation "löschen" ausgewählt werden
    - hier kann auf *.arx gefiltert werden
    - hier kann auf dateierstelldatum gefiltert werden (z.b. lösche alle bs*.arx dateien die älter als x tage sind)

    ... nur als idee...

    gruß,
    herbert


  3. #3
    Join Date
    06.05.2011
    Posts
    41

    Default AW: Re: Archivdaten löschen

    Quote Originally Posted by herberto View Post
    was spricht dagegen anstatt dies über VBA/VSTA zu machen direkt die Archivdatei selbst zu löschen?
    -> funktionskategorie: Windows
    -> dateioperationen

    - hier kann der pfad relativ zum runtimedaten ordner angegeben werden
    - hier kann die dateioperation "löschen" ausgewählt werden
    - hier kann auf *.arx gefiltert werden
    - hier kann auf dateierstelldatum gefiltert werden (z.b. lösche alle bs*.arx dateien die älter als x tage sind)

    ... nur als idee...

    gruß,
    herbert
    Die Sache ist, dass in der Archivdatei alles Chargen von einem Tag enthalten sind. Es soll aber nur ein Datensatz aus der "Tagesdatei" gelöscht werden.

  4. #4
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    879

    Default Re: Archivdaten löschen

    Archiveinträge können auch mit Hilfe des Bildtyps "Archiv-Nachbearbeitung" modiziert als auch gelöscht werden. Der "Löschen" Button muss extra eingefügt werden (ist nicht in der Vorlage dabei).

    Bei der Bildumschaltfunktion zu diesem Bildtyp gibt es auch die Möglichkeit auf Chargen zu filtern.

    Vorraussetzung bei dem besagten Chargenarchiv ist hier natürlich, dass hier entweder eine spontane oder eine ereignisgesteuerte Abtastung definiert ist. Bei einer zyklischen Abtastung können die Archiveinträge nicht einzeln gelöscht werden (auch logisch da ja für jedes Abtastintervall ein Wert erwartet wird und keine Lücken vorhanden sein dürfen). Entstandene Lücken (wie z.B. beim Runtime Start) werden durch den Archiversatzwert aufgegefüllt.

    gruß,
    herbert


  5. #5
    Join Date
    06.05.2011
    Posts
    41

    Default AW: Archivdaten löschen

    Ja das habe ich auch schon probiert und das funktioniert soweit. Das Projekt ist aber etwas umfangreicher und die Werte für ein Chargenprotokoll kommen aus drei verschiedenen Archiven. Im Sinne der Usability möchte ich dem Kunden nicht zumuten, dass er sich die ganzen Daten aus den drei Archiven zu einem Chargenprotokoll zusammensucht und manuell löschen muss. Es soll einfach nur ein Button ("Chargenprotokoll löschen") geben und mehr soll der Kunde nicht machen müssen. Daher bin ich bei der Umsetzung auf VBA gegangen.
    Was mir aufgefallen ist, dass wenn ich im Bild Archivnachbearbeitung die Werte lösche, das Archiv anschließend gespeichert werden muss. Wie sieht es da in VBA aus?

    Mal abgesehen von den Alternativen die aufgelistet sind, bleibt die Frage warum der Befehl "boResult = zArvBSValues.DeleteArchiveValue(k)" nicht funktioniert???

  6. #6
    Join Date
    30.05.2007
    Location
    Salzburg
    Posts
    879

    Default Re: Archivdaten löschen

    "Ja das habe ich auch schon probiert und das funktioniert soweit. Das Projekt ist aber etwas umfangreicher und die Werte für ein Chargenprotokoll kommen aus drei verschiedenen Archiven."
    -> das wär ja dann was für die version 7.11
    -> hier können chargen nun auch archivübergreifend ausgewertet werden
    --> im filter gibt hier es die möglichkeit mehrere archive anzugeben (auf Archivkennung: z.B. A1, A2, A3)
    -> also könnte das alles über zenon standard-lösungen realisiert werden

    die zugriff auf archive über die zenon API - und hier speziell das löschen - ist mit vorsicht zu genießen. nicht das es nicht funktionieren würde, jedoch bei gewissen umständen könnte bei dem code vielleicht schiefstände bei den archiven zustandekommen?!

    gruß,
    herbert


  7. #7
    Join Date
    06.05.2011
    Posts
    41

    Default AW: Re: Archivdaten löschen

    Quote Originally Posted by herberto View Post
    die zugriff auf archive über die zenon API - und hier speziell das löschen - ist mit vorsicht zu genießen. nicht das es nicht funktionieren würde, jedoch bei gewissen umständen könnte bei dem code vielleicht schiefstände bei den archiven zustandekommen?!
    Und wie funktioniert es dann? Was ist mit "Schiefstände" gemeint?

Similar Threads

  1. Alarmstatuszeile löschen/nicht anzeigen
    By jenny in forum zenon Supervisor
    Replies: 2
    Last Post: 17th February 2014, 14:24
  2. Archivdaten kopieren
    By zero in forum zenon Supervisor
    Replies: 2
    Last Post: 10th July 2012, 10:28
  3. Archivdaten zurücklesen aus SQL - Datenbank
    By dftchristian in forum VBA
    Replies: 4
    Last Post: 13th August 2009, 15:54
  4. Archivdaten in ETM anzeigen
    By kwb in forum zenon Supervisor
    Replies: 1
    Last Post: 17th December 2008, 11:36

Posting Rules

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •