Modules/EDMDesigner/FrmMain.vb
2018-10-08 16:44:01 +02:00

173 lines
5.9 KiB
VB.net

Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Imports System.IO
Public Class FrmMain
Private _selectedTable As Integer
Private _selectedTableName As String
Private _logger As Logger
Private _logConfig As LogConfig
Private _firebird 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"),
.Name = 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 _firebird.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()
_firebird = New Firebird(_logConfig, My.Settings.fbDatasource, My.Settings.fbDatabaseLocation, My.Settings.fbUser, My.Settings.fbPassword)
If _firebird.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, _firebird.DatabaseName)
End Sub
Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
_logConfig = New LogConfig(LogConfig.PathType.CurrentDirectory)
_logger = _logConfig.GetLogger() '_logConfig.LogFactory.GetCurrentClassLogger(GetType(Logger))
_logger.NewBlock("STARTUP")
_logger.Info("INFO")
_logger.Warn("WARN")
_logger.NewBlock("ERROR")
Try
Throw New Exception("ERROR")
Catch ex As Exception
_logger.Error(ex)
End Try
' Check for existing database credentials
While Not DatabaseSettingsExist()
Dim form As New FrmConnection With {
.LogConfig = _logConfig
}
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
_selectedTableName = Nothing
' 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
_selectedTableName = e.Node.Name
contextMenuTable.Show(MousePosition)
Case "DATABASE"
contextMenuDatabase.Show(MousePosition)
End Select
treeViewMain.SelectedNode = e.Node
End If
End Sub
Private Sub TabelleBearbeitenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles TabelleBearbeitenToolStripMenuItem.Click
Dim oDataTable = New DataTable()
Dim oConnection = _firebird.GetConnection()
Dim oDataAdapter = New FirebirdSql.Data.FirebirdClient.FbDataAdapter($"SELECT * FROM VWEDM_TABLE_COLUMN WHERE TABLE_ID = {_selectedTable}", oConnection)
Try
oDataAdapter.Fill(oDataTable)
gridControlTableProperties.DataSource = oDataTable
Catch ex As Exception
_logger.Error(ex)
MsgBox($"Error while loading columns for table {_selectedTable}")
Finally
oConnection.Close()
End Try
oDataTable = New DataTable()
oConnection = _firebird.GetConnection()
oDataAdapter = New FirebirdSql.Data.FirebirdClient.FbDataAdapter($"SELECT * FROM VW_{_selectedTableName}", oConnection)
Try
oDataAdapter.Fill(oDataTable)
gridControlTableData.DataSource = oDataTable
Catch ex As Exception
_logger.Error(ex)
MsgBox($"Error while loading data for table {_selectedTable}")
Finally
oConnection.Close()
End Try
'Dim dt As DataTable = _firebird.GetDatatable($"SELECT * FROM VWEDM_TABLE_COLUMN WHERE TABLE_ID = {_selectedTable}")
'gridControlTableProperties.DataSource = dt
End Sub
Private Sub NeueTabelleToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles NeueTabelleToolStripMenuItem.Click
Dim oForm As New FrmNewTable(_logConfig)
oForm.ShowDialog()
Dim oTables As DataTable = LoadTables()
CreateTableNodesFromDatatable(oTables, _firebird.DatabaseName)
End Sub
End Class