Imports System
Imports System.Data
Imports System.Data.SqlTypes
Imports System.Data.SqlClient
Public Class frmDokument
#Region "Deklarationen"
Dim Dokument As New DMS.clsDok
Dim DokumentAblageTyp As New TKB.VV.DB.clsLC_Dokumenttyp
Dim DokumentAblageTypen As New DataTable
Dim FormReadonly As Boolean = False
Dim FormDataChanged As Boolean = False
Dim SpaltenTitel As New Utils.Tabellenspalte
Dim Aktuelles_Dokument As Integer
Dim Aktuelles_Element As Integer
Dim Doktype As Integer
'''
''' Doktype
''' 1: Vertragselement
''' 2: Test-Drehbuch
''' 3: Applikationsdokument
''' 4: Applikationlogbuch
''' ö
'''
Dim Aktueller_Doktype As Integer
Dim Anzeige As Boolean = False
Private SaveFileName As String = ""
Dim Neuer_Datensatz As Boolean = False
Dim ishyperlink As Boolean = False
Dim hyperlink As String = ""
#End Region
#Region "Closing / Check_Changes"
'''
''' Schliessen des Formulars
'''
'''
'''
'''
Private Sub FormularClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
If Me.FormReadonly = True Then Exit Sub
If Check_Changes() = False Then
e.Cancel = True
Else
If Me.Dokument.Neuer_Datensatz = True Then Me.Dokument.Delete(Me.Dokument.iDokumentNr.Value)
Me.Dispose()
End If
End Sub
'''
''' Prüfung, ob Datenänderungen vorgenommen wurden. Beim Speichern werden ebenfalls allfällige Änderungen von C1DokumentAblagoeOrt durchgeführt.
''' Wurden lediglich Änderungen bei C1Dokumentablageort vorgenommen, wird separat gefrat, ob die Änderungen gespeichert werden sollen.
'''
'''
Private Function Check_Changes() As Boolean
If Me.FormReadonly Then Exit Function
Dim msgres As MsgBoxResult
If Me.FormDataChanged Then
msgres = MsgBox("Möchten Sie die Änderungen speichern?", vbYesNoCancel + MsgBoxStyle.Question)
Select Case msgres
Case MsgBoxResult.Yes
Save_data()
Return True
Case MsgBoxResult.Cancel
Return False
Case MsgBoxResult.No
Return True
End Select
Else
Return True
End If
End Function
#End Region
#Region "Formular"
'''
'''
'''
''' Optionaler Parameter Dokumentnummer des aktuellen Dokuments
'''
Sub New(ByVal DokumentNr As Integer, ByVal Doktype As Integer, Optional ByVal Elementnr As Integer = -1, Optional ByVal Anzeige As Boolean = False, Optional ByVal CreateNew As Boolean = False)
Me.InitializeComponent()
If CreateNew Then
Me.Aktuelles_Dokument = Me.Dokument.Add_New(Elementnr, DokType)
Me.Neuer_Datensatz = True
Else
Me.Aktuelles_Dokument = DokumentNr
End If
Me.Anzeige = Anzeige
Me.Aktuelles_Element = Elementnr
Me.Doktype = Doktype
End Sub
Sub New(ByVal Produktnr As Integer, ByVal Hyperlink As Boolean, ByVal Link As String)
Me.InitializeComponent()
Me.Aktuelles_Dokument = Me.Dokument.Add_New(Produktnr, 1)
Me.Neuer_Datensatz = True
Me.Anzeige = Anzeige
Me.Aktuelles_Element = Produktnr
Me.Doktype = 1
Me.ishyperlink = True
Me.txtOriginalFilename_incl_path.Text = Link
Me.txtHyperlink.Text = Link
Me.hyperlink = Link
End Sub
Sub New(ByVal DokumentNr As Integer, ByVal Doktype As Integer, Optional ByVal Elementnr As Integer = -1, Optional ByVal Anzeige As Boolean = False, Optional ByVal CreateNew As Boolean = False, Optional ByVal Filename As String = "")
Me.InitializeComponent()
If CreateNew Then
Me.Aktuelles_Dokument = Me.Dokument.Add_New(Elementnr, Doktype)
Me.Neuer_Datensatz = True
Me.Dokument.sBezeichnung = New SqlString(CType(System.IO.Path.GetFileName(Filename), String))
Me.Dokument.sFilename = New SqlString(CType(System.IO.Path.GetFileName(Filename), String))
Me.Dokument.sOriginalFilename_incl_Path = New SqlString(CType(Filename, String))
Me.Dokument.Save_Data()
Me.txtDateiname.Text = System.IO.Path.GetFileName(Filename)
Me.txtFilename.Text = Filename
Else
Me.Aktuelles_Dokument = DokumentNr
End If
Me.Anzeige = Anzeige
Me.Aktuelles_Element = Elementnr
Me.Doktype = Doktype
End Sub
'''
''' Formular-Load
'''
'''
'''
'''
Private Sub frmDokument_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If Anzeige = True Then
Me.TSBtnSuche.Enabled = False
Me.TSBtnSave.Enabled = False
Else
Me.TSBtnSuche.Enabled = True
End If
If Me.TSBtnSave.Enabled = False Or Me.TSBtnSave.Visible = False Then
Me.FormReadonly = True
Me.TSBtnCopy.Enabled = False
Me.TSBtnNew.Enabled = False
Me.TSBtnDelete.Enabled = False
Else
Me.FormReadonly = False
End If
'Dokumenttypen-Laden
Me.Dokument.Get_Dokumenttypen()
Me.cboxDokumenttyp.DataSource = Me.Dokument.Dokumenttypdaten
Me.cboxDokumenttyp.DisplayMember = "Bezeichnung"
Me.cboxDokumenttyp.ValueMember = "Dokumenttypnr"
AddChanges(Me)
Get_Data(Me.Aktuelles_Dokument)
If Dokument.iDokType.Value = 6 Then
Me.txtHyperlink.Text = Me.txtOriginalFilename_incl_path.Text
End If
If Me.Neuer_Datensatz = True Then
Me.Dokument.Neuer_Datensatz = True
Me.Neuer_Datensatz = False
Me.cboxDokumenttyp.SelectedValue = Me.Dokument.Dokumenttypdaten.Rows(0).Item("dokumenttypnr")
End If
Me.txtBezeichnung.Focus()
If ishyperlink = True Then
Me.cboxDokumenttyp.Text = "Hyperlink"
Me.txtHyperlink.Text = hyperlink
Me.cboxDokumenttyp.SelectedValue = 6
Me.pnlDokument.Visible = False
Me.pnlHyperlink.Visible = True
Me.Height = Me.ToolStrip1.Height + Me.Panel1.Height + Me.pnlHyperlink.Height + Me.MenuStrip1.Height + 20
End If
End Sub
#End Region
#Region "Buttons/Menu"
'''
''' Formular schliessen
'''
'''
'''
'''
Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click
Me.Close()
End Sub
'''
''' Sicherungs-Button betätigt
'''
'''
'''
'''
Private Sub TSBtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnSave.Click
Me.Save_data()
Me.txtMutiert_am.Text = Me.Dokument.daMutiert_am.ToString
Me.FormDataChanged = False
End Sub
'''
''' Datensatz kopieren
'''
'''
'''
'''
Private Sub TSBtnCopy_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnCopy.Click
If Me.Check_Changes = False Then Exit Sub
Me.Get_Data(Dokument.Create_Copy(Me.Dokument.iDokumentNr.Value))
Me.Dokument.Neuer_Datensatz = True
End Sub
'''
''' Neuer Datensatz erstellen
'''
'''
'''
'''
Private Sub TSBtnNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnNew.Click
If Me.Check_Changes = False Then Exit Sub
Me.Get_Data(Me.Dokument.Add_New(Me.Aktuelles_Element, Me.Doktype))
Me.txtFilename.Text = ""
Me.Dokument.Neuer_Datensatz = True
Me.txtBezeichnung.Focus()
End Sub
'''
''' Aktueller Datensatz inaktivieren
'''
'''
'''
'''
Private Sub TSBtnDelete_Click(ByVal senderBeendenToolStripMenuItem As System.Object, ByVal e As System.EventArgs) Handles TSBtnDelete.Click
If MsgBox("Das Dokument wirklich löschen?", vbYesNo + vbQuestion) = MsgBoxResult.Yes Then
Me.Dokument.Delete_Dokument(Me.Dokument.iDokumentNr.Value)
Me.Close()
End If
End Sub
'''
''' Menu Beenden
'''
'''
'''
'''
Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click
Me.TSBtnQuit_Click(sender, e)
End Sub
'''
''' Vertragspartner suchen
'''
'''
'''
'''
Private Sub TSBtnSuche_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnSuche.Click
If Not Me.FormReadonly Then Check_Changes()
'Dim i As Integer
'If Me.Vertragspartnerdata.Vertragspartner_Suchen(i) = True Then
' Me.Get_Data(i)
'End If
End Sub
#End Region
#Region "Eventhandler ChangeEreignisse"
'''
''' Allg Eventhandler für Chanage-Ereignise festlegen
'''
'''
'''
Private Sub AddChanges(ByVal Container As Control)
Dim l As New List(Of Control)
Me.GetControl(Me, "*", l)
Dim evh As EventHandler = AddressOf ChangesMade
For Each c As Control In l
If TypeOf c Is TextBox Then
Dim ctl As TextBox = c
AddHandler ctl.TextChanged, evh
End If
If TypeOf c Is MaskedTextBox Then
Dim ctl As MaskedTextBox = c
AddHandler ctl.TextChanged, evh
End If
If TypeOf c Is ComboBox Then
Dim ctl As ComboBox = c
AddHandler ctl.SelectedValueChanged, evh
End If
If TypeOf c Is CheckBox Then
Dim ctl As CheckBox = c
AddHandler ctl.CheckedChanged, evh
End If
Next
End Sub
'''
''' Envent-Handler für Change-Ereignisse
'''
'''
'''
'''
Private Sub ChangesMade(ByVal sender As Object, ByVal e As System.EventArgs)
Me.FormDataChanged = True
Dim objtype As System.Type = sender.GetType
If objtype.Name = "MaskedTextBox" Then
Dim o As MaskedTextBox = sender
If o.Text = "01.01.1900" Then o.Text = " . . "
End If
End Sub
'''
''' Sucht in den Base-Controls sämtliche Controls mit dem Namen in "Key" (Wildcards * möglich) und listet
''' die gefundnen Controls in der Liste L zur weiteren Bearbeitung
'''
''' Base-Contrlo (z.B. aktuelles Formular
''' Schlüssel welcher gesucht werden soll
''' Liste der gefundenen Objekte
''' True wenn eines oder mehr Controls gefunden wurden, false wenn kein Control gefunden wurde.
'''
'''
Private Function GetControl(ByVal BaseControl As Control, ByVal Key As String, ByRef L As List(Of Control), Optional ByVal ReturnAtFirstElement As Boolean = False) As Boolean
If L Is Nothing Then L = New List(Of Control)
Dim Gut As Boolean
Dim ReturnFlag As Boolean = False
If Key IsNot Nothing Then Key = Key.ToLower
If BaseControl.HasChildren = True Then
For Each ctl As Control In BaseControl.Controls
Gut = False
If Key Is Nothing Then
Gut = True
Else
If ctl.Name.Length >= Key.Length Then
Key = Key.ToLower
If Key.StartsWith("*") Then
If Key.Substring(1) = ctl.Name.ToLower.Substring(ctl.Name.Length - (Key.Length - 1), Key.Length - 1) Then Gut = True
ElseIf Key.EndsWith("*") Then
If Key.Substring(0, Key.Length - 1) = ctl.Name.ToLower.Substring(0, Key.Length - 1) Then Gut = True
Else
If Key = ctl.Name.ToLower Then Gut = True
End If
End If
End If
If Gut = True Then
L.Add(ctl)
If ReturnAtFirstElement = True Then ReturnFlag = True
End If
If ReturnFlag = False Then
Call GetControl(ctl, Key, L)
End If
Next
End If
If L.Count - 1 > -1 Then
Return True
Else
Return False
End If
End Function
'''
''' Handelt das Change-Ereignis eines Datetimepckers und stellt das ausgewählte Datum in das entsprechende Textfeld
'''
'''
'''
'''
Private Sub DateTimePicker_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dtPickerVersionsdatum.ValueChanged
Dim s As String
Dim obj As DateTimePicker = sender
s = obj.Name
s = "txt" + s.Substring(8, s.Length - 8)
Dim l As New List(Of Control)
Dim txtb As MaskedTextBox
GetControl(Me, s, l)
For Each ctl As Control In l
txtb = CType(ctl, MaskedTextBox)
txtb.Text = obj.Value
Next
End Sub
#End Region
#Region "Daten"
'''
''' Daten ab DB laden uns ins Form befüllen
'''
'''
'''
Private Sub Get_Data(ByVal Dokumentnr As Integer)
Try
Dokument.Get_Dokumenttypen()
Dokument.Get_Dokument(Dokumentnr)
Me.txtBezeichnung.Text = Dokument.sBezeichnung.Value
Me.cboxDokumenttyp.SelectedValue = Dokument.iDokumenttypNr.Value
Me.txtBeschreibung.Text = Dokument.sBeschreibung.Value
Me.txtVersion.Text = Dokument.sVersion.ToString
Me.txtVersionsdatum.Text = Dokument.daVersionsdatum.ToString
Me.txtDateiname.Text = Dokument.sFilename.Value
If Me.txtDateiname.Text <> "" Then Me.btnDokumentAnzeigen.Enabled = True Else Me.btnDokumentAnzeigen.Enabled = False
Me.txtDateiname.ReadOnly = True
Me.SaveFileName = Me.txtDateiname.Text
Me.txtOriginalFilename_incl_path.Text = Dokument.sOriginalFilename_incl_Path.Value
Me.txtErstellt_am.Text = Dokument.daErstellt_am.ToString
Me.txtMutiert_am.Text = Dokument.daMutiert_am.ToString
Me.txtMutierer.Text = Dokument.iMutierer.Value
Try
Me.cbaktiv.Checked = Dokument.bAktiv.Value = True
Catch ex As Exception
Me.cbaktiv.Checked = True
End Try
If Not Anzeige Then
For Each ctl As ToolStripButton In Me.ToolStrip1.Items
ctl.Enabled = True
Next
End If
Me.FormDataChanged = False
Catch ex As Exception
For Each ctl As ToolStripButton In Me.ToolStrip1.Items
ctl.Enabled = False
Next
Me.TSBtnQuit.Enabled = True
Me.TSBtnSuche.Enabled = True
End Try
Me.FormDataChanged = False
End Sub
'''
''' Daten ab Form speichern
'''
'''
Private Sub Save_data()
'Prüfung, ob das Ausgewählte File zur Speicherung vorhanden ist
If Not Me.ishyperlink Then
If Me.txtFilename.Text <> "" And Me.cboxDokumenttyp.Text <> "Hyperlink" Then
If Not IO.File.Exists(Me.txtFilename.Text) Then
MsgBox("Die gewählte Datei ist nicth vorhanden." + vbExclamation)
Exit Sub
End If
End If
End If
If Me.txtFilename.Text <> "" And Me.txtDateiname.Text <> "" And Me.txtDateiname.Text <> Me.SaveFileName And Me.SaveFileName <> "" Then
'If msg.Show_MessageYesNo(272) = MsgBoxResult.No Then
' msg.show_standardmessage(273, MsgBoxStyle.Information)
' Exit Sub
'End If
End If
Dokument.iKeyValue = New SqlInt32(CType(Me.Aktuelles_Element, Int32))
Dokument.iDokumenttypNr = New SqlInt32(CType(Me.cboxDokumenttyp.SelectedValue, Int32))
Dokument.sBezeichnung = New SqlString(CType(Me.txtBezeichnung.Text, String))
Dokument.sBeschreibung = New SqlString(CType(Me.txtBeschreibung.Text, String))
Dokument.sVersion = New SqlString(CType(Me.txtVersion.Text, String))
If IsDate(Me.txtVersionsdatum.Text) Then
Dokument.daVersionsdatum = New SqlDateTime(CType(Me.txtVersionsdatum.Text, DateTime))
Else
Dokument.daVersionsdatum = New SqlDateTime(CType(SqlDateTime.Null, DateTime))
End If
If Me.cboxDokumenttyp.SelectedValue = 6 Then
Me.txtDateiname.Text = Me.txtHyperlink.Text
Me.txtOriginalFilename_incl_path.Text = Me.txtHyperlink.Text
End If
Dokument.sFilename = New SqlString(CType(Me.txtDateiname.Text, String))
Dokument.sOriginalFilename_incl_Path = New SqlString(CType(Me.txtOriginalFilename_incl_path.Text, String))
Dokument.bAktiv = New SqlBoolean(CType(Me.cbaktiv.Checked = True, Boolean))
Dokument.Save_Data()
If Me.cboxDokumenttyp.Text <> "Hyperlink" Then
If Dokument.Save_File(Dokument.iDokumentNr.Value, Me.txtFilename.Text) = False Then
MsgBox("Die Datei konnte nicht gespeichert werden." + vbExclamation)
End If
'Me.Dokument.Dokumentablageort.Save_Data()
Me.SaveFileName = Me.txtDateiname.Text
End If
End Sub
#End Region
'''
''' Auswahl des zu speichernden Dokumentes
'''
'''
'''
'''
Private Sub brnFileOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles brnFileOpen.Click
Me.OpenFileDialog1.ShowDialog()
If Me.OpenFileDialog1.FileName <> "" Then Me.txtFilename.Text = Me.OpenFileDialog1.FileName
Me.txtOriginalFilename_incl_path.Text = Me.txtFilename.Text
Me.txtDateiname.Text = System.IO.Path.GetFileName(Me.txtFilename.Text)
End Sub
'''
''' Dokument anzeigen
'''
'''
'''
'''
Private Sub btnDokumentAnzeigen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDokumentAnzeigen.Click
If Trim(Me.Aktuelles_Dokument) = "" Then Exit Sub
Try
Me.Dokument.Show_Doc(Me.Aktuelles_Dokument)
Catch ex As Exception
MsgBox("Die Datei konnte nicht geöffnet werden.", MsgBoxStyle.Exclamation)
End Try
End Sub
'''
''' Text-Change von Txt-Dateiname
'''
'''
'''
'''
Private Sub txtDateiname_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtDateiname.TextChanged
If Me.txtDateiname.Text <> "" Then Me.btnDokumentAnzeigen.Enabled = True Else Me.btnDokumentAnzeigen.Enabled = False
Me.txtDateiname.ReadOnly = True
End Sub
Private Sub cboxDokumenttyp_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboxDokumenttyp.SelectedIndexChanged
Try
If Me.cboxDokumenttyp.Text = "Hyperlink" Then
Me.pnlDokument.Visible = False
Me.pnlHyperlink.Visible = True
Me.Height = Me.ToolStrip1.Height + Me.Panel1.Height + Me.pnlHyperlink.Height + Me.MenuStrip1.Height + 20
Else
Me.pnlDokument.Visible = True
Me.pnlHyperlink.Visible = False
Me.Height = Me.ToolStrip1.Height + Me.Panel1.Height + Me.pnlDokument.Height + Me.MenuStrip1.Height + 20
End If
Catch
End Try
End Sub
Private Sub txtHyperlink_TextChanged(sender As Object, e As EventArgs) Handles txtHyperlink.TextChanged
Me.txtFilename.Text = Me.txtHyperlink.Text
Me.txtOriginalFilename_incl_path.Text = Me.txtHyperlink.Text
Me.txtDateiname.Text = Me.txtHyperlink.Text
End Sub
End Class