Dynamischer UPDATE Command

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Dynamischer UPDATE Command

    Hi,

    ich bin noch relativ frisch in der Programmierszene und muss mich auf der Arbeit im Moment mit einer Datenbank auseinandersetzen. Ich habe jetzt ein "Programm" geschrieben, welches die Datenbank zwar auslesen kann, aber ich schaffe es nicht einen dynamischen Updatecommand einzubauen, sodass erkannt wird, welches Feld gerade angeklickt ist er in dieser Zeile, das bestimmte Feld füllen soll.
    Bzw. im Moment passiert einfach gar nichts :-D.
    Ich hoffe doch ihr könnt mir weiterhelfen.

    Danke im voraus!
    hoobeN

    Public Class fOlay

    Private Sub DbGetData(ByVal Table As String, ByVal grid As DataGridView)

    ' Verbindung zur Datenbank herstellen
    Dim myOleDbConnection As New OleDb.OleDbConnection
    myOleDbConnection.ConnectionString = _
    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""C:\Users\AT21572\Documents\Geraetedatenbank\Geraetedatenbank_test_SQL - Copy.accdb"""

    Try
    myOleDbConnection.Open()
    Catch ex As Exception
    MessageBox.Show(ex.Message, _
    "Beim Öffnen der Datenbank ist ein Fehler aufgetreten.")
    End Try

    ' SelectCommand erstellen welches die "Select-Abfrage" gegen die
    ' Datenbank beinhaltet
    Dim myOleDbSelectCommand As New OleDb.OleDbCommand
    myOleDbSelectCommand.Connection = myOleDbConnection
    myOleDbSelectCommand.CommandText = "select * from " & Table

    ' DataAdapter mit dem SelectCommand verbinden
    Dim myOleDbDataAdapter As New OleDb.OleDbDataAdapter
    myOleDbDataAdapter.SelectCommand = myOleDbSelectCommand

    ' und mit dem DataAdapter das DataSet füllen
    Dim myDataSet As New DataSet
    myOleDbDataAdapter.Fill(myDataSet, Table)

    ' Daten an das DataGridView binden
    grid.DataSource = myDataSet
    grid.DataMember = Table

    End Sub

    Private Sub DbUpdate(ByVal Table As String, ByVal grid As DataGridView)

    ' Verbindung zur Datenbank herstellen
    Dim myOleDbConnection As New OleDb.OleDbConnection
    myOleDbConnection.ConnectionString = _
    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""C:\Users\AT21572\Documents\Geraetedatenbank\Geraetedatenbank_test_SQL - Copy.accdb"""

    Try
    myOleDbConnection.Open()
    Catch ex As Exception
    MessageBox.Show(ex.Message, _
    "Beim Öffnen der Datenbank ist ein Fehler aufgetreten.")
    End Try

    ' SelectCommand erstellen welches die "Select-Abfrage" gegen die
    ' Datenbank beinhaltet
    Dim myOleDbSelectCommand As New OleDb.OleDbCommand
    myOleDbSelectCommand.Connection = myOleDbConnection
    myOleDbSelectCommand.CommandText = "UPDATE " & Table & "SET " & grid.CurrentCell.ToString() = grid.CurrentCell.Value.ToString() & "WHERE " & _
    grid.CurrentCellAddress.X.ToString() = grid.CurrentCell.ColumnIndex.ToString()
    ' DataAdapter mit dem SelectCommand verbinden
    Dim myOleDbDataAdapter As New OleDb.OleDbDataAdapter
    myOleDbDataAdapter.UpdateCommand = myOleDbSelectCommand

    ' und mit dem DataAdapter das DataSet füllen
    Dim myDataSet As New DataSet
    myOleDbDataAdapter.Fill(myDataSet, Table)

    ' Daten an das DataGridView binden
    grid.DataSource = myDataSet
    grid.DataMember = Table

    End Sub

    Private Sub butGetData_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

    If TabControl1.SelectedTab Is tabGeraet Then
    DbGetData("Geraete", gGeraet)
    ElseIf TabControl1.SelectedTab Is tabMa Then
    DbGetData("Mitarbeiter", gMa)
    ElseIf TabControl1.SelectedTab Is tabVertrag Then
    DbGetData("Vertrag", gVertrag)
    ElseIf TabControl1.SelectedTab Is tabStandort Then
    DbGetData("Standorte", gStandort)
    End If

    End Sub

    Private Sub butPrep_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles butPrep.Click

    If TabControl1.SelectedTab Is tabGeraet Then
    DbUpdate("Geraete", gGeraet)
    ElseIf TabControl1.SelectedTab Is tabMa Then
    DbUpdate("Mitarbeiter", gMa)
    End If

    End Sub
    End Class
    Ich habe das ganze mittlerweile ein bisschen bearbeitet....es würde funktionieren, wenn hierbei

    myOleDbSelectCommand.CommandText = ("UPDATE " & Table & "SET " & InputBox(AcceptButton, "feld", , , ) = grid.CurrentCell.Value.ToString() & _
    "WHERE " & id = InputBox(AcceptButton, "ID", , , ))

    nicht jedes mal FALSE übergeben wird ... wenn ich "UPDATE GERAETE SET G_SN = test WHERE G_ID = 6" eingebe, dann funktionierts...
    warum wird da false übergeben?? Ich hoffe wenigstens hierbei kann mir jemand helfen!