Imports System
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Imports System.Windows.Forms
Imports System.IO
Public Class frmDokManager
Private Dokumentvorlagen As New DataSet
Private Connectionstring As String
Dim ssort As Integer
Dim da As SqlDataAdapter
Dim ds As New DataSet
Dim co As New SqlConnection
Dim cb As SqlCommandBuilder
Dim dbkey As Integer = 0
Public Sub New(ByVal Connstring As String)
' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
InitializeComponent()
Connectionstring = Connstring
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
End Sub
Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
Me.Close()
End Sub
Private Sub frmDokSelect_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Load_Tree()
Me.Tree.AllowDrop = True
End Sub
Private Sub Load_Tree()
Read_Dokumente()
Load_Treeview(Dokumentvorlagen, Tree)
Me.Tree.ExpandAll()
End Sub
'''
''' Auswertungen, für welche der User berechtigt ist, auslesen
'''
'''
'''
Private Function Read_Dokumente() As DataTable
Dim conn As New SqlConnection(Me.connectionstring)
Dim scmCmdToExecute As SqlCommand = New SqlCommand()
Dim dtToReturn As DataTable = New DataTable()
Dim sdaAdapter As SqlDataAdapter = New SqlDataAdapter(scmCmdToExecute)
scmCmdToExecute.CommandText = "select * from dbo.NativHierarchie"
scmCmdToExecute.CommandType = CommandType.Text
scmCmdToExecute.Connection = conn
Try
sdaAdapter.Fill(dtToReturn)
Dokumentvorlagen.Tables.Clear()
Dokumentvorlagen.Tables.Add(dtToReturn)
Catch ex As Exception
Throw New Exception("clsAuswertung::" & scmCmdToExecute.CommandText & "::Error occured." & ex.Message, ex)
Finally
scmCmdToExecute.Dispose()
sdaAdapter.Dispose()
End Try
End Function
'''
''' Interne Relation aufbauen und Tree aufbauen
'''
'''
'''
'''
Private Sub Load_Treeview(ByVal oSourceData As DataSet, ByRef tree As TreeView)
If Not (oSourceData Is Nothing) Then
Dim oView As DataView = oSourceData.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("Eintragnr"), _
oDS.Tables(0).Columns("Parentid"))
End If
oTable.Dispose()
oTable = Nothing
LoadTreeView(oDS, tree)
oDS.Dispose()
oDS = Nothing
End If
End Sub
'''
''' Tree aufbauen
'''
'''
'''
'''
Private Sub LoadTreeView(ByVal oDS As DataSet, ByRef oTreeview As TreeView)
'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
Dim oNode As New TreeNode()
oNode.Text = oDataRow("Bezeichnung").ToString()
oNode.Tag = oDataRow("pfad").ToString
'oNode.ToolTipText = oDataRow("Beschreibung").ToString
oNode.ToolTipText = ""
oNode.ImageIndex = 0
oNode.SelectedImageIndex = 0
oNode.StateImageIndex = 0
oTreeview.Nodes.Add(oNode)
RecursivelyLoadTree(oDataRow, oNode)
End If
End If
Next oDataRow
oDS.Dispose()
oDS = Nothing
End Sub
'''
''' Child-Nodes hinzufügen
'''
'''
'''
'''
Private Sub RecursivelyLoadTree(ByVal oDataRow As DataRow, ByRef oNode As TreeNode)
Dim oChildRow As DataRow
For Each oChildRow In oDataRow.GetChildRows("SelfRefenceRelation")
Dim oChildNode As New TreeNode()
oChildNode.Text = oChildRow("Bezeichnung").ToString()
oChildNode.Tag = oChildRow("pfad").ToString()
If oChildRow("pfad").ToString = "" Then
oChildNode.ImageIndex = 0
oChildNode.SelectedImageIndex = 0
oChildNode.StateImageIndex = 0
Else
If oChildRow("Pfad").ToString.IndexOf(".doc") > 0 Then
oChildNode.ImageIndex = 1
oChildNode.SelectedImageIndex = 1
oChildNode.StateImageIndex = 1
End If
If oChildRow("Pfad").ToString.IndexOf(".xls") > 0 Then
oChildNode.ImageIndex = 2
oChildNode.SelectedImageIndex = 2
oChildNode.StateImageIndex = 2
End If
If oChildRow("Pfad").ToString.IndexOf(".ppt") > 0 Then
oChildNode.ImageIndex = 3
oChildNode.SelectedImageIndex = 3
oChildNode.StateImageIndex = 3
End If
If oChildRow("Pfad").ToString.IndexOf(".acc") > 0 Then
oChildNode.ImageIndex = 4
oChildNode.SelectedImageIndex = 4
oChildNode.StateImageIndex = 4
End If
If oChildRow("Pfad").ToString.IndexOf(".vs") > 0 Then
oChildNode.ImageIndex = 5
oChildNode.SelectedImageIndex = 5
oChildNode.StateImageIndex = 5
End If
If oChildRow("Pfad").ToString.IndexOf(".mpp") > 0 Then
oChildNode.ImageIndex = 6
oChildNode.SelectedImageIndex = 6
oChildNode.StateImageIndex = 6
End If
End If
'oChildNode.ToolTipText = oChildRow("Beschreibung").ToString
oNode.Nodes.Add(oChildNode)
RecursivelyLoadTree(oChildRow, oChildNode)
Next oChildRow
End Sub
Private Sub Tree_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Tree.DoubleClick
Try
Dim s As String
If Me.Tree.SelectedNode.Tag < 0 Then Exit Sub
For Each r As DataRow In Dokumentvorlagen.Tables(0).Rows
If r.Item("Dokumentnr") = Me.Tree.SelectedNode.Tag Then
s = r.Item("Pfad")
If s.IndexOf(".doc") > 0 Then
Dim w As New Microsoft.Office.Interop.Word.Application
w.Documents.Add(r.Item("pfad").ToString)
w.Visible = True
w = Nothing
End If
If s.IndexOf(".xls") > 0 Then
Dim xl As New Microsoft.Office.Interop.Excel.Application
xl.Workbooks.Add(r.Item("Pfad").ToString)
xl.Visible = True
xl = Nothing
End If
If s.IndexOf(".ppt") > 0 Then
Dim pp As New Microsoft.Office.Interop.PowerPoint.Application
pp.Presentations.Open(FileName:=r.Item("Pfad"), Untitled:=True)
pp.Visible = Microsoft.Office.Core.MsoTriState.msoTrue
pp = Nothing
End If
Exit For
End If
Next
Catch ex As Exception
End Try
End Sub
Public Sub TreeView1_ItemDrag(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemDragEventArgs) Handles Tree.ItemDrag
DoDragDrop(e.Item, DragDropEffects.Move)
End Sub
Public Sub TreeView1_DragEnter(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Tree.DragEnter
e.Effect = DragDropEffects.Move
End Sub
Public Sub TreeView1_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles Tree.DragDrop
Dim NewNode As TreeNode
If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) Then
Dim pt As System.Drawing.Point
Dim DestinationNode As TreeNode
pt = Tree.PointToClient(New System.Drawing.Point(e.X, e.Y))
DestinationNode = Tree.GetNodeAt(pt)
NewNode = CType(e.Data.GetData("System.Windows.Forms.TreeNode"), TreeNode)
If Not DestinationNode.Equals(NewNode) Then
DestinationNode.Nodes.Add(CType(NewNode.Clone, TreeNode))
DestinationNode.Expand()
NewNode.Remove()
End If
End If
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
Dim filePaths As String() = CType(e.Data.GetData(DataFormats.FileDrop), String())
For Each fileLoc As String In filePaths
If File.Exists(fileLoc) Then
Dim pt As System.Drawing.Point
Dim DestinationNode As TreeNode
pt = Tree.PointToClient(New System.Drawing.Point(e.X, e.Y))
DestinationNode = Tree.GetNodeAt(pt)
NewNode = New TreeNode(fileLoc)
NewNode.Tag = fileLoc
If Not DestinationNode.Equals(NewNode) Then
DestinationNode.Nodes.Add(CType(NewNode.Clone, TreeNode))
DestinationNode.Expand()
NewNode.Remove()
End If
End If
Next fileLoc
End If
End Sub
Private Sub NeuerEintragToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NeuerEintragToolStripMenuItem.Click
Dim a As String
Dim tn As New TreeNode()
Dim tnnew As New TreeNode()
a = InputBox("Bezeichnung des neuen Eintrags:")
If a = "" Then Exit Sub
tn = Me.Tree.SelectedNode
tnnew = tn.Nodes.Add(a)
With tnnew
.Tag() = -1
.ImageIndex() = 0
.SelectedImageIndex() = 0
End With
End Sub
Private Sub EintragLöschenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EintragLöschenToolStripMenuItem.Click
Dim tn As New TreeNode()
Dim tnp As New TreeNode()
Dim i As Integer
tn = Tree.SelectedNode
tnp = tn.Parent
If Not (Tree.SelectedNode Is Nothing) Then
tn.Remove()
End If
End Sub
Private Sub EintragUmbenennenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EintragUmbenennenToolStripMenuItem.Click
Dim a As String
a = InputBox("Neuer Name:")
If a = "" Then Exit Sub
Tree.SelectedNode.Text = a
End Sub
Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click
Me.Close()
End Sub
Private Sub ToolStripButton2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton2.Click
Load_From_Db()
dbkey = 0
ds.Tables(0).Rows.Clear()
da.Update(ds, "vorlagen")
Save_Data()
End Sub
Private Sub Load_From_Db()
Try
da = New SqlDataAdapter("Select * from NativHierarchie", Connectionstring)
cb = New SqlCommandBuilder(da)
da.Fill(ds, "vorlagen")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub Save_Data()
ListNodeCollectionRecursive(Me.Tree.Nodes(0), 0)
End Sub
Private Sub ListNodeCollectionRecursive(ByVal tnParent As TreeNode, ByRef iSort As Integer)
Dim tn As TreeNode
If tnParent.GetNodeCount(False) > 0 Then
tn = tnParent.Nodes(0)
Else
tn = Nothing
End If
ssort = 0
Do Until tn Is Nothing
iSort = iSort + 1
ListNodeSave(tn, iSort)
If tn.GetNodeCount(False) > 0 Then
Call ListNodeCollectionRecursive(tn, iSort)
End If
tn = tn.NextNode
Loop
End Sub
Private Sub ListNodeSave(ByVal tn As TreeNode, ByRef isort As Integer)
Dim r As DataRow
r = ds.Tables(0).NewRow
r.Item("Eintragnr") = dbkey
r.Item("Bezeichnung") = tn.Text
r.Item("Parentid") = tn.Parent.Tag
r.Item("Erstellt_am") = Now
r.Item("Mutiert_am") = Now
r.Item("Mutierer") = 1
r.Item("Aktiv") = True
r.Item("Pfad") = tn.Tag
ds.Tables(0).Rows.Add(r)
End Sub
End Class