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.
379 lines
19 KiB
379 lines
19 KiB
Imports C1.Win.C1TrueDBGrid
|
|
Imports System
|
|
Imports System.Data
|
|
Imports System.Data.SqlTypes
|
|
Imports System.Data.SqlClient
|
|
Namespace TKB.VV.Vertrag
|
|
|
|
Public Class clsVertragsuebersicht_Strukturen
|
|
Dim TreeData As New DataTable
|
|
|
|
Public fnt_Strikeout As Font
|
|
Public fnt_normal As Font
|
|
|
|
Dim SelectionType As String
|
|
''' <summary>
|
|
''' Treedaten auselsen
|
|
''' </summary>
|
|
''' <param name="tree"></param>
|
|
''' <param name="SelectionType">Neu: Nur noc Selectiontype "Vertragspartner"</param>
|
|
''' <param name="Aktiv">1: Nur aktive Partner
|
|
''' 0: Alle partner</param>
|
|
''' <param name="suchtype">1: Suche nach Vertragspartner
|
|
''' 2: Suche nach Vertragselement</param>
|
|
''' <param name="suchstring"></param>
|
|
''' <returns></returns>
|
|
''' <remarks></remarks>
|
|
Public Function Get_Struktur(ByRef tree As TreeView, Optional ByVal SelectionType As Integer = 0, Optional ByVal Aktiv As Boolean = True, Optional ByVal suchtype As Integer = 0, Optional ByVal suchstring As String = "", Optional ByVal partnernr As Integer = 0)
|
|
Me.TreeData = Get_Treedata(SelectionType, Aktiv, suchtype, suchstring, partnernr)
|
|
Select Case SelectionType
|
|
Case 0
|
|
Me.SelectionType = "Vertragspartner"
|
|
Case 1
|
|
Me.SelectionType = "Vertragstyp"
|
|
Case Else
|
|
Me.SelectionType = "Unknown"
|
|
End Select
|
|
Load_Tree(tree)
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Auslesen der Partner für die Vertragsuebersicht
|
|
''' </summary>
|
|
''' <param name="Selectiontype">Vertragspartner oder Vertragstyp</param>
|
|
''' <param name="aktiv">Aktiv=0</param>
|
|
''' <returns></returns>
|
|
''' <remarks></remarks>
|
|
Private Function Get_Treedata(ByVal Selectiontype As Integer, ByVal aktiv As Boolean, Optional ByVal suchtype As Integer = 0, Optional ByVal suchstring As String = "", Optional ByVal Partnernr As Integer = 0) As DataTable
|
|
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
|
|
Dim dtToReturn As DataTable = New DataTable()
|
|
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
|
|
scmCmdToExecute.CommandText = "dbo.sp_vertragsuebersicht_get_TreeRoot"
|
|
scmCmdToExecute.CommandType = CommandType.StoredProcedure
|
|
scmCmdToExecute.Connection = conn.scoDBConnection
|
|
Try
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@mitarbeiternr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.clsmitarbeiter.iMitarbeiternr.Value))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@SelectionType", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Selectiontype))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@Aktiv", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, aktiv))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@Suchtype", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, suchtype))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@SuchString", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, suchstring))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@partnernr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, partnernr))
|
|
sdaAdapter.Fill(dtToReturn)
|
|
Return dtToReturn
|
|
Catch ex As Exception
|
|
Throw New Exception("clsVertragsuebersicht::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
|
|
Finally
|
|
scmCmdToExecute.Dispose()
|
|
sdaAdapter.Dispose()
|
|
End Try
|
|
End Function
|
|
''' <summary>
|
|
''' Treeview laden und je eintrag einen "Dummy-Eintrag" erstellen
|
|
''' </summary>
|
|
''' <param name="Tree"></param>
|
|
''' <returns></returns>
|
|
''' <remarks></remarks>
|
|
Private Function Load_Tree(ByRef Tree As TreeView)
|
|
fnt_Strikeout = New System.Drawing.Font(Tree.Font.FontFamily, Tree.Font.Size, FontStyle.Strikeout)
|
|
fnt_normal = New System.Drawing.Font(Tree.Font.FontFamily, Tree.Font.Size, FontStyle.Regular)
|
|
|
|
Tree.Enabled = False
|
|
Tree.Nodes.Clear()
|
|
For Each dr As DataRow In Me.TreeData.Rows
|
|
Dim tn As New TreeNode
|
|
tn.Text = dr.Item("Description")
|
|
tn.Tag = New Treenode_Descriptor(Me.SelectionType, dr.Item("KeyValue"), dr.Item("KeyValue"), dr.Item("KeyValue"))
|
|
Select Case Me.SelectionType
|
|
Case "Vertragspartner"
|
|
If dr.Item("aktiv") = True Then
|
|
tn.ImageIndex = 0
|
|
tn.SelectedImageIndex = 0
|
|
tn.StateImageIndex = 0
|
|
Else
|
|
tn.ImageIndex = 6
|
|
tn.SelectedImageIndex = 6
|
|
tn.StateImageIndex = 6
|
|
End If
|
|
Case "Vertragstyp"
|
|
tn.ImageIndex = 1
|
|
tn.SelectedImageIndex = 1
|
|
tn.StateImageIndex = 1
|
|
End Select
|
|
Tree.Nodes.Add(tn)
|
|
Dim subtn As New TreeNode
|
|
subtn.Tag = New Treenode_Descriptor("", -99, 0, 0)
|
|
tn.Nodes.Add(subtn)
|
|
Next
|
|
Tree.Enabled = True
|
|
End Function
|
|
|
|
Dim xVertragspartnernr As Integer
|
|
''' <summary>
|
|
''' Datenstruktur für den Tree lasen
|
|
''' </summary>
|
|
''' <param name="Node">Parent-Node</param>
|
|
''' <returns></returns>
|
|
''' <remarks>Abhängig vom Type wird die Struktur nach Vertragspartner oder Vertragstyp aufgebaut</remarks>
|
|
Public Function Load_SubStruktur(ByRef Node As TreeNode, ByVal Details As Integer, ByVal Suchstring As String)
|
|
Dim x As Treenode_Descriptor = Node.Tag
|
|
Dim substrukturdata As New DataTable
|
|
Select Case x.Type
|
|
Case "Vertragspartner"
|
|
Me.xVertragspartnernr = x.Vertragspartnernr
|
|
substrukturdata = Get_SubStruktur(0, x.Vertragspartnernr, Details, suchstring)
|
|
Case "Vertragstyp"
|
|
substrukturdata = Get_SubStruktur(x.Vertragstypnr, 0, Details, suchstring)
|
|
End Select
|
|
Update_Node(substrukturdata, Node, x.Type, Details)
|
|
End Function
|
|
''' <summary>
|
|
''' Parent-Beziehung herstellen und Struktur abfüllen
|
|
''' </summary>
|
|
''' <param name="oSourceData"></param>
|
|
''' <param name="node"></param>
|
|
''' <remarks></remarks>
|
|
Private Sub Update_Node(ByVal oSourceData As DataTable, ByRef node As TreeNode, ByVal type As String, ByVal Details As Integer)
|
|
If Not (oSourceData Is Nothing) Then
|
|
Dim oView As DataView = oSourceData.DefaultView
|
|
Dim oTable As DataTable = oView.Table
|
|
Dim oDS As DataSet = New DataSet()
|
|
oDS.Tables.Add(oTable.Copy())
|
|
|
|
If oDS.Relations.Contains("SelfRefenceRelation") = False Then
|
|
oDS.Relations.Add("SelfRefenceRelation", _
|
|
oDS.Tables(0).Columns("Vertragselementnr"), _
|
|
oDS.Tables(0).Columns("Parentid"))
|
|
End If
|
|
oTable.Dispose()
|
|
oTable = Nothing
|
|
LoadNode(oDS, node, type, Details)
|
|
oDS.Dispose()
|
|
oDS = Nothing
|
|
End If
|
|
End Sub
|
|
|
|
''' <summary>
|
|
''' Tree aufbauen
|
|
''' </summary>
|
|
''' <param name="oDS">Input-Dataset</param>
|
|
''' <param name="oNode">Aktueller Node</param>
|
|
''' <param name="type">Type Vertragspartner oder Vertragstyp</param>
|
|
''' <remarks></remarks>
|
|
Private Sub LoadNode(ByVal oDS As DataSet, ByRef oNode As TreeNode, ByVal type As String, ByVal Details As Integer)
|
|
'Dim oTreeView As TreeView = New TreeView()
|
|
Dim oDataRow As DataRow
|
|
For Each oDataRow In oDS.Tables(0).Rows
|
|
If Not oDataRow.IsNull("Parentid") Then
|
|
If oDataRow.Item("Parentid") = 0 Then
|
|
'If oDataRow.IsNull("Parentid") Then
|
|
Dim oNode1 As New TreeNode()
|
|
oNode1.Text = oDataRow("Bezeichnung").ToString()
|
|
Select Case type
|
|
Case "Vertragspartner"
|
|
oNode1.Tag = New Treenode_Descriptor("Vertragstyp", oDataRow("vertragselementnr").ToString, xVertragspartnernr, oDataRow("vertragstypnr").ToString)
|
|
If oDataRow("Aktiv") = 0 Then
|
|
oNode1.ImageIndex = 7
|
|
oNode1.SelectedImageIndex = 7
|
|
oNode1.StateImageIndex = 7
|
|
oNode1.NodeFont = Me.fnt_Strikeout
|
|
Else
|
|
oNode1.NodeFont = Me.fnt_normal
|
|
oNode1.ImageIndex = 1
|
|
oNode1.SelectedImageIndex = 1
|
|
oNode1.StateImageIndex = 1
|
|
End If
|
|
Case "Vertragstyp"
|
|
If oDataRow("aktiv") = True Then
|
|
oNode1.Tag = New Treenode_Descriptor("Vertragspartner", oDataRow("vertragselementnr").ToString, xVertragspartnernr, oDataRow("vertragstypnr").ToString)
|
|
oNode1.ImageIndex = 0
|
|
oNode1.SelectedImageIndex = 0
|
|
oNode1.StateImageIndex = 0
|
|
Else
|
|
oNode1.Tag = New Treenode_Descriptor("Vertragspartner", oDataRow("vertragselementnr").ToString, xVertragspartnernr, oDataRow("vertragstypnr").ToString)
|
|
oNode1.ImageIndex = 4
|
|
oNode1.SelectedImageIndex = 4
|
|
oNode1.StateImageIndex = 4
|
|
End If
|
|
End Select
|
|
oNode.Nodes.Add(oNode1)
|
|
RecursivelyLoadNode(oDataRow, oNode1, type, Details)
|
|
End If
|
|
End If
|
|
Next oDataRow
|
|
oDS.Dispose()
|
|
oDS = Nothing
|
|
End Sub
|
|
|
|
''' <summary>
|
|
''' Child-Nodes hinzufügen
|
|
''' </summary>
|
|
''' <param name="oDataRow"></param>
|
|
''' <param name="oNode"></param>
|
|
''' <remarks></remarks>
|
|
Private Sub RecursivelyLoadNode(ByVal oDataRow As DataRow, ByRef oNode As TreeNode, ByVal type As String, ByVal Details As Integer)
|
|
Dim oChildRow As DataRow
|
|
For Each oChildRow In oDataRow.GetChildRows("SelfRefenceRelation")
|
|
Dim oChildNode As New TreeNode()
|
|
oChildNode.Text = oChildRow("Bezeichnung").ToString()
|
|
oChildNode.Tag = New Treenode_Descriptor("Vertragselement", oChildRow("Vertragselementnr").ToString(), xVertragspartnernr, oDataRow("vertragstypnr").ToString)
|
|
If oChildRow("Aktiv") = 0 Then
|
|
oChildNode.ImageIndex = 8
|
|
oChildNode.SelectedImageIndex = 8
|
|
oChildNode.StateImageIndex = 8
|
|
oChildNode.NodeFont = Me.fnt_Strikeout
|
|
Else
|
|
oChildNode.ImageIndex = 2
|
|
oChildNode.SelectedImageIndex = 2
|
|
oChildNode.StateImageIndex = 2
|
|
oChildNode.NodeFont = Me.fnt_normal
|
|
End If
|
|
oNode.Nodes.Add(oChildNode)
|
|
RecursivelyLoadNode(oChildRow, oChildNode, type, Details)
|
|
Next oChildRow
|
|
End Sub
|
|
''' <summary>
|
|
''' Laden der Substruktur
|
|
''' </summary>
|
|
''' <param name="Vertragspartnernr">Nummer des aktuellen Vertragspartners</param>
|
|
''' <returns></returns>
|
|
''' <remarks></remarks>
|
|
Private Function Get_SubStruktur(ByVal vertragstypnr As Integer, ByVal Vertragspartnernr As Integer, ByVal Details_anzeigen As Integer, ByVal Suchstring As String) As DataTable
|
|
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
|
|
Dim dtToReturn As DataTable = New DataTable()
|
|
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
|
|
scmCmdToExecute.CommandText = "dbo.sp_vertragsuebersicht_get_struktur"
|
|
scmCmdToExecute.CommandType = CommandType.StoredProcedure
|
|
scmCmdToExecute.Connection = conn.scoDBConnection
|
|
Try
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@vertragstypnr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, vertragstypnr))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@vertragspartnernr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Vertragspartnernr))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@mitarbeiternr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.clsmitarbeiter.iMitarbeiternr.Value))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@Details", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Details_anzeigen))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@Suchstring", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Suchstring))
|
|
|
|
sdaAdapter.Fill(dtToReturn)
|
|
Return dtToReturn
|
|
Catch ex As Exception
|
|
Throw New Exception("clsVertragsuebersicht::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
|
|
Finally
|
|
scmCmdToExecute.Dispose()
|
|
sdaAdapter.Dispose()
|
|
End Try
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Vertrasgdetail abhängig des gewählten Nodes auslesen
|
|
''' </summary>
|
|
''' <param name="SelectedTag"></param>
|
|
''' <param name="SelNachVertragstyp"></param>
|
|
''' <returns></returns>
|
|
''' <remarks></remarks>
|
|
Public Function Update_Vertragsuebersicht(ByVal SelectedTag As Object, Optional ByVal SelNachVertragstyp As Boolean = False, Optional ByVal Suchstring As String = "") As DataTable
|
|
Dim x As Treenode_Descriptor = SelectedTag
|
|
Select Case x.Type
|
|
Case "Vertragspartner"
|
|
Return Get_Vertragsdetails(x.Type, 0, x.Vertragspartnernr, suchstring)
|
|
Case "Vertragstyp"
|
|
If SelNachVertragstyp = True Then
|
|
Return Get_Vertragsdetails(x.Type, x.Vertragstypnr, 0, suchstring)
|
|
Else
|
|
Return Get_Vertragsdetails(x.Type, x.Vertragstypnr, x.Vertragspartnernr, Suchstring)
|
|
End If
|
|
Case "Vertragselement"
|
|
Return Get_Vertragsdetails(x.Type, x.Keyvalue, x.Vertragspartnernr, Suchstring)
|
|
End Select
|
|
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Laden der Substruktur
|
|
''' </summary>
|
|
''' <param name="Vertragspartnernr">Nummer des aktuellen Vertragspartners</param>
|
|
''' <returns></returns>
|
|
''' <remarks></remarks>
|
|
Private Function Get_Vertragsdetails(ByVal Elementtyp As String, ByVal EntryRoot As Integer, ByVal Vertragspartnernr As Integer, ByVal Suchstring As String)
|
|
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
|
|
Dim dtToReturn As DataTable = New DataTable()
|
|
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
|
|
scmCmdToExecute.CommandText = "dbo.sp_vertragsuebersicht_get_Details"
|
|
scmCmdToExecute.CommandType = CommandType.StoredProcedure
|
|
scmCmdToExecute.Connection = conn.scoDBConnection
|
|
Try
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@Elementtyp", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Elementtyp))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@EntryRoot", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, EntryRoot))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@vertragspartnernr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Vertragspartnernr))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@mitarbeiternr", SqlDbType.Int, 4, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Globals.clsmitarbeiter.iMitarbeiternr.Value))
|
|
scmCmdToExecute.Parameters.Add(New SqlParameter("@suchstring", SqlDbType.VarChar, 255, ParameterDirection.Input, True, 10, 0, "", DataRowVersion.Proposed, Suchstring))
|
|
sdaAdapter.Fill(dtToReturn)
|
|
Return dtToReturn
|
|
Catch ex As Exception
|
|
Throw New Exception("clsVertragsuebersicht::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
|
|
Finally
|
|
scmCmdToExecute.Dispose()
|
|
sdaAdapter.Dispose()
|
|
End Try
|
|
End Function
|
|
|
|
|
|
End Class
|
|
|
|
|
|
''' <summary>
|
|
''' Treenode-Descriptor zur Befüllung des Tree-Node-Tags
|
|
''' </summary>
|
|
''' <remarks>Treenode-Tags werden mit den 2 Elementen (Type und Keyvalue) befüllt:
|
|
''' Type: Vertragspartner, Vertragstyp
|
|
''' Keyvalue: Primary-Key des Elementes</remarks>
|
|
Public Class Treenode_Descriptor
|
|
Dim m_type As String
|
|
Property Type() As String
|
|
Get
|
|
Return m_type
|
|
End Get
|
|
Set(ByVal value As String)
|
|
m_type = value
|
|
End Set
|
|
End Property
|
|
|
|
Dim m_keyvalue As Integer
|
|
Property Keyvalue() As Integer
|
|
Get
|
|
Return m_keyvalue
|
|
End Get
|
|
Set(ByVal value As Integer)
|
|
m_keyvalue = value
|
|
End Set
|
|
End Property
|
|
|
|
Dim m_vertragspartnernr As Integer
|
|
Property Vertragspartnernr() As Integer
|
|
Get
|
|
Return m_vertragspartnernr
|
|
End Get
|
|
Set(ByVal value As Integer)
|
|
m_vertragspartnernr = value
|
|
End Set
|
|
End Property
|
|
Dim m_vertragstypnr As Integer
|
|
Property Vertragstypnr() As Integer
|
|
Get
|
|
Return m_vertragstypnr
|
|
End Get
|
|
Set(ByVal value As Integer)
|
|
m_vertragstypnr = value
|
|
End Set
|
|
End Property
|
|
|
|
Sub New(ByVal Type As String, ByVal Keyvalue As Integer, ByVal Vertragspartnernr As Integer, ByVal vertragstypnr As Integer)
|
|
Me.Type = Type
|
|
Me.Keyvalue = Keyvalue
|
|
Me.Vertragspartnernr = Vertragspartnernr
|
|
Me.Vertragstypnr = vertragstypnr
|
|
End Sub
|
|
End Class
|
|
|
|
|
|
End Namespace
|
|
|
|
|