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.

316 lines
12 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 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
''' <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 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
''' <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
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 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
''' <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 = msg.Show_MessageYesNo(3)
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.clsmitarbeiter.iMitarbeiternr.Value
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
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
''' <summary>
''' Anzeige allfälliger Cellen-Tips
''' </summary>
''' <param name="sender"></param>
''' <param name="e"></param>
''' <remarks></remarks>
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