'''
''' Verbindungseditor: Verbindet 2 Domain-Tables in einer dritten Tabelle.
'''
'''
'''
Public Class frmVerbindungEditor
#Region "Deklarationen"
Dim Fokus As Integer = 1
Dim Domaintableleft As TKB.VV.Sysadmin.DomainTable
Dim Domaintableright As TKB.VV.Sysadmin.DomainTable
Dim domaintablebottom As TKB.VV.Sysadmin.DomainTable
Dim SpaltenTitel As New TKB.VV.Utils.Tabellenspalte
Dim SysadminfunktionNr As Integer
Dim TablenameLeft As String
Dim TablenameRight As String
Dim TablenameBottom As String
Dim first As Boolean = True
Dim msg As New TKB.VV.Utils.MyMessage
#End Region
'''
''' Laden der linken und rechten Tabelle
'''
'''
'''
'''
'''
'''
Public Sub New(ByVal TableLeft As String, ByVal TableRight As String, ByVal TableBottom As String, ByVal SysadminfnktNr As Integer)
InitializeComponent()
Me.Domaintableleft = New TKB.VV.Sysadmin.DomainTable(TableLeft)
Me.Domaintableright = New TKB.VV.Sysadmin.DomainTable(TableRight)
Me.TablenameLeft = TableLeft
Me.TablenameRight = TableRight
Me.TablenameBottom = TableBottom
Me.SysadminfunktionNr = SysadminfnktNr
End Sub
'''
''' Laden sämlticher Tabellen
'''
'''
'''
'''
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
End Sub
'''
''' Aktualiserung der Verbindungstabelle
'''
'''
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 TKB.VV.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
'''
''' Linker Fokus-Knopf betätigt
'''
'''
'''
'''
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
'''
''' Rechter Fokus-Knopf betätigt
'''
'''
'''
'''
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
'''
''' Prüfung, ob Verbindungstabelle geändert wurde.
'''
'''
Private Sub check_changes()
If first Then Exit Sub
Dim msgres As MsgBoxResult
If Me.domaintablebottom.Tabledata.HasChanges Then
msgres = msg.Show_MessageYesNo(3)
If msgres = MsgBoxResult.Yes Then
Me.domaintablebottom.Save_Data()
End If
End If
End Sub
'''
''' Formular schliessen
'''
'''
'''
'''
Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
check_changes()
Me.Close()
End Sub
'''
''' Formular schliessen
'''
'''
'''
'''
Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click
check_changes()
Me.Close()
End Sub
'''
''' Formular-Resize: Button Verbinden und Button Focus-Rechts neu positionieren
'''
'''
'''
'''
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
'''
''' Verbindungstabelle sichern
'''
'''
'''
'''
Private Sub TSBtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnSave.Click
Me.domaintablebottom.Save_Data()
End Sub
'''
''' Nach Datenmutation der unteren Tabelle mutiert_am und mutierer nachführen
'''
'''
'''
'''
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.clsmitarbeiter.iMitarbeiternr.Value
Next
End Sub
'''
''' Doppelklick in linken Grid
'''
'''
'''
'''
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
'''
''' Linke Tabelle angeklickt
'''
'''
'''
'''
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
'''
''' Doppelklick im rechten Grid
'''
'''
'''
'''
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
'''
''' Rechte Tabelle angeklickt
'''
'''
'''
'''
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
'''
''' Die linke und rechte Domain-Table in der unteren Tabelle verbinden.
''' Daten sichern und erneut laden
'''
'''
'''
'''
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
Next
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()
Me.Refresh_Bottomtable()
End Sub
'''
''' Anzeige allfälliger Cellen-Tips
'''
'''
'''
'''
Private Sub C1DatenBottom_FetchCellTips(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.FetchCellTipsEventArgs) Handles C1DatenBottom.FetchCellTips
Dim ts As New TKB.VV.Utils.Tabellenspalte
ts.Tabelle = Me.TablenameBottom
Try
ts.Feld = Me.C1DatenBottom.Columns(e.ColIndex).DataField.ToString
ts.getspalte()
e.CellTip = ts.TipText
Catch
End Try
ts = Nothing
End Sub
End Class