''' ''' Form mit generalisiertem Domain-Table-Editor. ''' ''' ''' ''' ''' Vertragsverwaltung.TKB.VV.Sysadmin.DomainTable Public Class frmDomainEditor #Region "Deklarationen" Dim Domaintable As Sysadmin.DomainTable Dim faktoren As Sysadmin.DomainTable Dim faktornr As Integer Dim tablename As String Dim SpaltenTitel As New Utils.Tabellenspalte #End Region #Region "Formular-Funktionen" ''' ''' Tabellenname übernehmen und Objekt DomainTable initialisieren ''' Initialisierung der Komponenten ''' ''' Tabellenname der Tabelle, welche über den Domaineditor editiert werden soll ''' Benötigt werden entsprechende Stored_Procedures, welche mit LBLLGEN_2 generiert wurden ''' pr_"Tablename"_SelectAll ''' pr_"Tablename"_Update ''' Public Sub New(ByVal tblname As String) Me.InitializeComponent() Domaintable = New Sysadmin.DomainTable(tblname) Me.Text = "Domaineditor: " & tblname Me.tablename = tblname If Me.tablename = "Jahrestabelle" Then Me.JahrestabelleToolStripMenuItem.Visible = True Else Me.JahrestabelleToolStripMenuItem.Visible = False End Sub ''' ''' Zuordnung der Daten aus Domaintable und Spaltentitel des Grids setzen ''' ''' ''' ''' Private Sub frmDomainEditor_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Me.Domaintable.Tablename = "Auswertung" Then Me.C1Daten.ContextMenuStrip = Me.ContextMenuStripAuswertung End If If Me.Domaintable.Tablename = "Jahrestabelle" Then Me.faktoren = New Sysadmin.DomainTable("Faktoren") End If Me.C1Daten.DataSource = Domaintable.Tabledata Me.C1Daten.DataMember = Domaintable.Tabledata.Tables(0).TableName SpaltenTitel.Spaltentitel_aktualisieren(Me.C1Daten, Me.tablename, Me.Domaintable.Tabledata.Tables(0)) End Sub ''' ''' Schliessen des Formulars ''' ''' ''' ''' Private Sub BeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BeendenToolStripMenuItem.Click Me.Close() End Sub ''' ''' Ruft BeendetnToolStipMenuItem_Click auf ''' ''' ''' ''' Private Sub TSBtnQuit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnQuit.Click BeendenToolStripMenuItem_Click(sender, e) End Sub ''' ''' Prüfung auf allfällige Daten-Changes. Wurden Daten verändert, kann der User entscheiden, ob gespeichert, nichtgespeichert oder ''' das Formular nicht gespeichert werden soll. ''' ''' ''' ''' Private Sub frmDomainEditor_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing If Me.Domaintable.Tabledata.HasChanges Then Dim msg As New Utils.MyMessage Dim msgboxres As MsgBoxResult msgboxres = msg.Show_MessageYesNoCancel(3) If msgboxres = MsgBoxResult.Cancel Then e.Cancel = True Exit Sub End If If msgboxres = MsgBoxResult.Yes Then Domaintable.Save_Data() End If End If If UCase(Me.tablename) = "SPALTEN" Then Globals.Spaltendaten.Rows.Clear() End If Domaintable.dispose() Try faktoren.dispose() Catch End Try End Sub ''' ''' Sichern der Daten ''' ''' ''' ''' Private Sub TSBtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TSBtnSave.Click Try Domaintable.Save_Data() If UCase(Me.tablename) = "SPALTEN" Then Globals.Spaltendaten.Rows.Clear() End If If UCase(Me.tablename) = "TOOLTIP" Then Globals.ToolTipDaten.Tables.Clear() End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub #End Region #Region "C1 Handling" ''' ''' Aktualisierung der Spalten mutiert_am und mutierern. Sofern noch kein Schlüsselwert gesetzt ist (bei neuem Datensatz) ''' wird dieser aus der Keytabelle ausgelesen und zugewiesen. ''' ''' ''' ''' Je Domaintable ist ein Eintrag in der Key-Tabelle notwendig Private Sub C1Daten_AfterColUpdate(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.ColEventArgs) Handles C1Daten.AfterColUpdate 'Aktualisieren von Mutierer und Mutiert_am Dim i As Integer Try For i = 0 To Me.C1Daten.Columns.Count - 1 If LCase(Me.C1Daten.Columns(i).DataField) = "mutiert_am" Then Me.C1Daten.Columns(i).Value = Now If LCase(Me.C1Daten.Columns(i).DataField) = "mutierer" Then Me.C1Daten.Columns(i).Value = Globals.Mitarbeiternr Next 'neuer DB-Key auslösen, sofern kein Key vorhanden ist If Me.C1Daten.Columns(0).Value Is DBNull.Value Then Dim dbkey As New db.clsMyKey_Tabelle() Dim key As Long dbkey.cpMainConnectionProvider = conn key = dbkey.get_dbkey(tablename) Me.C1Daten.Columns(0).Value = key For i = 0 To Me.C1Daten.Columns.Count - 1 If LCase(Me.C1Daten.Columns(i).DataField) = "mandantnr" Then Me.C1Daten.Columns(i).Value = 1 End If If LCase(Me.C1Daten.Columns(i).DataField) = "erstellt_am" Then Me.C1Daten.Columns(i).Value = Now End If If LCase(Me.C1Daten.Columns(i).DataField) = "aktiv" Then Me.C1Daten.Columns(i).Value = 1 End If Next dbkey.Dispose() End If Catch End Try If Me.tablename = "Jahrestabelle" Then If Me.C1Daten.Columns("Plantage").Value > 0 Then Dim faktor As Double For Each dr As DataRow In faktoren.Tabledata.Tables(0).Rows If dr.Item("Eintragnr") = C1Daten.Columns("Faktornr").Value Then C1Daten.Columns("Arbeitstage").Value = C1Daten.Columns("Plantage").Value * dr("Faktor_Prod_Tage") End If Next End If End If End Sub ''' ''' Aktualisierung der Default-Werte ''' ''' ''' ''' Private Sub C1Daten_AfterInsert(ByVal sender As Object, ByVal e As System.EventArgs) Handles C1Daten.AfterInsert 'Dim i As Integer ''Defaulwerte erstellt_am, mutiert_am, mutierer und aktiv setzen 'Try ' For i = 0 To C1Daten.Columns.Count - 1 ' If LCase(Me.C1Daten.Columns(i).DataField) = "aktiv" Then ' Me.C1Daten.Columns(i).Value = 1 ' End If ' If LCase(Me.C1Daten.Columns(i).DataField) = "mutiert_am" Then ' Me.C1Daten.Columns(i).Value = Now ' End If ' If LCase(Me.C1Daten.Columns(i).DataField) = "mutierer" Then ' Me.C1Daten.Columns(i).Value = Globals.clsmitarbeiter.iMitarbeiternr.Value ' End If ' If LCase(Me.C1Daten.Columns(i).DataField) = "mandantnr" Then ' Me.C1Daten.Columns(i).Value = Globals.clsmitarbeiter.iMandantnr.Value ' End If ' If LCase(Me.C1Daten.Columns(i).DataField) = "mandnat" Then ' Me.C1Daten.Columns(i).Value = Globals.clsmitarbeiter.iMandantnr.Value ' End If ' Next 'Catch 'End Try End Sub ''' ''' Anzeige allfälliger Cellen-Tips ''' ''' ''' ''' Private Sub C1Daten_FetchCellTips(ByVal sender As Object, ByVal e As C1.Win.C1TrueDBGrid.FetchCellTipsEventArgs) Handles C1Daten.FetchCellTips Dim ts As New Utils.Tabellenspalte ts.Tabelle = Me.tablename Try 'ts.Feld = Me.C1Daten.Splits(0).DisplayColumns(e.ColIndex).Name ts.Feld = Me.C1Daten.Columns(e.ColIndex).DataField ts.getspalte() e.CellTip = ts.TipText Catch End Try ts = Nothing End Sub #End Region Private Sub ReportdateiDBToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ReportdateiDBToolStripMenuItem.Click Me.OpenFileDialog1.Filter = "Report-Dateien|*.rpt|Alle Dateien|*.*" Me.OpenFileDialog1.ShowDialog() If Me.OpenFileDialog1.FileName <> "" Then Dim dms As New TKB.VV.Utils.MyDocMgmt Me.C1Daten.Columns("Filename").Value = dms.Save_RptDatei(Me.C1Daten.Columns("Auswertungnr").Value, Me.OpenFileDialog1.FileName) dms = Nothing End If End Sub Private Sub ReportdateiFilesystemToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ReportdateiFilesystemToolStripMenuItem.Click Me.SaveFileDialog1.Filter = "Report-Dateien|*.rpt|Alle Dateien|*.*" Me.SaveFileDialog1.ShowDialog() If Me.SaveFileDialog1.FileName <> "" Then Dim dms As New TKB.VV.Utils.MyDocMgmt dms.Get_RptDatei(Me.C1Daten.Columns("Auswertungnr").Value, Me.SaveFileDialog1.FileName) dms = Nothing End If End Sub Private Sub EinträgeFürJahrGenerierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles EinträgeFürJahrGenerierenToolStripMenuItem.Click Dim dbkey As New DB.clsMyKey_Tabelle() Dim faktornr As Integer = 0 For Each dr As DataRow In Faktoren.Tabledata.Tables(0).Rows If dr("Standard") = True Then faktornr = dr.Item(0) End If Next Dim s As String s = InputBox("Bitte Jahreszahl (z.B: 2013) für die Generierung eingeben") If IsNumeric(s) Then For i = 1 To 12 dbkey.cpMainConnectionProvider = conn Dim dr As DataRow = Domaintable.Tabledata.Tables(0).NewRow dr.Item(0) = dbkey.get_dbkey(tablename) dr.Item(1) = s dr.Item(2) = i dr.Item(3) = 0 dr.Item(4) = faktornr dr.Item(5) = 0 dr.Item(6) = True dr.Item(7) = Now dr.Item(8) = Now dr.Item(9) = Globals.Mitarbeiternr Domaintable.Tabledata.Tables(0).Rows.Add(dr) Next Me.C1Daten.DataSource = Nothing Me.C1Daten.DataSource = Domaintable.Tabledata Me.C1Daten.DataMember = Domaintable.Tabledata.Tables(0).TableName SpaltenTitel.Spaltentitel_aktualisieren(Me.C1Daten, Me.tablename, Me.Domaintable.Tabledata.Tables(0)) Else MsgBox("Der eingegebene Wert '" + s + "' ist ungültig.") End If End Sub End Class