Textbox Wert direkt in DB Speichern ohne Button

  • VB.NET
  • .NET (FX) 3.0–3.5

Es gibt 56 Antworten in diesem Thema. Der letzte Beitrag () ist von Orion.

    Eig. keine schlechte Idee, nur was machst du wenn ich ausversehen "TAB" drücke? Dann wird eventuell etwas unvollständiges ins DataSet geschrieben und ich muss übers DGV sowieso korriegieren.

    Also wieso nicht einfach alle Eingaben machen und dann ein Button.

    Sorry, ich weiß du möchtest es anderst. Aber so etwas ist echt nicht sehr gut, da jede eingabe direkt weitergegeben wird, sobald die TextBox kein Focus mehr hat.
    Oh, ups...
    Naja habs geändert scheint aber immer noch nicht zu funktionieren. Liegt es vielleicht an der ID? Die wird vom Dataset automatisch generiert und vielleicht fügt er diese nicht hinzu oder nicht?
    EDIT: @shaebich sorry ich möchte es nicht anders, der Kunde will es und ja ich weiss das das Probleme macht hab ich auch gesagt, selber Schuld
    Ausserdem kann ich noch vorher prüfen ob mindestens 2 Kommas eingegeben wurden um das halbwegs abzusichern.
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Eig. füllst du mit

    VB.NET-Quellcode

    1. DataSet.DataTable.AddTableRow("Spalte1","Spalte2", "Spalte3")


    Wenn du mehr Informationen über den Aufbau deines GUI geben könntest.
    So wie sich das anhört hast du mehrere TextBoxen, richtig?

    Du könntest bei LostFocus den Wert der TextBox in einer Variablen speichern und wenn die letzte TextBox den Focus verliert, einen ganzen Datensatz generieren.
    Einzelne werte in einen Datensatz zu schreiben würde ich vermeiden.

    Ich glaub du kannst in einem DataSet nur einen kompletten Datensatz einfügen. Ansonsten müsstest du DBNULL werte eintragen und diese dann per "Update" überschreiben.

    Sorry fürs ganze Zensieren,Ich habe meist nur eine Textbox mit relevanten Daten. Aber noch eine weitere ID Zeile im Dataset welche auch da generiert wird und an die DB übergeben wird.
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Hmm, habs so gemacht wie beschrieben und nu kommt dieser Fehler:
    Fehler 1 Zu viele Argumente für "Public Function NewAbsender1Row() As ****LocalDataSet.Absender1Row". C:\Users\*****\Desktop\Projekt Zolltool ****\VB\****tool\****tool\Main.vb 153 58 *****tool
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    ... o.o Ich verstehe die Frage nicht.
    EDIT: Achso du meinst mit welchem Wert die Daten gespeichert werden? Also in der DB ists schlussendlich ntext und RichTextBox1.Text wird ja String sein.
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    so wie dein Bild oben aussieht, besitzt dein DataSet

    - eine DataTable mit 2 Spalten (ID, NameStraßeOrt)

    richtig?

    Dann müsste ein Datasatz aussehen

    ID = 1
    NameStraßeOrt = Stuttgart, Hauptstraße, KPWAS

    VB.NET-Quellcode

    1. DataSet1.DataTable1.AddDataTable1Row(HIER STEHEN METHODENÜBERLADUNGEN)
    Achso, Ja so siehts aus. Habs so gemacht:

    VB.NET-Quellcode

    1. *****LocalDataSet.Absender1.NewAbsender1Row(RichTextBox1.Text)

    muss ich noch was spezielles für die ID mitgeben? wenns ja ReadOnly ist sollte dem Code selber klar sein das es inst nächstmögliche Feld kommen sollte oder nicht?
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Ja, Danke hat daran gelegen aber jetzt kommt wie ich gedacht habe ein Error wegen der ID:

    Einschränkungen konnten nicht aktiviert werden. Mindestens eine Zeile enthält Werte die die Einschränkungen non-null, unique or foreign-key verletzen.
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    So siehts jetzt aus

    VB.NET-Quellcode

    1. Try
    2. *CENSORED*LocalDataSet.Absender1.AddAbsender1Row(RichTextBox1.Text)
    3. Me.Validate()
    4. Me.Absender1BindingSource.EndEdit()
    5. Me.Absender1TableAdapter1.Update(Me.*CENSORED*LocalDataSet.Absender1)
    6. Me.Absender1TableAdapter1.Fill(Me.*CENSORED*LocalDataSet.Absender1)
    7. Me.Update()
    8. Me.Refresh()
    9. MsgBox("Die Datenbank wurde erfolgreich überschrieben")
    10. Catch ex As Exception
    11. MsgBox("Datenbank Aktualisierung fehlgeschlagen")
    12. MsgBox(ex.Message)
    13. End Try

    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    non-null, unique or foreign-key verletzen.


    non-null --> Entweder hast du bei einer Eigenschaft keinen Wert gesetzt wo einer hin sollte.
    unique --> Vielleicht sind zwei gleiche Eiträge vorhanden, welche jedoch unique sein sollten.
    foreign-key --> Vielleicht hast du eine Relation, welche in Absender nicht gesetzt wurde.
    Also wenn ich das programm ausführe und die Textbox teste kommen mir die beiden MsgBoxes entgegen "Fehlgeschlagen" und in der Zweiten die Meldung die ich vorhin gepostet habe. Wenn ich danach dasselbe wiederhole steht da erfolgreich. Wenn ich dann aber das DGV Laden möchte kommt der Fehler wieder für diese Zeile die die Daten ins DGV lädt:

    VB.NET-Quellcode

    1. Private Sub DBAuswahl1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    2. Me.Absender1TableAdapter.Fill(Me.*CENSORED*LocalDataSet.Absender1)
    3. End Sub


    Habe eine Relation die in eine weitere Textbox verweist wo dann die Unterschrift des Absenders hin muss.
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)

    Das hab ich im Dataset schon ganz am Anfang als Fehler gehabt. Habs auch schon behoben... Daran kanns nicht liegen.
    Metal-Schweiz wurde nun offiziell veröffentlich nach all den Jahren :)