Files
ADMIN/UID/usrCntlDatenarchiv.vb
2026-11-06 11:02:06 +01:00

331 lines
14 KiB
VB.net

Imports System.Windows.Documents
Imports VERAG_PROG_ALLGEMEIN
Public Class usrCntlDatenarchiv
Dim DatenarchivBind As cEasyBinding
Public table
Public BIND_DB
Private EditRow As Integer = -1
Sub New(table, BIND_DB)
Me.table = table
Me.BIND_DB = BIND_DB
InitializeComponent()
End Sub
Private Sub usrCntlDatenarchiv_Load(sender As Object, e As EventArgs) Handles Me.Load
loaddgv()
'cboPartnersystem.Items.Clear()
Dim distinctDT As DataTable = DatenarchivBind.bindingdataTable.DefaultView.ToTable(True, "Param_system")
cboPartnersystem.Items.Add(New MyListItem("", ""))
For Each d As DataRow In distinctDT.Rows
If Not cboPartnersystem.Items.Contains(d.Item(0)) Then cboPartnersystem.Items.Add(d.Item(0))
Next
End Sub
Private Sub btnSuche_Click(sender As Object, e As EventArgs) Handles btnSuche.Click
Me.Cursor = Cursors.WaitCursor
loaddgv()
Me.Cursor = Cursors.Default
End Sub
Function getAPIList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Param_system", cboPartnersystem._value))
Return list
End Function
Function getDatenarchivwhere() As String
Dim sqlstr = " and Param_testsystem = " & IIf(cbxTestsystem.Checked, "1 ", "0 ")
If cboPartnersystem._value <> "" Then sqlstr &= " And [Param_system] = '" & cboPartnersystem._value & "'"
Return sqlstr
End Function
Private Sub DataGridView_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView.CellDoubleClick
Me.Cursor = Cursors.WaitCursor
Dim tmprowindex As Integer = e.RowIndex
If DataGridView.Columns(e.ColumnIndex).Name = "open" Then
If DataGridView.CurrentRow.Cells("Param_value").Value IsNot DBNull.Value AndAlso DataGridView.CurrentRow.Cells("Param_value").Value.ToString.StartsWith("\\") Then
Process.Start(DataGridView.CurrentRow.Cells("Param_value").Value)
End If
Else
End If
Me.Cursor = Cursors.Default
End Sub
Private Sub cboPartnersystem_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboPartnersystem.SelectedIndexChanged
btnSuche_Click(sender, e)
End Sub
Public Sub loaddgv()
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = cbxTestsystem.Checked
Try
DatenarchivBind = New cEasyBinding(BIND_DB)
Dim sqlstr As String = ""
Dim TopMax = If(IsNumeric(txtMaxSrch.Text), " TOP " & txtMaxSrch.Text, "")
DatenarchivBind.initBinding("SELECT " & TopMax & " [Param_name],[Param_value], [Param_system] FROM " & table & " WHERE 1 = 1 " & getDatenarchivwhere(), table)
DataGridView.DataSource = DatenarchivBind.bindingdataTable
With DataGridView
If .RowCount = 0 Then Me.Cursor = Cursors.Default : Exit Sub
.RowHeadersVisible = False
.ReadOnly = False
'.SelectionMode = DataGridViewSelectionMode.FullRowSelect
.MultiSelect = False
For Each cc As DataGridViewColumn In .Columns
If cc.Name.ToLower.Contains("param_") Then
cc.HeaderText = cc.Name.Replace("Param_", "")
If cc.Name.ToLower.Contains("value") Then
cc.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
Else
cc.Width = 200
End If
End If
Next
lblErgebnis.Text = "Ergebnisse: " & .RowCount
If .Columns("open") Is Nothing Then
Dim c As New DataGridViewImageColumn
c.Name = "open" : c.HeaderText = "open"
c.Image = New Bitmap(1, 1)
c.Width = 40 : c.DefaultCellStyle.Padding = New Padding(2) : c.DefaultCellStyle.BackColor = Color.White
c.DefaultCellStyle.Tag = "open"
.Columns.Add(c)
End If
For Each r As DataGridViewRow In .Rows
If r.Cells("Param_value").Value IsNot DBNull.Value AndAlso r.Cells("Param_value").Value <> "" Then
Dim path As New System.IO.DirectoryInfo(r.Cells("Param_value").Value)
If path.Exists Then
DirectCast(r.Cells("open"), DataGridViewImageCell).Value = My.Resources.search
End If
End If
Next
End With
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnSave.Click
If DataGridView.Columns.Count = 0 Or DataGridView.SelectedRows.Count = 0 Then 'alles gelöscht oder markierte Zeile gelöscht
DatenarchivBind.updateBinding()
Exit Sub
End If
If DataGridView.CurrentRow.Cells("Param_name").ToString <> "" AndAlso DataGridView.CurrentRow.Cells("Param_value").ToString <> "" AndAlso DataGridView.CurrentRow.Cells("Param_system").ToString <> "" AndAlso EditRow >= 0 Then
DatenarchivBind.updateBinding()
End If
End Sub
Private Sub DataGridView_EditingControlShowing(sender As Object, e As DataGridViewEditingControlShowingEventArgs) Handles DataGridView.EditingControlShowing
EditRow = DataGridView.CurrentRow.Index
End Sub
Private Sub DataGridView_SelectionChanged(sender As Object, e As EventArgs) Handles DataGridView.SelectionChanged
If EditRow >= 0 Then
Dim new_row As Integer = EditRow
EditRow = -1
DataGridView.CurrentCell = DataGridView.Rows(new_row).Cells(
DataGridView.CurrentCell.ColumnIndex)
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim jahr As Integer = 2026
'Dim zupruefendeDokumente As String = " select top(100000) * from [tblDatenarchiv_Collection] where Year(coll_date) = " & jahr & " and coll_archiv = 0 and isnull(coll_pfad,'') <> '' order by coll_date desc "
Dim zupruefendeDokumente As String = " select top(100000) * from [tblDatenarchiv_Collection] where cast(coll_date as Date) = '29.10.2026' and coll_archiv = 0 and isnull(coll_pfad,'') <> '' order by coll_date desc "
VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Dim Datenarchiv_DOKS As DataTable = SQL.loadDgvBySql(zupruefendeDokumente, "FMZOLL")
Dim dtFehlendeDOKS = Datenarchiv_DOKS.Clone()
Dim listOfSources As New List(Of String)
Dim listOfCOLL_DAID As New List(Of Integer)
If Datenarchiv_DOKS.Rows.Count > 0 Then
For Each r As DataRow In Datenarchiv_DOKS.Rows
If r.Item("coll_pfad") <> "" Then
If Not System.IO.File.Exists(r.Item("coll_pfad")) Then
dtFehlendeDOKS.ImportRow(r)
lblfehlendeDokumente.Text = "fehlende DOK.: " & dtFehlendeDOKS.Rows.Count
addToLlist(listOfSources, listOfCOLL_DAID, r)
'Me.Refresh()
If dtFehlendeDOKS.Rows.Count >= 1000 Then Exit For
End If
End If
lblWorkingArea.Text = "geprüft DOK.: : " & Datenarchiv_DOKS.Rows.IndexOf(r) & "/" & Datenarchiv_DOKS.Rows.Count
Me.Refresh()
Next
If dtFehlendeDOKS.Rows.Count > 0 Then
MsgBox("Es existieren " & dtFehlendeDOKS.Rows.Count & " Datenarchiv-Datensätze, die kein zugeordnetes Dokument besitzen!")
VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dtFehlendeDOKS,,,,, True,,, True)
Dim deleted As Boolean = False
If vbYes = MsgBox("Sollen diese Datenarchiveinträge gelöscht werden?" & vbNewLine & "Bitte vorher Excelliste prüfen!", vbYesNo) Then
Dim Where As String = ""
For Each DAID In listOfCOLL_DAID
Where &= DAID & ","
Next
Where = Where.Substring(0, Where.Length - 1)
deleted = SQL.doSQL("DELETE FROM [tblDatenarchiv_Collection] WHERE [coll_daId] in (" & Where & ")", "FMZOLL")
deleted = SQL.doSQL("DELETE FROM [tblDatenarchiv] WHERE [da_id] in (" & Where & ")", "FMZOLL")
If deleted Then
For Each source In listOfSources
'Hier muss die DA-ID in der verknüpften Tabelle auf NULL gesetzt werden!
Select Case source
Case "AVISO_ANHAENGE" : SQL.doSQL("UPDATE tblAvisoAnhaenge set tblAvisoAnhaenge.anh_docId = NULL where tblAvisoAnhaenge.anh_docId in (" & Where & ")", "AVISO") ' -> Eintrag auch gleich löschen- > NEIN nur DA_ID laut Andreas, wegen Nachvollziehbarkeit: 05.11.2026
'Case "UID_PRUEFUNG"; EORI_PRUEFUNG -> Über AVISO-Anhänge
Case "RECHNUNGEN" : SQL.doSQL("UPDATE Rechnungsausgang set Rechnungsausgang.dsId = NULL where Rechnungsausgang.dsId in (" & Where & ")", "FMZOLL")
Case "ZUGFERD" : SQL.doSQL("UPDATE Rechnungsausgang set Rechnungsausgang.zugferdcheck_daid = NULL where Rechnungsausgang.zugferdcheck_daid in (" & Where & ")", "FMZOLL")
Case "CREDITSAFE" : SQL.doSQL("UPDATE tblBonitaetsauskunft set tblBonitaetsauskunft.ba_datenarchivId = NULL where tblBonitaetsauskunft.ba_datenarchivId in (" & Where & ")", "FMZOLL")
'3x weil 3 versch. Felder!
Case "VOLLMACHTEN"
SQL.doSQL("UPDATE tblKundenVollmachten set tblKundenVollmachten.kdvm_datenarchivId = NULL where tblKundenVollmachten.kdvm_datenarchivId in (" & Where & ")", "FMZOLL")
SQL.doSQL("UPDATE tblKundenVollmachten set tblKundenVollmachten.kdvm_emailId = NULL where tblKundenVollmachten.kdvm_emailId in (" & Where & ")", "FMZOLL")
SQL.doSQL("UPDATE tblKundenVollmachten set tblKundenVollmachten.kdvm_datenarchivId_2 = NULL where tblKundenVollmachten.kdvm_datenarchivId_2 in (" & Where & ")", "FMZOLL")
'MDM
Case "USTVA" : SQL.doSQL("UPDATE tblUStVPositionen set tblUStVPositionen.UStVPo_daId = NULL where UStVPo_daId_loeschbar = 1 AND tblUStVPositionen.UStVPo_daId in (" & Where & ")", "FMZOLL")
Case "USTVERS" : SQL.doSQL("UPDATE tblUStVErstattung set tblUStVErstattung.UStVEr_daId = NULL where tblUStVErstattung.UStVEr_daId in (" & Where & ")", "FMZOLL")
End Select
Next
End If
If deleted Then
MsgBox("Daten wurden erfolgreich bereinigt!")
Else
MsgBox("Fehler beim Bereinigen der Daten!")
End If
End If
Else
MsgBox("Es wurden keine fehlenden Dokumente gefunden!")
End If
End If
End Sub
Private Sub addToLlist(listOfSources As List(Of String), listOfCOLL_DAID As List(Of Integer), r As DataRow)
Dim da_id As Integer
If Not IsDBNull(r.Item("coll_daId")) AndAlso Integer.TryParse(Convert.ToString(r.Item("coll_daId")).Trim(), da_id) Then
If Not listOfCOLL_DAID.Contains(da_id) Then
listOfCOLL_DAID.Add(da_id)
End If
End If
If r.Item("coll_pfad").ToString.Contains("AVISO_ANHAENGE") Then
If Not listOfSources.Contains("AVISO_ANHAENGE") Then listOfSources.Add("AVISO_ANHAENGE")
ElseIf r.Item("coll_pfad").ToString.Contains("RECHNUNGEN") Then
If Not listOfSources.Contains("RECHNUNGEN") Then listOfSources.Add("RECHNUNGEN")
ElseIf r.Item("coll_pfad").ToString.Contains("CHAT_ANHAENGE") Then
If Not listOfSources.Contains("CHAT_ANHAENGE") Then listOfSources.Add("CHAT_ANHAENGE")
ElseIf r.Item("coll_pfad").ToString.Contains("VOLLMACHTEN") Then
If Not listOfSources.Contains("VOLLMACHTEN") Then listOfSources.Add("VOLLMACHTEN")
ElseIf r.Item("coll_pfad").ToString.Contains("CREDITSAFE") Then
If Not listOfSources.Contains("CREDITSAFE") Then listOfSources.Add("CREDITSAFE")
ElseIf r.Item("coll_pfad").ToString.Contains("ZUGFERD") Then
If Not listOfSources.Contains("ZUGFERD") Then listOfSources.Add("ZUGFERD")
ElseIf r.Item("coll_pfad").ToString.Contains("KD_VERTRÄGE") Then
If Not listOfSources.Contains("KD_VERTRÄGE") Then listOfSources.Add("KD_VERTRÄGE")
ElseIf r.Item("coll_pfad").ToString.Contains("ZOLLDATEN") AndAlso r.Item("coll_pfad").ToString.Contains("DAKOSY") Then
If Not listOfSources.Contains("ZOLLDATEN") Then listOfSources.Add("ZOLLDATEN_DAKOSY")
ElseIf r.Item("coll_pfad").ToString.Contains("UID_PRUEFUNG") Then
If Not listOfSources.Contains("UID_PRUEFUNG") Then listOfSources.Add("UID_PRUEFUNG")
ElseIf r.Item("coll_pfad").ToString.Contains("EORI_PRUEFUNG") Then
If Not listOfSources.Contains("EORI_PRUEFUNG") Then listOfSources.Add("EORI_PRUEFUNG")
End If
'MDM-Spezifisch
If r.Item("coll_pfad").ToString.Contains("USTVERS_") AndAlso r.Item("coll_pfad").ToString.Contains("MDM") Then
If Not listOfSources.Contains("USTVERS_") Then listOfSources.Add("USTVERS")
End If
If r.Item("coll_pfad").ToString.Contains("USTVA_") AndAlso r.Item("coll_pfad").ToString.Contains("MDM") Then
If Not listOfSources.Contains("USTVA_") Then listOfSources.Add("USTVA")
End If
End Sub
End Class