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.

201 lines
7.9 KiB

Imports System
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Imports System.Windows.Forms
Public Class frmDokSelect
Private Dokumentvorlagen As New DataSet
Private Connectionstring As String
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()
End Sub
Private Sub Load_Tree()
Read_Dokumente()
Load_Treeview(Dokumentvorlagen, Tree)
Me.Tree.ExpandAll()
End Sub
''' <summary>
''' Auswertungen, für welche der User berechtigt ist, auslesen
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
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 = "dbo.sp_get_nativ_dokumente"
scmCmdToExecute.CommandType = CommandType.StoredProcedure
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
''' <summary>
''' Interne Relation aufbauen und Tree aufbauen
''' </summary>
''' <param name="oSourceData"></param>
''' <param name="tree"></param>
''' <remarks></remarks>
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("id"), _
oDS.Tables(0).Columns("Parentid"))
End If
oTable.Dispose()
oTable = Nothing
LoadTreeView(oDS, tree)
oDS.Dispose()
oDS = Nothing
End If
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 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("dokumentnr").ToString
oNode.ToolTipText = oDataRow("Beschreibung").ToString
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
''' <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 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("dokumentnr").ToString()
If oChildRow("dokumentnr") < 0 Then
oChildNode.ImageIndex = 0
oChildNode.SelectedImageIndex = 0
oChildNode.StateImageIndex = 0
oChildNode.ToolTipText = oChildRow("Beschreibung").ToString
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
End Class