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.
535 lines
17 KiB
535 lines
17 KiB
Imports System
|
|
Imports System.Data
|
|
Imports System.Data.SqlTypes
|
|
Imports System.Data.SqlClient
|
|
Imports DevComponents
|
|
Imports DropDownControls
|
|
|
|
Public Class clsKategorie
|
|
Inherits DB.clsKategorie
|
|
|
|
|
|
|
|
#Region "Deklarationen"
|
|
Public daten As New DataTable
|
|
Public Neuer_Datensatz As Boolean = False
|
|
Public Mitarbeiterdaten As New DataTable
|
|
|
|
Dim stammdaten As New DB.clsStammdaten
|
|
|
|
Dim mMutierer As String
|
|
Property MutiererText() As String
|
|
Get
|
|
Return mMutierer
|
|
End Get
|
|
Set(ByVal value As String)
|
|
mMutierer = value
|
|
End Set
|
|
End Property
|
|
#End Region
|
|
|
|
|
|
Sub New()
|
|
MyBase.New()
|
|
End Sub
|
|
|
|
|
|
|
|
Public Overloads Sub dispose()
|
|
MyBase.Dispose()
|
|
Try
|
|
Me.stammdaten = Nothing
|
|
Catch
|
|
End Try
|
|
End Sub
|
|
|
|
''' <summary>
|
|
''' Mutierer auslesen
|
|
''' </summary>
|
|
''' <returns></returns>
|
|
''' <remarks></remarks>
|
|
Public Function Get_Mutierer(ByVal nr As Integer) As String
|
|
Try
|
|
Dim ma As New DB.clsMitarbeiter
|
|
Dim dt As New DataTable
|
|
Dim Retvalue As String
|
|
ma.cpMainConnectionProvider = Globals.conn
|
|
ma.iMitarbeiternr = New SqlInt32(CType(nr, Int32))
|
|
dt = ma.SelectOne()
|
|
If dt.Rows.Count = 0 Then
|
|
Retvalue = ("{" + nr.ToString + "}")
|
|
Else
|
|
Retvalue = ma.sName.ToString + " " + ma.sVorname.ToString + ", " + ma.sTgnummer.ToString
|
|
End If
|
|
ma.Dispose()
|
|
dt.Dispose()
|
|
Return Retvalue
|
|
Catch
|
|
Return ""
|
|
End Try
|
|
|
|
End Function
|
|
|
|
|
|
Public Function Get_Data(ByVal Nr As Integer)
|
|
Me.cpMainConnectionProvider = Globals.conn
|
|
Me.iKategorienr = New SqlInt32(CType(Nr, Int32))
|
|
Globals.conn.OpenConnection()
|
|
Me.daten = Me.SelectOne()
|
|
Globals.conn.CloseConnection(True)
|
|
Try
|
|
Me.MutiererText = Get_Mutierer(Me.iMutierer.Value)
|
|
Catch ex As Exception
|
|
Me.MutiererText = ""
|
|
|
|
End Try
|
|
|
|
End Function
|
|
|
|
Public Function Save_Data() As Integer
|
|
Me.cpMainConnectionProvider = Globals.conn
|
|
Me.iMutierer = New SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr, Int32))
|
|
Me.daMutiert_am = New SqlDateTime(CType(Now, DateTime))
|
|
Globals.conn.OpenConnection()
|
|
Me.Update()
|
|
Globals.conn.CloseConnection(True)
|
|
Me.Neuer_Datensatz = False
|
|
End Function
|
|
|
|
|
|
''' <summary>
|
|
''' Löschen eines Datensatzes erstellen.
|
|
''' </summary>
|
|
''' <param name="Basenr">Ursprungs-Person: Ist dieser Wert nicht 0, werden die Daten mit BaseNr zuerst gelesen</param>
|
|
''' <returns></returns>
|
|
''' <remarks></remarks>
|
|
Public Function Delete_Data(Optional ByVal Basenr As Integer = 0) As Integer
|
|
If Basenr <> 0 Then
|
|
Get_Data(Basenr)
|
|
End If
|
|
If bAktiv.Value = False Then Exit Function
|
|
|
|
Me.cpMainConnectionProvider = Globals.conn
|
|
Me.bAktiv = New SqlBoolean(CType(False, Boolean))
|
|
Me.daMutiert_am = New SqlDateTime(CType(Now, DateTime))
|
|
Me.iMutierer = New SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr, Int32))
|
|
Globals.conn.OpenConnection()
|
|
Me.Update()
|
|
Globals.conn.CloseConnection(True)
|
|
Me.Neuer_Datensatz = False
|
|
End Function
|
|
|
|
Public Overloads Function Delete(Optional ByVal Basenr As Integer = 0) As Integer
|
|
If Basenr <> 0 Then
|
|
Get_Data(Basenr)
|
|
End If
|
|
Me.cpMainConnectionProvider = Globals.conn
|
|
Globals.conn.OpenConnection()
|
|
MyBase.Delete()
|
|
Globals.conn.CloseConnection(True)
|
|
Me.Neuer_Datensatz = False
|
|
End Function
|
|
|
|
''' <summary>
|
|
''' Neue Person einfügen
|
|
''' </summary>
|
|
''' <returns></returns>
|
|
''' <remarks></remarks>
|
|
Public Function Add_New() As Integer
|
|
Dim db As New DB.clsMyKey_Tabelle
|
|
db.cpMainConnectionProvider = Globals.conn
|
|
Dim newkey = db.get_dbkey("Kategorie")
|
|
db.Dispose()
|
|
Me.iKategorienr = New SqlInt32(CType(newkey, Int32))
|
|
Me.sBeschreibung = New SqlString(CType("", String))
|
|
Me.sBeschreibung_Lang = New SqlString(CType("", String))
|
|
|
|
Me.iParentid = New SqlInt32(CType(0, Int32))
|
|
Me.bAktiv = New SqlBoolean(CType(True, Boolean))
|
|
Me.daErstellt_am = New SqlDateTime(CType(Now, DateTime))
|
|
Me.daMutiert_am = New SqlDateTime(CType(Now, DateTime))
|
|
Me.iMutierer = New SqlInt32(CType(Globals.clsmitarbeiter.iMitarbeiternr, Int32))
|
|
Me.cpMainConnectionProvider = Globals.conn
|
|
Try
|
|
Globals.conn.OpenConnection()
|
|
Me.Insert()
|
|
Globals.conn.CloseConnection(True)
|
|
Catch ex As Exception
|
|
MsgBox(ex.Message)
|
|
End Try
|
|
Me.Neuer_Datensatz = True
|
|
Return Me.iKategorienr.Value
|
|
End Function
|
|
|
|
|
|
|
|
End Class
|
|
|
|
|
|
Public Class clsKategorieTree
|
|
|
|
#Region "Deklarationen"
|
|
|
|
Dim treedata As New DataSet
|
|
|
|
Dim TreeaufbauSuche As Boolean = False
|
|
Dim TreeaufbauNr As Integer = 0
|
|
Dim FoundNode As Integer = 0
|
|
Dim Searchstring As String = ""
|
|
Public Treesearch As New AdvTree.AdvTree
|
|
|
|
#End Region
|
|
|
|
|
|
|
|
#Region "Tree"
|
|
|
|
Public Sub Load_Treeview(ByRef tree As DevComponents.AdvTree.AdvTree)
|
|
tree.Nodes.Clear()
|
|
TreeaufbauNr = -1
|
|
Load_Treedata("")
|
|
If Not (treedata Is Nothing) Then
|
|
Dim oView As DataView = treedata.Tables(0).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("id"), _
|
|
oDS.Tables(0).Columns("Parentid"))
|
|
End If
|
|
oTable.Dispose()
|
|
oTable = Nothing
|
|
|
|
LoadTreeView(oDS, tree)
|
|
oDS.Dispose()
|
|
oDS = Nothing
|
|
tree.ExpandAll()
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Function Load_Treedata(ByVal datatype As String) As DataTable
|
|
treedata.Tables.Clear()
|
|
Dim selectcommand As New SqlCommand
|
|
Dim connection As New SqlConnection()
|
|
Dim da As New SqlDataAdapter("", connection)
|
|
|
|
selectcommand.CommandText = "sp_get_finma_struktur"
|
|
selectcommand.Parameters.Add("@Root", SqlDbType.VarChar)
|
|
selectcommand.Parameters(0).Value = datatype
|
|
selectcommand.CommandType = CommandType.StoredProcedure
|
|
selectcommand.Connection = connection
|
|
Try
|
|
connection.ConnectionString = Globals.sConnectionString
|
|
connection.Open()
|
|
da.SelectCommand = selectcommand
|
|
da.Fill(treedata, "Tree")
|
|
If treedata_for_search.Rows.Count < 1 Then
|
|
For Each c As DataColumn In treedata.Tables(0).Columns
|
|
If c.ColumnName = "ErweiterteSuche" Then
|
|
Dim dc As New DataColumn
|
|
dc.ColumnName = "ErweiterteSuche"
|
|
dc.DataType = System.Type.GetType("System.String")
|
|
dc.DefaultValue = " "
|
|
Try
|
|
Globals.treedata_for_search.Columns.Add(dc)
|
|
Catch
|
|
End Try
|
|
Else
|
|
Try
|
|
Globals.treedata_for_search.Columns.Add(c.ColumnName)
|
|
Catch
|
|
End Try
|
|
End If
|
|
Next
|
|
End If
|
|
For Each row As DataRow In treedata.Tables(0).Rows
|
|
Globals.treedata_for_search.ImportRow(row)
|
|
Next
|
|
Catch ex As Exception
|
|
'MsgBox(ex.Message)
|
|
Finally
|
|
connection.Close()
|
|
da.Dispose()
|
|
selectcommand.Dispose()
|
|
End Try
|
|
End Function
|
|
|
|
|
|
|
|
Protected Function GetAllNodes(ByVal treestruktur As DevComponents.AdvTree.AdvTree) As List(Of TreeNode)
|
|
|
|
Dim allNodes As List(Of TreeNode) = New List(Of TreeNode)()
|
|
|
|
' start recursion for each root node of the treeview
|
|
For i As Integer = 0 To treestruktur.Nodes.Count - 1
|
|
GetAllNodes(treestruktur.Nodes(i), allNodes)
|
|
Next
|
|
|
|
Return allNodes
|
|
|
|
End Function
|
|
|
|
Protected Sub GetAllNodes(ByVal subRoot As DevComponents.AdvTree.Node, ByVal allNodes As List(Of TreeNode))
|
|
|
|
' check for null (this can be removed since within th
|
|
If (subRoot Is Nothing) Then
|
|
Exit Sub
|
|
End If
|
|
|
|
' add subroot
|
|
Dim r As DataRow
|
|
r = treedata_for_search.NewRow
|
|
r.Item(0) = subRoot.Tag
|
|
Try
|
|
r.Item(1) = subRoot.Parent.Tag
|
|
Catch
|
|
r.Item(1) = 0
|
|
End Try
|
|
|
|
r.Item(2) = subRoot.Text
|
|
r.Item(3) = subRoot.ImageIndex
|
|
treedata_for_search.Rows.Add(r)
|
|
'allNodes.Add(subRoot)
|
|
' add all it's children
|
|
For i As Integer = 0 To subRoot.Nodes.Count - 1
|
|
GetAllNodes(subRoot.Nodes(i), allNodes)
|
|
Next
|
|
|
|
|
|
End Sub
|
|
|
|
|
|
''' <summary>
|
|
''' Tree aufbauen
|
|
''' </summary>
|
|
''' <param name="oDS"></param>
|
|
''' <param name="oTreeview"></param>
|
|
''' <remarks></remarks>
|
|
Private Sub LoadTreeView(ByVal oDS As DataSet, ByRef oTreeview As DevComponents.AdvTree.AdvTree)
|
|
'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 oNode As New DevComponents.AdvTree.Node
|
|
oNode.Text = Trim(oDataRow("Bezeichnung").ToString())
|
|
Try
|
|
'oNode.ToolTipText = Trim(oDataRow("ErweiterteSuche").ToString)
|
|
Catch
|
|
End Try
|
|
oNode.Tag = oDataRow("id").ToString
|
|
oNode.ImageIndex = oDataRow("ImageIndex")
|
|
oTreeview.Nodes.Add(oNode)
|
|
RecursivelyLoadTree(oDataRow, oNode)
|
|
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 RecursivelyLoadTree(ByVal oDataRow As DataRow, ByRef oNode As DevComponents.AdvTree.Node)
|
|
Dim oChildRow As DataRow
|
|
For Each oChildRow In oDataRow.GetChildRows("SelfRefenceRelation")
|
|
Dim oChildNode As New DevComponents.AdvTree.Node
|
|
oChildNode.Text = Trim(oChildRow("Bezeichnung").ToString())
|
|
oChildNode.Tag = oChildRow("id").ToString()
|
|
oChildNode.ImageIndex = oChildRow("ImageIndex")
|
|
|
|
oNode.Nodes.Add(oChildNode)
|
|
RecursivelyLoadTree(oChildRow, oChildNode)
|
|
Next oChildRow
|
|
End Sub
|
|
Public Function FindNode(ByVal _nodeCollection As AdvTree.NodeCollection, ByVal SearchVal As Integer, ByVal SearchString As String) As AdvTree.Node
|
|
Dim tmpNode As AdvTree.Node
|
|
For Each _child As AdvTree.Node In _nodeCollection
|
|
If _child.Tag = SearchVal Then
|
|
|
|
Return _child
|
|
End If
|
|
' If InStr(UCase(_child.Text), UCase(SearchString)) > 0 Then
|
|
' Return _child
|
|
' End If
|
|
tmpNode = FindNode(_child.Nodes, SearchVal, SearchString)
|
|
If Not tmpNode Is Nothing Then
|
|
Return tmpNode
|
|
End If
|
|
Next
|
|
Return Nothing
|
|
End Function
|
|
|
|
|
|
Public Function Init_Search()
|
|
FoundNode = 0
|
|
Searchstring = ""
|
|
Me.Treesearch.Nodes.Clear()
|
|
End Function
|
|
|
|
Public Function SearchNode(ByRef tree As AdvTree.AdvTree, ByVal SearchString As String) As AdvTree.Node
|
|
'Return tree.FindNodeByCellText(SearchString)
|
|
|
|
Me.Treesearch.Nodes.Clear()
|
|
For Each dr As DataRow In treedata_for_search.Rows
|
|
'InStr(UCase(SearchString), UCase(dr.Item("Bezeichnung")))
|
|
If InStr(UCase(dr.Item("Bezeichnung")), UCase(SearchString)) > 0 Or InStr(UCase(dr.Item("ErweiterteSuche")), UCase(SearchString)) > 0 Then
|
|
Dim tn As New AdvTree.Node
|
|
tn.Text = dr.Item("Bezeichnung")
|
|
tn.Tag = dr.Item("id")
|
|
Treesearch.Nodes.Add(tn)
|
|
End If
|
|
Next
|
|
Return FindFirst(tree)
|
|
End Function
|
|
|
|
Public Function FindFirst(ByRef Tree As AdvTree.AdvTree) As AdvTree.Node
|
|
Try
|
|
If Me.Treesearch.Nodes.Count > 0 Then Me.Treesearch.SelectedNode = Me.Treesearch.Nodes(0)
|
|
Return FindNode(Tree.Nodes, Treesearch.SelectedNode.Tag, "")
|
|
Catch
|
|
End Try
|
|
End Function
|
|
|
|
|
|
|
|
Public Function FindNextNode(ByRef tree As AdvTree.AdvTree) As AdvTree.Node
|
|
Try
|
|
Treesearch.SelectedNode = Treesearch.SelectedNode.NextNode
|
|
If Treesearch.SelectedNode Is Nothing Then
|
|
Return FindFirst(tree)
|
|
End If
|
|
Return Me.FindNode(tree.Nodes, Treesearch.SelectedNode.Tag, "")
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
End Function
|
|
|
|
Public Function FindPrevNode(ByRef tree As AdvTree.AdvTree) As AdvTree.Node
|
|
Try
|
|
Treesearch.SelectedNode = Treesearch.SelectedNode.PrevNode
|
|
If Treesearch.SelectedNode Is Nothing Then
|
|
Return FindLastNode(tree)
|
|
End If
|
|
Return Me.FindNode(tree.Nodes, Treesearch.SelectedNode.Tag, "")
|
|
Catch ex As Exception
|
|
End Try
|
|
End Function
|
|
|
|
Public Function FindLastNode(ByRef tree As AdvTree.AdvTree) As AdvTree.Node
|
|
Try
|
|
Treesearch.SelectedNode = Treesearch.Nodes(Treesearch.Nodes.Count - 1)
|
|
Return Me.FindNode(tree.Nodes, Treesearch.SelectedNode.Tag, "")
|
|
Catch ex As Exception
|
|
End Try
|
|
|
|
End Function
|
|
|
|
|
|
|
|
|
|
#End Region
|
|
|
|
#Region "ComboboxTree"
|
|
|
|
Public Sub Load_ComboboxTree(ByRef tree As Object)
|
|
tree.Nodes.Clear()
|
|
TreeaufbauNr = -1
|
|
Load_Treedata("")
|
|
If Not (treedata Is Nothing) Then
|
|
Dim oView As DataView = treedata.Tables(0).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("id"), _
|
|
oDS.Tables(0).Columns("Parentid"))
|
|
End If
|
|
oTable.Dispose()
|
|
oTable = Nothing
|
|
|
|
LoadTreeView1(oDS, tree)
|
|
oDS.Dispose()
|
|
oDS = Nothing
|
|
tree.ExpandAll()
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Private Sub LoadTreeView1(ByVal oDS As DataSet, ByRef oTreeview As Object)
|
|
'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 oNode As New ComboTreeNode
|
|
oNode.Text = Trim(oDataRow("Bezeichnung").ToString())
|
|
Try
|
|
'oNode.ToolTipText = Trim(oDataRow("ErweiterteSuche").ToString)
|
|
Catch
|
|
End Try
|
|
oNode.Tag = oDataRow("id").ToString
|
|
oNode.ImageIndex = oDataRow("ImageIndex")
|
|
oTreeview.Nodes.Add(oNode)
|
|
RecursivelyLoadTree1(oDataRow, oNode)
|
|
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 RecursivelyLoadTree1(ByVal oDataRow As DataRow, ByRef oNode As ComboTreeNode)
|
|
Dim oChildRow As DataRow
|
|
For Each oChildRow In oDataRow.GetChildRows("SelfRefenceRelation")
|
|
Dim oChildNode As New ComboTreeNode
|
|
oChildNode.Text = Trim(oChildRow("Bezeichnung").ToString())
|
|
oChildNode.Tag = oChildRow("id").ToString()
|
|
oChildNode.ImageIndex = oChildRow("ImageIndex")
|
|
|
|
oNode.Nodes.Add(oChildNode)
|
|
RecursivelyLoadTree1(oChildRow, oChildNode)
|
|
Next oChildRow
|
|
End Sub
|
|
|
|
Public Function ComboboxTree_FindNode(ByVal _nodeCollection As ComboTreeNodeCollection, ByVal SearchVal As Integer, ByVal SearchString As String) As ComboTreeNode
|
|
Dim tmpNode As ComboTreeNode
|
|
For Each _child As ComboTreeNode In _nodeCollection
|
|
If _child.Tag = SearchVal Then
|
|
|
|
Return _child
|
|
End If
|
|
' If InStr(UCase(_child.Text), UCase(SearchString)) > 0 Then
|
|
' Return _child
|
|
' End If
|
|
tmpNode = ComboboxTree_FindNode(_child.Nodes, SearchVal, SearchString)
|
|
If Not tmpNode Is Nothing Then
|
|
Return tmpNode
|
|
End If
|
|
Next
|
|
Return Nothing
|
|
End Function
|
|
|
|
|
|
|
|
#End Region
|
|
|
|
End Class
|
|
|
|
|