Eintrag zur Datenbank hinzufügen funktioniert nicht

  • VB.NET
  • .NET (FX) 4.0

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Trulchen.

    Eintrag zur Datenbank hinzufügen funktioniert nicht

    Hallo,

    ich möchte einen Eintrag mit BindingContext zur Datenbank hinzufügen.
    Leider speichert er mir nur leere Einträge.
    Kann mir jemand helfen das Problem zu suchen?


    VB.NET-Quellcode

    1. If tb_name.Text = "" Or tb_vor_name.Text = "" Then
    2. MsgBox("Bitte geben sie einen Gültigen Vor und Nachnamen ein!")
    3. Else
    4. Try
    5. objCon.Open()
    6. Catch ex As Exception
    7. MessageBox.Show(ex.Message.ToString)
    8. End Try
    9. objDataSet = New DataSet()
    10. Dim objCommandBuilder As OleDb.OleDbCommandBuilder
    11. 'Beim Formularladen
    12. objDataAdapter = New OleDb.OleDbDataAdapter("select * from Kunden", objCon)
    13. objCommandBuilder = New OleDb.OleDbCommandBuilder(objDataAdapter)
    14. 'DataSet bedeutet Tabelle "Lieferanten" im Hauptspeicher abstellen
    15. objDataAdapter.Fill(objDataSet, "Kunden")
    16. 'Befüllen der einzelen Felder
    17. BindingContext(objDataSet, "Kunden").AddNew()
    18. 'tb_kundennummer.DataBindings.Add("Text", objDataSet, "Kunden.ID")
    19. tb_name.DataBindings.Add("Text", objDataSet, "Kunden.Nachname")
    20. tb_vor_name.DataBindings.Add("Text", objDataSet, "Kunden.Vorname")
    21. tb_strasse.DataBindings.Add("Text", objDataSet, "Kunden.Strasse")
    22. tb_PLZ.DataBindings.Add("Text", objDataSet, "Kunden.PLZ")
    23. tb_ort.DataBindings.Add("Text", objDataSet, "Kunden.Ort")
    24. 'Physikalisches Schreiben
    25. BindingContext(objDataSet, "Kunden").EndCurrentEdit()
    26. objDataAdapter.Update(objDataSet, "Kunden")
    27. End If
    Mein Datenmodell ist nur eine Tabelle: Kunde mit den Feldern ID, Nachname, Vorname, Straße, PLZ , Ort

    Ich gib ganz ehrlich zu das ich ein Anfänger bin und mich an die Anleitung vom Prof gehalten habe. Muss ich Zeile 19 bis 29 einfach weg lassen ?


    Beschreibung Prof -- " Vorgehensweise bei Neuanlage"

    Neue Deklaration

    Dim objCommandBuilder As OleDb.OleDbCommandBuilder

    Beim Formularladen

    objDataAdapter = New OleDb.OleDbDataAdapter("SELECT * .........)

    objCommandBuilder = New OleDb.OleDbCommandBuilder(objDataAdapter)

    objDataAdapter.Fill(..........)

    Neuanlage

    BindingContext(......).AddNew()

    Neuanlage abbrechen

    BindingContext(......).CancelCurrentEdit()

    Physikalisches Schreiben

    BindingContext(......).EndCurrentEdit()
    objDataAdapter.Update(......)
    oh je - ein Prof.
    Über den Lehrkörper lieben wir es ja, mit Fleiß drüber zu lästern: Java und der Schulunterricht

    Egal, also ich interpretiere die Absicht des Codes mal so, dass eine Tabelle geladen wird, ein Datensatz zugefügt, und die ganze Tabelle wieder abgespeichert wird.
    Alles in einer Funktion, also das wird sich in 0,01s vollziehen, und der User wird keine Gelegenheit haben, währenddessen irgendetwas einzugeben.
    Welche Daten also soll der neu zuzufügende Datensatz eigentlich enthalten?

    Und es ist natürlich totaler Schwachsinn, denn um einen Datensatz zuzufügen, muss man nicht zuvor die ganze Tabelle laden.
    Einen Datensatz fügt man einfach zu.
    Und zugefügt ist.

    Weiters gibts in deim Code ein geheimnisvolles BindingContxt - was offensichtlich nicht zu funktionieren scheint.
    Ja, hier ist die Beratung schon am Ende, zu einem Objekt, was mir gänzlich unbekannt ist, was aber nicht funktioniert, kann ich logisch keine sinnreiche Aussage machen.

    Nur über deinen Prof kann ich eine Aussage machen - naja lasse ich mal.
    Oder du hast sein Konzept falsch verstanden.

    Ein sinnvolles Konzept würde die Bereiche Laden, Zufügen, Speichern trennen, statt in einer Methode durchzurattern.
    1. Logisch lädt man einen Haufen Daten und präsentiert sie dem User.
    2. Der mag dann vlt. einen (oder mehrere) Datensatz/ätze zufügen
    3. Dann abzuspeichern ergäbe Sinn.
    am einfachsten geht das ohne Datenbank.
    gugge diese Film: Daten laden, speichern, verarbeiten - einfachste Variante
    In dem Tut auch alles dazu erklärt, und BeispielProjekte zum Download.

    Noch einfacher ist der Download von hier: DatasetOnly: DB-Programmierung ohne Datenbank
    Aber auch das ist komplizierter, als was du eiglich brauchst - ich tu mich bischen schwer, sowas einfaches zu tutorialisieren.
    interessanterweise ändert das nichts.

    In meinen Samples gibts immer eine Funktion Load und eine Funktion Save.
    Diese beiden Methoden wären abzuändern - alles andere gilt fort und ohne Abstriche.

    Ach - du kannst auch dieses uralt-Tut durchmachen: "Datenbank in 10 Minuten" auf home.arcor.de/eckardahlers/Pro…r/Downloadpage/index.html

    Da wird das typisierte Dataset nicht selbst aufgebaut, sondern aus der DB generiert.