Datensatz mit Textboxen erstellen

  • VB.NET

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von LoremIpsum.

    Datensatz mit Textboxen erstellen

    Hallo Community,
    ich stehe gerade voll auf dem Schlauch...

    Nun zum Problem: Ich habe eine Access Datenbank diese wird in einem DatagridView angezeigt.
    Außerdem habe ich 5 Textboxen und einen Button.
    Mit diesen Textboxen möchte ich gerne die Tabelle füllen (neuen Datensatz anlegen) sobald ich den button betätigte und dieser Datensatz soll dann dauerhaft gespeichert werden.

    Jetzt ist das 2.Problem das ich gerade einen dicken Denkfehler habe :/
    Wie lädst du denn deine Datenbank ein ? Per Designer oder von Hand ?
    Für 'DataTable' musst du den Namen deiner DataTable eintragen.

    Wenn du das mit dem Designer gemacht hast findest du die DataTable in der FILL Anweisung, die automatisch erstellt wurde.
    Da steht sowas wie

    VB.NET-Quellcode

    1. Me.Tbl_SonstwasTableAdapter.Fill(Me.DataSet.tbl_Sonstwas)


    Anstelle von 'DataTable.NewRow' trägst du dann

    VB.NET-Quellcode

    1. Me.DataSet.tbl_Sonstwas.NewRow
    ein
    Also ich habe das jetzt so gemacht.
    Nur wird die Row nicht hinzugefügt.
    Kann mir einer sagen woran es liegt ?
    Hier mein Code:

    VB.NET-Quellcode

    1. Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
    2. Dim ds As New DataSet
    3. Dim dtti As New DataTable
    4. ds.Tables.Add(dtti)
    5. Dim daaa As New OleDbDataAdapter
    6. daaa = New OleDbDataAdapter("select Hydrantnummer , Straße , Hausnummer , Lage , Nennwert from Tabelle1", con)
    7. daaa.Fill(dtti)
    8. Dim Zeile As DataRow = dtti.NewRow
    9. Zeile.Item("Hydrantnummer") = TextBox2.Text
    10. Zeile.Item("Straße") = TextBox3.Text
    11. Zeile.Item("Hausnummer") = TextBox4.Text
    12. Zeile.Item("Lage") = TextBox5.Text
    13. Zeile.Item("Nennwert") = TextBox6.Text
    14. dtti.Rows.Add(Zeile)
    15. End Sub
    Ich 'kämpfe' ja selbst noch mit der Datenanbindung in VB, aber so, wie ich deinen Code verstehe, haste die neue Row jetzt im Dataset... und damit erstmal nur im Hauptspeicher. Die VB-Datenbankerei funktioniert ja so, dass man keine permanente Verbindung zur DB hat, sondern sich seine Daten ins DataSet holt - Verbindung wird wieder gekappt - Daten werden im DataSet bearbeitet - dann Verbindung wieder herstellen - und dann zurück in die DB speichern.

    Hast du die Speicherei an einer anderen Stelle im Code oder fehlt die hier noch? Dann bräuchtest du noch was in der Art wie eine UPDATE-Anweisung an deine DB. Kenne mich leider mit der Access-Verbindung nicht aus, weil ich mit SQLServeCE arbeite.

    Weiterhin fällt mir auf, dass du eine neue DataTable erzeugst und die an dein DataSet ranhängst. Ist das so gewollt? Willst du nicht eher auf eine bestehende Tabelle in deiner DB zugreifen, als für den neuen Datensatz eine neue Tabelle zu erzeugen? Oder sehe ich das jetzt falsch?
    Ich code nur 'just for fun'! Damit kann ich jeden Mist entschuldigen, den mein Interpreter verdauen muss :D

    LoremIpsum schrieb:

    Ich habe eine Access Datenbank diese wird in einem DatagridView angezeigt.
    Ich gehe davon aus, das du nen Dataset dafür verwendest?
    Denn kannste doch mit

    VB.NET-Quellcode

    1. Dim r As MeinDataset.MeineTabelleRow = MeinDataset.MeineTabelle.NewMeineTabelleRow
    eine leere Row erzeugen, in der du auf jede Spalte mit Unterstützung durch die Intellisense vollqualizifiert zugreifen kannst.

    VB.NET-Quellcode

    1. r.SoWieMeineSpalteHeißenTut = DasWoInMeineTextboxSteht
    2. 'und wenn alle Felder gefüllt sein tun
    3. 'denn damit die Row adden
    4. MeinDataset.MeineTabelle.Rows.Add(r)


    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Du füllst doch das DataSet mit einem DataAdapter. Der DataAdapter hat eine Updatefunktion!

    VB.NET-Quellcode

    1. myDataAdapter.Update(DataSetName, Tabellenname)

    Sei mir nicht böse, aber wie du das genau coden musst, das schau bitte selbst nach. Ich arbeite mit einem typisierten DataSet und da läuft das anders.
    Ich code nur 'just for fun'! Damit kann ich jeden Mist entschuldigen, den mein Interpreter verdauen muss :D
    Ich kann, offen gestanden, keinen Grund erkennen warum man sich die Mühe machen sollte, auf ein typisiertes Dataset zu verzichten.
    Laß dir doch den ganzen Code vom Designer schreiben. Der is schneller, effektiver und erlaubt dir halt einfache Zugriffe.
    Such ma hier im Forum nach Erfinder des Rades seine Tuts.
    In deinem Code fällt mir auf, dass du dir nen leeres Dataset erstellst, dem du keine Tabelle, jedenfalls nicht die die du da instanzierst, hinzufügst. Und denn fehlen da noch die Tableadapters die des updaten zur DB. Sieht alles etwas planlos aus.

    Wie gesagt, nach EDR seine Tuts (Datenbank in 10 Minuten) wird dir ein Licht aufgehen...

    Fiel Fergnügen

    Vatter
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup: