Hallo Zusammen,
ich habe die Suche schon bemüht, konnte allerdings nicht wirklich bzgl. meines Problemes fündig werden. Hoffe, ihr könnt mir helfen!
Ich habe eine relativ simple Tabelle in Access erstellt und möchte diese über ein Formular , erstellt in VB 2010, anzeigen und füllen lassen. Ich habe dabei die Galileo Plattform genutzt, um mir das Ganze selber beizubringen.
Die Anzeige der Daten aus der DB im Formular klapp wunderbar, ich möchte aber einen Schritt weitergehen und die Daten ändern, löschen oder hinzufügen.
Ich komme nun nicht mehr weiter an der Stelle, an der die angehängten Änderungen im DataSet an die DB übergeben werden.
Wenn ich Daten hinzufüge, dann scheinen diese zwar im DataSet auch vorhanden, aber werden nicht an die DB übergeben.
Was mache ich falsch, könnt ihr mir helfen?
Achso, die DB habe ich nicht in das Projekt eingefügt, diese soll autark bleiben!
Vielen Dank vorab!
ich habe die Suche schon bemüht, konnte allerdings nicht wirklich bzgl. meines Problemes fündig werden. Hoffe, ihr könnt mir helfen!
Ich habe eine relativ simple Tabelle in Access erstellt und möchte diese über ein Formular , erstellt in VB 2010, anzeigen und füllen lassen. Ich habe dabei die Galileo Plattform genutzt, um mir das Ganze selber beizubringen.
Die Anzeige der Daten aus der DB im Formular klapp wunderbar, ich möchte aber einen Schritt weitergehen und die Daten ändern, löschen oder hinzufügen.
Ich komme nun nicht mehr weiter an der Stelle, an der die angehängten Änderungen im DataSet an die DB übergeben werden.
Wenn ich Daten hinzufüge, dann scheinen diese zwar im DataSet auch vorhanden, aber werden nicht an die DB übergeben.
Was mache ich falsch, könnt ihr mir helfen?
Achso, die DB habe ich nicht in das Projekt eingefügt, diese soll autark bleiben!
Vielen Dank vorab!
VB.NET-Quellcode
- 'Import der Klasse(n) um die Objekte freizugeben
- Imports System.Data
- Imports System.Data.OleDb
- Public Class Form1
- 'objConnection = Provider verbindet zur Quelle, DataAdapter = Datenmenge aus Quelle über SQL,
- 'DataSet=Puffer/Zwischenspeicher für angezeigte und veränderte Daten, DataView = Bereitstellung der Daten auf Formular
- Dim objConnection As OleDb.OleDbConnection = New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; " & "Data Source=C:\Tools\KKontakt\KKontakt.mdb")
- Dim objDataAdapter As OleDb.OleDbDataAdapter
- Dim objDataSet As DataSet
- Dim objDataView As DataView
- Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
- 'Wertzuweisung für definierte Objekte
- objDataView = Nothing
- 'neues DataSet für Prozedur
- objDataSet = New DataSet()
- 'Verbindung öffnen
- objConnection.Open()
- 'Adapter wird definiert, Referenz über SQL-Anweisung
- objDataAdapter = New OleDb.OleDbDataAdapter("SELECT ID, Datum, Bearbeiter, Quelle, Klasse FROM [Kontaktklassifizierung E-Mail] Order by Datum", objConnection)
- 'Adapter wird gefüllt
- objDataAdapter.Fill(objDataSet, "Kontaktklassifizierung E-Mail")
- 'DataView wird auf DB referenziert
- objDataView = New DataView(objDataSet.Tables("Kontaktklassifizierung E-Mail"))
- 'Steuerelemente an Datenfelder(DB) binden (DataBinding)
- With Me
- .TextBox1.DataBindings.Add("Text", objDataView, "Datum")
- .TextBox2.DataBindings.Add("Text", objDataView, "Bearbeiter")
- .TextBox3.DataBindings.Add("Text", objDataView, "Quelle")
- .TextBox4.DataBindings.Add("Text", objDataView, "Klasse")
- End With
- 'Ereignissanzeige für Sub AnzDatensatz
- AddHandler Me.BindingContext(objDataView).PositionChanged, AddressOf AnzDatensatz
- 'explizites anstoßen des Ereignisses
- Me.AnzDatensatz(objDataView, New System.EventArgs())
- End Sub
- Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
- 'Anhängen eines neuen Datensatz in die DB (über Steuerfelder)
- 'Deklarieren einer neuen Zeile (DataRow) als Objekt
- Dim objTabelle As DataTable
- Dim objZeile As DataRow
- objTabelle = objDataSet.Tables("Kontaktklassifizierung E-Mail")
- 'Objekt wird als Eigenschaft "neue Zeile" der DB gesetzt
- objZeile = objTabelle.NewRow()
- With objZeile
- 'der Wert der Textbox wird in den Datensatz/Datenfeld (DataAdapter) geschrieben
- .Item("Datum") = TextBox1.Text
- .Item("Bearbeiter") = TextBox2.Text
- .Item("Quelle") = TextBox3.Text
- .Item("Klasse") = TextBox4.Text
- End With
- 'an das DataSet werden die im Adapter gespeicherten neuen Werte angehängt
- objDataSet.Tables("Kontaktklassifizierung E-Mail").Rows.Add(objZeile)
- 'Änderungen bestätigen
- objDataSet.AcceptChanges()
- 'Anstoß der Aktualisierung über DataSet in DB/Befehl Update verlangt ein DataSet und den Namen der Tabelle (DB)
- objDataAdapter.Update(objDataSet, "Kontaktklassifizierung E-Mail")
- End Sub
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Twace“ () aus folgendem Grund: weitere Information: