SQLite und Richtextbox

  • VB.NET

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

    SQLite und Richtextbox

    Hallo

    Ich bin grade dabei ein bisschen mit Datenbanken zu "spielen". Ich habe unter anderem eine Richtextbox deren Inhalt (samt Formatierung) ich in eine SQLite DB schreiben möchte.
    Soweit funktioniert das auch bis auf folgendes Problem:
    Wenn ich in einem Datensatz was in der RTB ändere und auf speichern (in die SQL) klicken, wird alles übernommen und passt. Wenn ich aber vor dem speichern zu einem anderen Datensatz gehe, wird die Änderung nicht gespeichert. Kurz gesagt, es wird nur der Inhalt der RTB den ich im aktuellen Datensatz gerade sehe gespeichert.
    Ins Dataset hingegen wird jede Änderung übernommen - nur nicht in SQLite.
    Beim Form_Load habe ich folgenden Code um überhaupt die RTF Eigenschaft speicher zu können.

    VB.NET-Quellcode

    1. RichTextBox1.DataBindings.Add("Rtf", RezepteBindingSource, "Beschreibung")


    Ach ja, der Datentyp im Dataset ist String und in der SQLite DB Text.
    Ich hoffe Ihr könnt mir auf die Sprünge helfen warum alles klappt, nur das nicht...
    Es ist oft bei den Datei-Eigenschaften der eingebundenen Datenbank Ins Ausgabeverzeichnis kopieren: Immer eingestellt.
    Bei einem neuen Testlauf wird dann automatisch die im vorigen Testlauf geänderte DB überschrieben und man glaubt - es wurden keine Änderungen gespeichert. Überprüfe diese Einstellung einmal...
    Ich habe den Pfad zur DB fix angegeben, also nicht relativ zum Projekt. Passiert das dann auch noch? Kann ich grade nicht mehr kontrollieren was eingestellt ist - geht erst morgen Abend wieder.
    Ich glaube aber nicht dass das der Grund ist, weil ja alles andere funktioniert
    So ich hab das gecheckt. Ich habe die DB nicht ins Projekt eingebunden sondern spreche sie per Code an.Ich poste jetzt mal alles wie ich speichere, lade usw. Vielleicht sieht jemand wo dass ich einen Fehler mache.

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    2. RichTextBox1.DataBindings.Add("Rtf", RezepteBindingSource, "Beschreibung", True, DataSourceUpdateMode.OnPropertyChanged)
    3. End Sub


    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Load_Click(sender As Object, e As EventArgs) Handles BtnLoad.Click
    2. Dim connect As New SQLite.SQLiteConnection
    3. connect.ConnectionString = "Data Source=E:\Backup C\vb test\data - 2\data\test.s3db"
    4. connect.Open()
    5. Dim daRezepte As New SQLiteDataAdapter("SELECT * FROM Rezepte", connect)
    6. daRezepte.FillSchema(DSRezepte, SchemaType.Source, "Rezepte")
    7. daRezepte.Fill(DSRezepte, "Rezepte")
    8. connect.Close()
    9. End Sub


    Spoiler anzeigen

    VB.NET-Quellcode

    1. Private Sub Save_Click(sender As Object, e As EventArgs) Handles BtnSave.Click
    2. Dim sConnectionString As String
    3. sConnectionString = "Data Source=E:\Backup C\vb test\data - 2\data\test.s3db"
    4. RezepteBindingSource.EndEdit()
    5. Me.Validate()
    6. Dim objConn As New SQLite.SQLiteConnection(sConnectionString)
    7. objConn.Open()
    8. Dim daRezepte As New SQLite.SQLiteDataAdapter("SELECT * FROM Rezepte", objConn)
    9. Dim cbRezepte As New SQLite.SQLiteCommandBuilder(daRezepte)
    10. daRezepte.Update(DSRezepte, "Rezepte")
    11. objConn.Close()
    12. DSRezepte.AcceptChanges()
    13. End Sub
    nochmal ich...
    hab grade bemerkt, wenn ich das

    VB.NET-Quellcode

    1. RezepteBindingSource.EndEdit()
    bei z.B. Richtextbox1.LostFocus reinschreiben, dann funktioniert alles.
    Das Dumme ist nur, wenn ich das so mache, kann ich z.B. den Text nicht mehr formatieren, weil wenn das EndEdit aufgerufen wird, ist auch der Text nicht mehr markiert...