daten in Listview speichern

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    daten in Listview speichern

    hi,

    wie die Überschrift schon sagt, möchte ich daten die ich vorher in mehreren Textboxen eingebe, in einer Listview speichern ohne die daten in einer separaten text datei abspeichere und beim nächsten start wieder laden muss.

    das befüllen der Listview klappt ganz gut nur wie speichere ich diese Daten direkt in der Listview sodass ich beim näschten start die Daten wieder angezeigt bekomme in der Listview.

    code zum einfügen der daten in die Listview.

    VB.NET-Quellcode

    1. Sub hinzu()
    2. Dim item As New ListViewItem(txt_name.Text)
    3. item.SubItems.Add(txt_url.Text)
    4. item.SubItems.Add(txt_user.Text)
    5. item.SubItems.Add(txt_pwd.Text)
    6. item.SubItems.Add(txt_note.Text)
    7. frm_pwd_liste.lv_wd.Items.AddRange(New ListViewItem() {item})
    8. End Sub


    zum speichern in eine datei hatte ich das in früheren projekten wie folgt realisiert.

    VB.NET-Quellcode

    1. Private Sub SpeichernToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SpeichernToolStripMenuItem.Click
    2. With sfdListSpeichern
    3. .AddExtension = True 'Dateierweiterung anfügen
    4. .DefaultExt = ".sl" ' Standarderweiterung
    5. .Filter = "Saved List (*.sl) | *.sl| Text Document (*.txt) |*.txt| Richtext Format (*.rtf) |*.rtf| Alle Daateien (*.*)|*.*"
    6. .OverwritePrompt = True 'Nachfrage bei Überschreiben
    7. End With
    8. sfdListSpeichern.ShowDialog()
    9. Dim Path As String = sfdListSpeichern.FileName
    10. Dim AllItems As String = ""
    11. Try
    12. For Each item As ListViewItem In ListView1.Items
    13. AllItems = AllItems & item.Text & "#" & item.SubItems(1).Text & "#" & item.SubItems(2).Text & "#" & item.SubItems(3).Text & "#" & item.SubItems(4).Text & vbNewLine
    14. Next
    15. AllItems = AllItems.Trim
    16. Catch ex As Exception
    17. End Try
    18. Try
    19. If My.Computer.FileSystem.FileExists(Path) Then
    20. My.Computer.FileSystem.DeleteFile(Path)
    21. End If
    22. My.Computer.FileSystem.WriteAllText(Path, AllItems, False)
    23. Catch ex As Exception
    24. MsgBox("Fehler" & vbNewLine & ex.Message, MsgBoxStyle.Exclamation, "Fehler")
    25. End Try
    26. End Sub

    @user2100 Das ist der richtige Moment, um auf ein datengebundenes DataGridView umzusteigen.
    Pack all Deine Daten in eine DataTable und weise diese dem DGV als .DataSource zu.
    Feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @user2100: wobei du (egal mit welcher (Speicher)-Methode) eine Datei oder eine Datenbank brauchst.

    Wie @RodFromGermany schon gesagt hat: ein DataGridView ist deutlich einfacher und flexibler. Ich wollte anfangs auch unbedingt mit Gewalt ein ListView haben (ging hier um ungebundene Daten),
    bis ich DataGridView probiert hab. Ist wesentlich einfacher zu befüllen und du kannst die Zellen mit RowIndex und ColumnName direkt ansprechen und musst nicht erst das eigentliche
    ListViewItem raussuchen und das als Referenz nehmen.

    Je nach Anwendungsfall würde ich dir empfehlen, dass du dir ein DataSet baust und daraus deine Daten an ein DataGridView übergibst - das Ganze wird dann in eine XML-Datei gespeichert.
    @ErfinderDesRades hat dazu allerhand Tutorials verfasst.

    Solltest du kein DataSet benötigen und willst nur mit einer DataTable arbeiten, dann wäre es sicher am Einfachsten, du exporierst diese dann beim Klick auf Speichern
    in eine Excel-Datei -> z.B. mit EPPlus (hier hab ich bei Bedarf etwas Code rumfliegen, der genau das macht)
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    @user2100 "Syntax-Fehler in der INSERT INTO-Anweisung"
    Dann poste mal die fehlerbehaftete "INSERT INTO"-Anweisung.
    326 Posts im Forum.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @user2100
    bist du sicher, dass das ein gültiges Verzeichnis ist? :D


    Der Fehler wird aussagen, dass er keine Datenbank öffnen kann...
    Bei mir sieht das in etwa so aus: _sCon = $"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={Dts._fi};Jet OLEDB:Database Password={_dbPass}"
    Wobei {Dts._fi} und {_dbPass} das Verzeichnis samt Filename und letzteres das Passwort für die Datenbank darstellen.
    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:
    @user2100 Ist die Schreibweise "Benutzer/Email" korrekt?
    => "Benutzer, Email" ?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ja die Schreibweise Benutzer/Email ist schon richtig so. :)

    Mit Access Datenbanken habe ich bisher noch nicht gearbeitet. Hatte bei früheren Projekten immer einen MS SQL SERVER installiert und damit die Datenbanken erstellt, die ich dann in meinen Projekten verwendet hatte.

    Hat jemand evtl. Einen Link was mich zu einem tutorial führt wie ich mit Access Datenbanken und dem DGV arbeiten kann.
    Guckstu:
    Wenn du dann einmal ein ordentliches DataSet hast, dann kannst du mit letzterem Link alles Weitere machen.
    Die Umstellung in der Anwendung hält sich absolut in Grenzen und ist sehr einfach umzusetzen.

    die vier Views auf Video
    Grundlagen: Relationale Datenmodellierung
    https://www.vb-paradise.de/index.php/Thread/113943-Dataset-Db/


    "Na, wie ist das Wetter bei dir?"
    "Caps Lock."
    "Hä?"
    "Shift ohne Ende!" :thumbsup:

    SQL Verbindung Datenbank

    nach längerem hin und her habe ich nun SQL Express installiert und eine MSSQL Datenbank erstellt.

    habe diese auch als Datenquelle eingefügt in VS 2017.nun wollte ich eine Verbindung herstellen, dies ist aber nicht ganz geglückt. ich bekomme beim herstellen immer eine Fehlermeldung.
    hier die Meldung:



    und hier der Code den ich verwende.

    VB.NET-Quellcode

    1. Sub verbinden()
    2. Dim dt As New DataTable
    3. Dim bs As New BindingSource
    4. Dim c As New SqlClient.SqlConnection
    5. Try
    6. c.ConnectionString = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\bin\Debug\MYDB.mdf;Integrated Security=true;Connect Timeout=30"
    7. c.Open()
    8. bs.DataSource = dt
    9. MsgBox("Verbindung erfolgreich hergestellt.")
    10. Catch ex As Exception
    11. MsgBox(ex.ToString)
    12. End Try
    13. End Sub
    So wie ich das sehe existiert die Datenbank Datei mit den Namen schon, oder kann nicht geöffnet werden. Warum auch immer.

    Aber warum installierst du SQLExpress und nutzt dann localdb? Wie hast du denn die Datenbank erstellt?

    edit: Schau dir auch nochmal den Connectionstring an, sicher das die Datenbankdatei in den Debug Ordner soll?
    Rechtschreibfehler betonen den künstlerischen Charakter des Autors.
    Selbst wenn keine Fehlermeldung kommen sollte, ist die DataTable leer da sie ja nirgendwo gefüllt wird.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen