DatenarchivArchiv, log

This commit is contained in:
2026-10-19 07:57:29 +02:00
parent 68bf284a8e
commit e2d177e09e
2 changed files with 108 additions and 28 deletions

View File

@@ -47,6 +47,8 @@ Partial Class frmDatenarchivarchiv
Me.MyTextBox1 = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.MyTextBox1 = New VERAG_PROG_ALLGEMEIN.MyTextBox()
Me.Label11 = New System.Windows.Forms.Label() Me.Label11 = New System.Windows.Forms.Label()
Me.Label12 = New System.Windows.Forms.Label() Me.Label12 = New System.Windows.Forms.Label()
Me.RichTextBox1 = New System.Windows.Forms.RichTextBox()
Me.Label13 = New System.Windows.Forms.Label()
Me.SuspendLayout() Me.SuspendLayout()
' '
'ProgressBar1 'ProgressBar1
@@ -58,12 +60,12 @@ Partial Class frmDatenarchivarchiv
' '
'Label1 'Label1
' '
Me.Label1.AutoSize = True Me.Label1.Location = New System.Drawing.Point(528, 196)
Me.Label1.Location = New System.Drawing.Point(350, 177)
Me.Label1.Name = "Label1" Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(24, 13) Me.Label1.Size = New System.Drawing.Size(165, 55)
Me.Label1.TabIndex = 1 Me.Label1.TabIndex = 1
Me.Label1.Text = "0/0" Me.Label1.Text = "0/0"
Me.Label1.TextAlign = System.Drawing.ContentAlignment.BottomCenter
' '
'Label2 'Label2
' '
@@ -131,7 +133,7 @@ Partial Class frmDatenarchivarchiv
'Button1 'Button1
' '
Me.Button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.Button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Button1.Location = New System.Drawing.Point(278, 198) Me.Button1.Location = New System.Drawing.Point(528, 259)
Me.Button1.Name = "Button1" Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(165, 33) Me.Button1.Size = New System.Drawing.Size(165, 33)
Me.Button1.TabIndex = 14 Me.Button1.TabIndex = 14
@@ -405,12 +407,31 @@ Partial Class frmDatenarchivarchiv
Me.Label12.TabIndex = 21 Me.Label12.TabIndex = 21
Me.Label12.Text = "Monat:" Me.Label12.Text = "Monat:"
' '
'RichTextBox1
'
Me.RichTextBox1.Location = New System.Drawing.Point(29, 196)
Me.RichTextBox1.Name = "RichTextBox1"
Me.RichTextBox1.Size = New System.Drawing.Size(493, 96)
Me.RichTextBox1.TabIndex = 23
Me.RichTextBox1.Text = ""
'
'Label13
'
Me.Label13.AutoSize = True
Me.Label13.Location = New System.Drawing.Point(26, 180)
Me.Label13.Name = "Label13"
Me.Label13.Size = New System.Drawing.Size(46, 13)
Me.Label13.TabIndex = 24
Me.Label13.Text = "Errorlog:"
'
'frmDatenarchivarchiv 'frmDatenarchivarchiv
' '
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.White Me.BackColor = System.Drawing.Color.White
Me.ClientSize = New System.Drawing.Size(722, 239) Me.ClientSize = New System.Drawing.Size(722, 304)
Me.Controls.Add(Me.Label13)
Me.Controls.Add(Me.RichTextBox1)
Me.Controls.Add(Me.Label11) Me.Controls.Add(Me.Label11)
Me.Controls.Add(Me.Label12) Me.Controls.Add(Me.Label12)
Me.Controls.Add(Me.MyTextBox1) Me.Controls.Add(Me.MyTextBox1)
@@ -468,4 +489,6 @@ Partial Class frmDatenarchivarchiv
Friend WithEvents MyTextBox1 As VERAG_PROG_ALLGEMEIN.MyTextBox Friend WithEvents MyTextBox1 As VERAG_PROG_ALLGEMEIN.MyTextBox
Friend WithEvents Label11 As Label Friend WithEvents Label11 As Label
Friend WithEvents Label12 As Label Friend WithEvents Label12 As Label
Friend WithEvents RichTextBox1 As RichTextBox
Friend WithEvents Label13 As Label
End Class End Class

View File

@@ -5,6 +5,8 @@ Public Class frmDatenarchivarchiv
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try Try
Me.Cursor = Cursors.WaitCursor Me.Cursor = Cursors.WaitCursor
@@ -17,6 +19,7 @@ Public Class frmDatenarchivarchiv
If Not Date.TryParse(txtVon._value, datumVon) Then Exit Sub If Not Date.TryParse(txtVon._value, datumVon) Then Exit Sub
If Not Date.TryParse(txtBis._value, datumBis) Then Exit Sub If Not Date.TryParse(txtBis._value, datumBis) Then Exit Sub
If datumVon.Date > datumBis.Date Then Exit Sub If datumVon.Date > datumBis.Date Then Exit Sub
If datumBis.Date = Date.MaxValue.Date Then Exit Sub
If String.IsNullOrWhiteSpace(txtKategorie.Text) Then Exit Sub If String.IsNullOrWhiteSpace(txtKategorie.Text) Then Exit Sub
If String.IsNullOrWhiteSpace(txtOrdner.Text) Then Exit Sub If String.IsNullOrWhiteSpace(txtOrdner.Text) Then Exit Sub
@@ -38,23 +41,39 @@ Public Class frmDatenarchivarchiv
Dim DT = SQL.loadDgvBySql(sqlText, "FMZOLL") Dim DT = SQL.loadDgvBySql(sqlText, "FMZOLL")
If DT Is Nothing OrElse DT.Rows.Count = 0 Then Exit Sub If DT Is Nothing OrElse DT.Rows.Count = 0 Then
MsgBox("Keine Einträge gefunden.", vbInformation)
Exit Sub
End If
If MsgBox("Es werden '" & DT.Rows.Count & "' Einträge verschoben - fortfahren?", vbYesNoCancel) <> vbYes Then Exit Sub If MsgBox("Es werden '" & DT.Rows.Count & "' Einträge verschoben - fortfahren?", vbYesNoCancel) <> vbYes Then Exit Sub
Button1.Enabled = False
RichTextBox1.Clear()
ProgressBar1.Minimum = 0 ProgressBar1.Minimum = 0
ProgressBar1.Maximum = DT.Rows.Count ProgressBar1.Maximum = DT.Rows.Count
ProgressBar1.Value = 0 ProgressBar1.Value = 0
Dim erfolgreich As Integer = 0 Dim erfolgreich As Integer = 0
Dim fehler As Integer = 0 Dim fehler As Integer = 0
Dim fehlerListe As New List(Of String)
Dim angezeigteFehler As Integer = 0
Dim logOrdner = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "AVISO", "ArchivMigration")
System.IO.Directory.CreateDirectory(logOrdner)
Dim logPfad As String = System.IO.Path.Combine(logOrdner, "ArchivFehler_" & Date.Now.ToString("yyyyMMdd_HHmmss") & ".txt")
System.IO.File.WriteAllText(logPfad, "Archivmigration gestartet: " & Date.Now.ToString("dd.MM.yyyy HH:mm:ss") & Environment.NewLine & Environment.NewLine, System.Text.Encoding.UTF8)
Dim sw As Stopwatch = Stopwatch.StartNew()
For Each ROW As DataRow In DT.Rows For Each ROW As DataRow In DT.Rows
Try Try
Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(ROW("da_id")) Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(ROW("da_id"))
If DS.DATA_LIST.LIST.Count > 0 Then If DS.DATA_LIST.LIST.Count > 0 Then
If DS.moveTo_ARCHIVARCHIV() Then If DS.moveTo_ARCHIVARCHIV(fehlerListe, logPfad) Then
erfolgreich += 1 erfolgreich += 1
Else Else
fehler += 1 fehler += 1
@@ -63,30 +82,68 @@ Public Class frmDatenarchivarchiv
Catch ex2 As Exception Catch ex2 As Exception
fehler += 1 fehler += 1
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex2.Message, "da_id: " & ROW("da_id").ToString() & vbNewLine & ex2.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name) Dim eintrag = Date.Now.ToString("dd.MM.yyyy HH:mm:ss") & " | FEHLER | da_id=" & ROW("da_id").ToString() & " | " & ex2.Message
fehlerListe.Add(eintrag)
System.IO.File.AppendAllText(logPfad, eintrag & Environment.NewLine, System.Text.Encoding.UTF8)
End Try End Try
ProgressBar1.Value += 1 ' Neue Fehler laufend in RichTextBox1 anzeigen
Label1.Text = ProgressBar1.Value & "/" & DT.Rows.Count & " | Fehler: " & fehler If fehlerListe.Count > angezeigteFehler Then
For i As Integer = angezeigteFehler To fehlerListe.Count - 1
If DT.Rows.Count < 10 OrElse ProgressBar1.Value Mod 20 = 0 Then RichTextBox1.AppendText(fehlerListe(i) & Environment.NewLine)
Me.Refresh()
End If
Next Next
angezeigteFehler = fehlerListe.Count
RichTextBox1.SelectionStart = RichTextBox1.TextLength
RichTextBox1.ScrollToCaret()
RichTextBox1.Refresh()
End If
' Fortschritt und Statistik aktualisieren
ProgressBar1.Value += 1
Dim laufzeit As TimeSpan = sw.Elapsed
Dim dauer As String = String.Format("{0:00}:{1:00}:{2:00}", CInt(Math.Floor(laufzeit.TotalHours)), laufzeit.Minutes, laufzeit.Seconds)
Label1.Text = ProgressBar1.Value & "/" & DT.Rows.Count & vbNewLine &
"Erfolgreich: " & erfolgreich & vbNewLine &
"Fehler: " & fehler & vbNewLine &
"Laufzeit: " & dauer
ProgressBar1.Refresh()
Label1.Refresh()
' UI-Ereignisse verarbeiten, damit die Anzeige aktuell bleibt
Application.DoEvents()
Next
sw.Stop()
System.IO.File.AppendAllText(logPfad, Environment.NewLine &
"Archivmigration beendet: " & Date.Now.ToString("dd.MM.yyyy HH:mm:ss") &
" | Erfolgreich: " & erfolgreich &
" | Fehler: " & fehler &
" | Laufzeit: " & sw.Elapsed.ToString("hh\:mm\:ss") &
Environment.NewLine, System.Text.Encoding.UTF8)
MsgBox("Archivierung abgeschlossen." & vbNewLine & MsgBox("Archivierung abgeschlossen." & vbNewLine &
"Erfolgreich: " & erfolgreich & vbNewLine & "Erfolgreich: " & erfolgreich & vbNewLine &
"Fehler: " & fehler, vbInformation) "Datensätze mit Fehlern: " & fehler & vbNewLine &
"Einzelne Fehler: " & fehlerListe.Count & vbNewLine &
"Laufzeit: " & sw.Elapsed.ToString("hh\:mm\:ss") & vbNewLine & vbNewLine &
"Fehlerprotokoll: " & logPfad, vbInformation)
Catch ex As Exception Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name) VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name)
Finally Finally
Button1.Enabled = True
Me.Cursor = Cursors.Default Me.Cursor = Cursors.Default
End Try End Try
End Sub End Sub
Private Sub frmDatenarchivarchiv_Load(sender As Object, e As EventArgs) Handles Me.Load Private Sub frmDatenarchivarchiv_Load(sender As Object, e As EventArgs) Handles Me.Load
Dim monate As New List(Of VERAG_PROG_ALLGEMEIN.MyListItem) Dim monate As New List(Of VERAG_PROG_ALLGEMEIN.MyListItem)