Zugriff auf selektierte Node

' allgemein
Dim node As TreeNode = MyTreeView.SelectedNode
  
If node Is Not Nothing Then
   ...
End If

' über MouseClick-Ereignis
Private Sub tvObjects_NodeMouseClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.TreeNodeMouseClickEventArgs) Handles tvObjects.NodeMouseClick
    Dim s As String = e.Node.Text
End Sub

Allgemeines zur Arbeit mit dem TreeView

  1. Knoten (Nodes) erstellen
  2. Dim tnNode As TreeNode
    
    tnNode = tvObjects.Nodes.Add("NodeName")
    
  3. Unterknoten (SubNodes) erstellen
  4. Dim tnRootNode As TreeNode
    Dim tnObjectNode As TreeNode
    
    tnRootNode = tvObjects.Nodes.Add("RootNode")
    tnObjectNode = tnRootNode.Nodes.Add("SubNode")
    
  5. Zurgiff auf einen Knoten (Node)
  6. Dim tnNode As TreeNode
    
    tnNode = tvObjects.Nodes(0) 'Index der Node im selben Zweig
    
  7. Knoten aufklappen (Node expandieren)
  8. Dim tnRootNode As TreeNode
    Dim tnObjectNode As TreeNode
    
    tnRootNode = tvObjects.Nodes.Add("RootNode")
    tnObjectNode = tnRootNode.Nodes.Add("SubNode")
    
    ' Rootnode aufklappen, damit die untergeordnete Node "SubNode" zu sehen ist
    tnRootNode.Expand()
    
  9. TreeView komplett löschen
  10. tvObjects.Nodes.Clear()
    

Try/Catch/Finally

Try
   'Auszuführender Code
   ...
Catch ex As Exception
   ' wenn etwas bei try schief gelaufen ist, z.B. die entspr. Exception anzeigen
   MessageBox.Show("Fehler: " & ControlChars.CrLf & ex.ToString())
Finally
   ' abschließend noch etwas erledigen (optional)
   ' wird in jedem Falle ausgeführt
   ...
End Try

Modale Fenster

Formular erzeugen und folgendes einstellen (Beispiel)

  • StartPosition: CenterParent
  • MaximizeBox: False
  • MinimizeBox: False
  • FormBorderStyle: FixedDialog
  • Buttons drauf + DialogResult entsprechend dem Button einstellen (Ok, Cancel)

Aufruf der Form

Dim FMyModalForm As New MyModalForm
  
If FMyModalForm.ShowDialog(Me) = Windows.Forms.DialogResult.OK Then
    ...
End If

[ADODB] letzte Insert ID ermitteln

With DBRecordset
     .ActiveConnection = DBConnection
     .CursorLocation = ADODB.CursorLocationEnum.adUseClient
     .LockType = ADODB.LockTypeEnum.adLockOptimistic
     .Open("SELECT @@IDENTITY")
     
     oder
     
     .Open("SELECT MAX(ID_Field) FROM Table")
     
     If .RecordCount = 1 Then
         Dim iZahl As Interger = .Fields(0).Value
     End If
End With

[OleDB] Verwendung eines DataGridView

Dim sConnectionString
Dim sSQL As String

sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mydatabase.mdb"
sSQL = "SELECT ID, Name FROM Person"

Dim DB_Conn As New System.Data.OleDb.OleDbConnection(sConnectionString)
Dim DB_DataAdapter As New System.Data.OleDb.OleDbDataAdapter(sSQL, DB_Conn)
Dim DataSet As New DataSet()

DB_Conn.Open()
DB_DataAdapter.Fill(DataSet, "Person")

dgvConsumptionData.DataSource = DataSet.Tables("Person")

DB_Conn.Close()

[OleDB] Daten in MS Access löschen (DELETE)

Dim DB_OleDBCommandDelete As New System.Data.OleDb.OleDbCommand
Dim sSQL As String

Try
    ' steht die Datenbankankbindung?
    If DB_OleDBConnection.State = System.Data.ConnectionState.Open Then
        DB_OleDBCommandDelete.Connection = DB_OleDBConnection
        sSQL = "DELETE FROM Users WHERE ID=1"

        DB_OleDBCommandDelete.CommandText = sSQL
        DB_OleDBCommandDelete.ExecuteNonQuery()
    End If

    DB_OleDBCommandDelete.Dispose()
    DB_OleDBCommandDelete = Nothing
