Imports DigitalData.Modules.Database Imports DigitalData.Modules.Logging Imports System.IO Public Class FrmMain Private SelectedTable As Integer Private _logger As NLog.Logger Private _logConfig As LogConfig Private DBFirebird As Firebird Private Sub CreateTableNodesFromDatatable(DataTable As DataTable, DatabaseName As String) treeViewMain.Nodes.Clear() ' Node der Datenbank erstellen Dim oDbNode As New TreeNode With { .Text = DatabaseName, .Name = "DATABASE" } ' Übernode für Tabellen erstellen Dim oTablesNode As New TreeNode With { .Text = "Tabellen", .Name = "TABLES" } ' Nodes für Tabellen erstellen Dim oTableNodeList As New List(Of TreeNode) For Each row As DataRow In DataTable.Rows Dim oNode As New TreeNode With { .Text = row.Item("TABLE"), .Tag = row.Item("TABLE_ID") } oTableNodeList.Add(oNode) Next ' Nodes zusammenfügen oTablesNode.Nodes.AddRange(oTableNodeList.ToArray) oDbNode.Nodes.Add(oTablesNode) ' Nodes einhängen treeViewMain.Nodes.Add(oDbNode) treeViewMain.ExpandAll() End Sub Private Function LoadTables() Return DBFirebird.GetDatatable("SELECT DISTINCT T.TABLE_ID,T.""TABLE"" from VWEDM_TABLE_COLUMN T") End Function Private Function DatabaseSettingsExist() Return My.Settings.fbDatabaseLocation <> String.Empty And My.Settings.fbDatasource <> String.Empty And My.Settings.fbUser <> String.Empty And My.Settings.fbPassword <> String.Empty End Function Private Sub Init() DBFirebird = New Firebird(_logConfig.LogFactory, My.Settings.fbDatasource, My.Settings.fbDatabaseLocation, My.Settings.fbUser, My.Settings.fbPassword) If DBFirebird.ConnectionFailed Then MsgBox("Database connection failed. Please check the log.", vbCritical) Exit Sub End If ' Get info about the logged in user 'CurrentUser = New ClassCurrentUser(DBFirebird) Dim dt As DataTable = LoadTables() CreateTableNodesFromDatatable(dt, DBFirebird.DatabaseName) End Sub Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles Me.Load _logConfig = New LogConfig(ClassLogger.PathType.CurrentDirectory) _logger = _logConfig.LogFactory.GetCurrentClassLogger() ' Check for existing database credentials While Not DatabaseSettingsExist() Dim form As New FrmConnection With { .LogFactory = _logConfig.LogFactory } Dim result As DialogResult = form.ShowDialog() If result = DialogResult.OK Then Exit While End If End While Init() End Sub Private Sub TreeViewMain_NodeMouseClick(sender As Object, e As TreeNodeMouseClickEventArgs) Handles treeViewMain.NodeMouseClick If e.Button = MouseButtons.Right Then SelectedTable = -1 ' Wenn kein Node geklickt wurde, aussteigen If e.Node Is Nothing OrElse e.Node.Parent Is Nothing Then Exit Sub End If Dim parentName As String = e.Node.Parent.Name ' Das Kontextmenü für den angeklickten Node öffnen Select Case parentName Case "TABLES" SelectedTable = e.Node.Tag contextMenuTable.Show(MousePosition) Case "DATABASE" contextMenuDatabase.Show(MousePosition) End Select treeViewMain.SelectedNode = e.Node End If End Sub Private Sub SpaltenBearbeitenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SpaltenBearbeitenToolStripMenuItem.Click Dim dt As DataTable = DBFirebird.GetDatatable($"SELECT * FROM VWEDM_TABLE_COLUMN WHERE TABLE_ID = {SelectedTable}") gridControlTableProperties.DataSource = dt End Sub Private Sub TabelleBearbeitenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TabelleBearbeitenToolStripMenuItem.Click End Sub Private Sub DebugAnToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DebugAnToolStripMenuItem.Click _logConfig.Debug = True End Sub Private Sub DebugAusToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DebugAusToolStripMenuItem.Click _logConfig.Debug = False End Sub Private Sub WriteDebugLogToolStripMenuItem_Click(sender As Object, e As EventArgs) _logger.Debug("Welcome to monkey island!") End Sub Private Sub SpamTheLogToolStripMenuItem_Click(sender As Object, e As EventArgs) For index = 1 To 100000 _logger.Debug("Spam No. {0}", index) Next End Sub Private Sub NeueTabelleToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeueTabelleToolStripMenuItem.Click Dim oForm As New FrmNewTable(_logConfig.LogFactory) oForm.ShowDialog() Dim oTables As DataTable = LoadTables() CreateTableNodesFromDatatable(oTables, DBFirebird.DatabaseName) End Sub End Class