You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

342 lines
13 KiB

''' <summary>
''' Verbindungseditor: Verbindet 2 Domain-Tables in einer dritten Tabelle.
''' </summary>
''' <remarks></remarks>
'''<seealso cref="T:Vertragsverwaltung.TKB.VV.Sysadmin.DomainTable"></seealso>
Public Class frmVerbindungEditor
#Region "Deklarationen"
Dim Fokus As Integer = 1
Dim Domaintableleft As Sysadmin.DomainTable
Dim Domaintableright As Sysadmin.DomainTable
Dim domaintablebottom As Sysadmin.DomainTable
Dim SpaltenTitel As New EDOKA.Tabellenspalte
Dim SysadminfunktionNr As Integer
Dim TablenameLeft As String
Dim TablenameRight As String
Dim TablenameBottom As String
Dim first As Boolean = True
#End Region
''' <summary>
''' Laden der linken und rechten Tabelle
''' </summary>
''' <param name="TableLeft"></param>
''' <param name="TableRight"></param>
''' <param name="TableBottom"></param>
''' <param name="SysadminfnktNr"></param>
''' <remarks></remarks>
Public Sub New(ByVal TableLeft As String, ByVal TableRight As String, ByVal TableBottom As String, ByVal SysadminfnktNr As Integer)
InitializeComponent()
Me.Domaintableleft = New Sysadmin.DomainTable(TableLeft)
Me.Domaintableright = New Sysadmin.DomainTable(TableRight)
Me.TablenameLeft = TableLeft
Me.TablenameRight = TableRight
Me.TablenameBottom = TableBottom
Me.SysadminfunktionNr = SysadminfnktNr
End Sub
''' <summary>
''' Laden sämlticher Tabellen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub FrmVerbindungEditor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.C1DatenLeft.DataSource = Domaintableleft.Tabledata
Me.C1DatenLeft.DataMember = Domaintableleft.Tabledata.Tables(0).TableName
Me.C1DatenRight.DataSource = Domaintableright.Tabledata
Me.C1DatenRight.DataMember = Domaintableright.Tabledata.Tables(0).TableName
'SpaltenTitel.Spaltentitel_aktualisieren(Me.C1DatenLeft, TablenameLeft, Me.Domaintableleft.Tabledata)
'SpaltenTitel.Spaltentitel_aktualisieren(Me.C1DatenRight, TablenameRight, Me.Domaintableright.Tabledata)
Refresh_Bottomtable()
Me.C1DatenLeft.AllowAddNew = False
Me.C1DatenLeft.AllowDelete = False
Me.C1DatenLeft.AllowUpdate = False
Me.C1DatenRight.AllowAddNew = False
Me.C1DatenRight.AllowDelete = False
Me.C1DatenRight.AllowUpdate = False
Me.C1DatenBottom.AllowAddNew = False
Me.C1DatenBottom.AllowDelete = False
Me.GrpBoxLeft.Text = Me.TablenameLeft
Me.GrpBoxRight.Text = Me.TablenameRight
Me.GrpBoxBottom.Text = Me.TablenameBottom
first = False
If TablenameBottom = "Dokumentaufhebung" Or TablenameBottom = "dokumentindexmutation" Then
CtxMenuDokumentaufhebung.Visible = True
Else
CtxMenuDokumentaufhebung.Visible = False
End If
End Sub
''' <summary>
''' Aktualiserung der Verbindungstabelle
''' </summary>
''' <remarks></remarks>
Private Sub Refresh_Bottomtable()
Try
check_changes()
Me.domaintablebottom.dispose()
Catch
End Try
Dim keyvalue As String = ""
If Fokus = 1 Then
keyvalue = Me.C1DatenLeft.Columns(0).Value
Else
keyvalue = Me.C1DatenRight.Columns(0).Value
End If
Me.domaintablebottom = New Sysadmin.DomainTable(Me.TablenameBottom, Fokus, keyvalue)
Me.C1DatenBottom.DataSource = domaintablebottom.Tabledata
Me.C1DatenBottom.DataMember = domaintablebottom.Tabledata.Tables(0).TableName
'SpaltenTitel.Spaltentitel_aktualisieren(Me.C1DatenBottom, TablenameBottom, Me.domaintablebottom.Tabledata)
End Sub
''' <summary>
''' Linker Fokus-Knopf betätigt
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub BtnFocusLeft_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnFocusLeft.Click
Fokus = 1
Me.BtnFocusLeft.ImageIndex = 1
Me.BtnFocusRight.ImageIndex = 2
Refresh_Bottomtable()
End Sub
''' <summary>
''' Rechter Fokus-Knopf betätigt
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub BtnFocusRight_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnFocusRight.Click
Me.Fokus = 2
Me.BtnFocusRight.ImageIndex = 1
Me.BtnFocusLeft.ImageIndex = 2
Refresh_Bottomtable()
End Sub
''' <summary>
''' Prüfung, ob Verbindungstabelle geändert wurde.
''' </summary>
''' <remarks></remarks>
Private Sub check_changes()
If first Then Exit Sub
Dim msgres As MsgBoxResult
If Me.domaintablebottom.Tabledata.HasChanges Then
msgres = MsgBox("Daten wurden verändert.Speichern?", vbYesNoCancel + vbQuestion)
If msgres = MsgBoxResult.Yes Then
Me.domaintablebottom.Save_Data()
End If
End If
End Sub
''' <summary>
''' Formular schliessen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
check_changes()
Me.Close()
End Sub
''' <summary>
''' Formular schliessen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click
check_changes()
Me.Close()
End Sub
''' <summary>
''' Formular-Resize: Button Verbinden und Button Focus-Rechts neu positionieren
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub FrmVerbindungEditor_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
Me.BtnFocusRight.Left = Me.Width - (Me.BtnFocusRight.Width + 10)
Me.BtnVerbinden.Left = Me.SplitContainer2.Panel1.Width - (Me.BtnVerbinden.Width / 2)
End Sub
''' <summary>
''' Verbindungstabelle sichern
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TSBtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnSave.Click
Me.domaintablebottom.Save_Data()
End Sub
''' <summary>
''' Nach Datenmutation der unteren Tabelle mutiert_am und mutierer nachführen
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub C1DatenBottom_AfterColUpdate(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.ColEventArgs) Handles c1DatenBottom.AfterColUpdate
Dim i As Integer
For i = 0 To Me.c1DatenBottom.Columns.Count - 1
If LCase(Me.c1DatenBottom.Columns(i).DataField) = "mutiert_am" Then Me.c1DatenBottom.Columns(i).Value = Now
If LCase(Me.c1DatenBottom.Columns(i).DataField) = "mutierer" Then Me.c1DatenBottom.Columns(i).Value = Globals.MitarbeiterNr
Next
End Sub
''' <summary>
''' Doppelklick in linken Grid
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub C1DatenLeft_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles c1DatenLeft.DoubleClick
Try
Me.BtnVerbinden_Click(sender, e)
Catch
End Try
End Sub
''' <summary>
''' Linke Tabelle angeklickt
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TBLeft_Click(ByVal sender As System.Object, ByVal e As C1.Win.C1TrueDBGrid.RowColChangeEventArgs) Handles c1DatenLeft.RowColChange
Try
check_changes()
Refresh_Bottomtable()
Catch
End Try
End Sub
''' <summary>
''' Doppelklick im rechten Grid
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub C1DatenRight_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles c1DatenRight.DoubleClick
Try
Me.BtnVerbinden_Click(sender, e)
Catch ex As Exception
End Try
End Sub
''' <summary>
''' Rechte Tabelle angeklickt
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub TBRight_Click(ByVal sender As System.Object, ByVal e As C1.Win.C1TrueDBGrid.RowColChangeEventArgs) Handles c1DatenRight.RowColChange
check_changes()
Refresh_Bottomtable()
End Sub
''' <summary>
''' Die linke und rechte Domain-Table in der unteren Tabelle verbinden.
''' Daten sichern und erneut laden
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
Private Sub BtnVerbinden_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnVerbinden.Click
check_changes()
Dim ileft As Integer = Me.C1DatenLeft.SelectedRows.Count
Dim iright As Integer = Me.C1DatenRight.SelectedRows.Count
Dim ic As Integer = 0
Dim Currentsel As Boolean
Dim colrows As C1.Win.C1TrueDBGrid.SelectedRowCollection
Dim keyvalueleft As Integer = 0
Dim Keyvalueright As Integer = 0
If (Me.Fokus = 1 And ileft > 1) Or (Me.Fokus = 2 And iright > 1) Then
'Me.msg.show_standardmessage(4, MsgBoxStyle.Exclamation)
Exit Sub
End If
If Me.Fokus = 1 Then
ic = iright
colrows = Me.C1DatenRight.SelectedRows
End If
If Me.Fokus = 2 Then
ic = ileft
colrows = Me.C1DatenLeft.SelectedRows
End If
If ic = 0 Then
ic = ic + 1
Currentsel = True
End If
Dim i As Integer
For i = 0 To ic - 1
If Me.Fokus = 1 Then
keyvalueleft = Me.C1DatenLeft.Columns(0).Value
If Currentsel = True Then
Keyvalueright = Me.C1DatenRight.Columns(0).Value
Else
Keyvalueright = Me.C1DatenRight.Columns(0).CellValue(colrows(i))
End If
Else
Keyvalueright = Me.C1DatenRight.Columns(0).Value
If Currentsel = True Then
keyvalueleft = Me.C1DatenLeft.Columns(0).Value
Else
keyvalueleft = Me.C1DatenLeft.Columns(0).CellValue(colrows(i))
End If
End If
Me.domaintablebottom.Insert_Bottom_Table(Me.Domaintableleft.Tabledata.Tables(0).Columns(0).ColumnName, keyvalueleft, Me.Domaintableright.Tabledata.Tables(0).Columns(0).ColumnName, Keyvalueright)
Me.domaintablebottom.Save_Data()
Next
Me.Refresh_Bottomtable()
End Sub
Private Sub VonDokumenttypKopierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles VonDokumenttypKopierenToolStripMenuItem.Click
If Me.Fokus <> 1 Then
MsgBox("Bitte den Fokus der Tabellen wechseln.")
Exit Sub
End If
Dim s As String
check_changes()
s = InputBox("Bitte geben Sie die Dokumenttyp-Nr. ein, zu welcher die Daten kopiert werden sollen." + vbCrLf + "Von Dokumenttyp: " + Me.c1DatenLeft.Columns(0).Value.ToString + " nach...")
If s <> "" Then
Dim ileft As Integer = Me.c1DatenLeft.SelectedRows.Count
Dim iright As Integer = Me.c1DatenRight.Splits(0).Rows.Count
Dim ic As Integer = 0
Dim Currentsel As Boolean
Dim colrows As C1.Win.C1TrueDBGrid.SelectedRowCollection
Dim keyvalueleft As Integer = 0
Dim Keyvalueright As Integer = 0
If (Me.Fokus = 1 And ileft > 1) Or (Me.Fokus = 2 And iright > 1) Then
'Me.msg.show_standardmessage(4, MsgBoxStyle.Exclamation)
Exit Sub
End If
Dim i As Integer
For i = 0 To Me.domaintablebottom.Tabledata.Tables(0).Rows.Count - 1
If Me.domaintablebottom.Tabledata.Tables(0).Rows(i).Item("Aktiv") = True Then
keyvalueleft = s
Keyvalueright = domaintablebottom.Tabledata.Tables(0).Rows(i).Item(3)
Me.domaintablebottom.Insert_Bottom_Table(Me.Domaintableleft.Tabledata.Tables(0).Columns(0).ColumnName, keyvalueleft, Me.Domaintableright.Tabledata.Tables(0).Columns(0).ColumnName, Keyvalueright)
End If
Next
If Me.domaintablebottom.Tabledata.HasChanges Then
Me.domaintablebottom.Save_Data()
End If
Me.Refresh_Bottomtable()
MsgBox("Kopiervorgang abgeschlossen.")
End If
End Sub
End Class