Catch ex As Exception
    MessageBox.Show("Fehler: " & ControlChars.CrLf & ex.ToString())
End Try

[OleDB] Daten in MS Access ändern (UPDATE)

Dim DB_OleDBCommand As New System.Data.OleDb.OleDbCommand
Dim sSQL As String
Dim sDecimalSeparator As String = System.Globalization.CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator

Try
    DB_OleDBCommand.Connection = frmMain.DB_OleDBConnection

    sSQL = "UPDATE Users SET Name='" & tbName.Text & "', " & _
    "Weight=" & tbPower.Text.Replace(sDecimalSeparator, ".") & ", " & _
    "WHERE ID=" & Me.Tag.ToString

    DB_OleDBCommand.CommandText = sSQL
    DB_OleDBCommand.ExecuteNonQuery()
    DB_OleDBCommand.Dispose()
    DB_OleDBCommand = Nothing
Catch ex As Exception
    MessageBox.Show("Fehler: " & ControlChars.CrLf & ex.ToString())
End Try

[OleDB] Daten in MS Access einfügen (INSERT) und letzte Insert-ID ermitteln

Dim DB_OleDBCommandInsert As New System.Data.OleDb.OleDbCommand
Dim DB_OleDBCommandSelect As New System.Data.OleDb.OleDbCommand

With DB_OleDBCommandInsert
    .CommandText = "INSERT INTO Users (Name) VALUES ('Horst')"
    .Connection = frmMain.DB_OleDBConnection ' Connection wurde in frmMain erzeugt
    .ExecuteNonQuery()
    .Dispose()
End With

Dim iID As Integer = -1 ' Platzhalter für die Insert-ID

'letzte Insert ID zurückholen, ab Provider=Microsoft.Jet.OLEDB.4.0 möglich
With DB_OleDBCommandSelect
    .CommandText = "SELECT @@IDENTITY"
    .Connection = frmMain.DB_OleDBConnection ' Connection wurde in frmMain erzeugt
    iID = .ExecuteScalar()
    .Dispose()
End With

DB_OleDBCommandInsert = Nothing
DB_OleDBCommandSelect = Nothing

[OleDB] Datenzugriff (SELECT)

Dim DB_OleDBConnection As System.Data.OleDb.OleDbConnection
Dim DB_OleDBCommandSelect As New System.Data.OleDb.OleDbCommand
Dim DB_OleDBReader As System.Data.OleDb.OleDbDataReader

DB_OleDBConnection = New System.Data.OleDb.OleDbConnection

With DB_OleDBConnection
    .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MyDatabase.mdb"
    .Open()
End With

With DB_OleDBCommandSelect
    .CommandText = "SELECT ID, Name FROM Users"
    .Connection = DB_OleDBConnection
    DB_OleDBReader = .ExecuteReader()
    .Dispose()
End With

With DB_OleDBReader
    If .HasRows Then
        Do While .Read()
            System.Console.WriteLine(.Item("Name"))
        Loop
    End If
    .Close()
End With

DB_OleDBCommandSelect = Nothing

DB_OleDBConnection.Close()
DB_OleDBConnection.Dispose()
DB_OleDBConnection = Nothing

oder

Dim sConnectionString
Dim sSQL As String

sConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mydatabase.mdb"
sSQL = "SELECT ID, Name FROM Users"

Dim DB_Conn As New System.Data.OleDb.OleDbConnection(sConnectionString)
Dim DB_Cmd As New System.Data.OleDb.OleDbCommand(sSQL, DB_Conn)
Dim DB_DataReader As System.Data.OleDb.OleDbDataReader

DB_Conn.Open()

DB_DataReader = DB_Cmd.ExecuteReader()

If DB_DataReader.HasRows Then
    Do While DB_DataReader.Read()
        System.Console.WriteLine(DB_DataReader.Item("Name"))
    Loop
End If

DB_DataReader.Close()
DB_Cmd.Dispose()
DB_Cmd = Nothing
DB_Conn.Close()
DB_Conn.Dispose()
DB_Conn = Nothing