Personen Daten am besten speichern

  • VB.NET

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Petersilie.

    Personen Daten am besten speichern

    Hallo Leute,

    in einer Txt Datei habe ich von 16 Mitarbeitern Daten stehen.

    Pro Zeile ein Kollege, der Aufbau einer Zeile: Name; Vorname; Tel; Fax; PLZ; Straße; Stadt; Abteilung;...

    Jetzt sollen diese Daten eingelesen werden, um anschließend jemanden in einer Combobox auswählen zu können und
    seine Daten automatisch in ein Dokument einzufügen.

    Ich habe noch nicht viel Erfahrung beim Programmieren und bin mir deshalb nicht sicher, wie ich am besten die Daten
    abspeichere.

    Ich hatte das ganze mal mit einem zwei-Dimensionalen Array gemacht, aber damit zu arbeiten war Grausam...

    Sollte ich für die Daten eine Class oder ein Structure verwenden, oder es doch ganz anders machen?
    Leider habe ich bis Dato noch keine Erfahrungen mit den beiden gemacht... mein erstes mal sozusagen.

    VB.NET-Quellcode

    1. Public Structure Verfasser
    2. Public Sub myVerfasesr(ByVal name As String,
    3. ByVal xy As String,
    4. ByVa)
    5.  
    6. End Sub
    7. End Structure
    8.  
    9. Public Class Verfasser
    10. Public name As String
    11. Public xy As String
    12. Publ
    13. End Class


    Was würdet ihr mir empfehlen oder von was würdet ihr mir definitiv abraten?
    Ich würde dir JSON empfehlen, benute einfach Newtonsoft JSON.....lade dir die Lib wenn du willst einfach unter json.net herunter.....ansonsten XML.
    Einfach mal vb.net xml googlen
    EDIT:
    Oh du meinst Intern....da würde ich dir Klassen empfehlen....Guckst du "Property" in IntelliSense
    こんにちわ
    Achte beim stellen von Fragen auf eine genaue Fragestellung, mir passiert das selbst häufig, andere können dir dann nicht so gut helfen.
    @Petersilie Mach Dir eine DataTable. Jede Zeile eine Person. Und dann .WriteXml(PATH) bzw. .ReadXml(PATH).
    Kannst Du direkt an ein DataGridView andocken.
    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!
    @LuaX
    @RodFromGermany

    Danke euch beiden für eure Hilfe.

    Ich habe mich jetzt für eine DataTable entschieden.
    Der Code sieht so aus:

    VB.NET-Quellcode

    1. Public dt As DataTable
    2. Const VERFASSER_PATH As String = "C:\Users\Ich\Desktop\Verfasser.txt"
    3. Public Sub DataTable_Verfasser()
    4. Dim fs As New IO.StreamReader(VERFASSER_PATH)
    5. Dim line() As String
    6. dt = create_Table()
    7. While Not fs.EndOfStream
    8. line = fs.ReadLine.Split(";")
    9. dt.Rows.Add(line)
    10. End While
    11. fs.Close()
    12. dt.AcceptChanges()
    13. End Sub
    14.  
    15. Private Function create_Table() As DataTable
    16. Dim _dt As New DataTable
    17. _dt.Columns.Add("Nachname", GetType(String))
    18. _dt.Columns.Add("Vorname", GetType(String))
    19. _dt.Columns.Add("Abteilung", GetType(String))
    20. _dt.Columns.Add("Stadt", GetType(String))
    21. _dt.Columns.Add("Plz", GetType(String))
    22. _dt.Columns.Add("Tel", GetType(String))
    23. _dt.Columns.Add("Fax", GetType(String))
    24. _dt.Columns.Add("Standort Tel", GetType(String))
    25. _dt.Columns.Add("Standort Fax", GetType(String))
    26. _dt.Columns.Add("Titel", GetType(String))
    27. _dt.Columns.Add("Kürzel", GetType(String))
    28. Return _dt
    29. End Function

    @Petersilie Warum ist create_Table() eine Funktion?
    Arbeite doch gleich auf der klasseninternen Instanz.
    Und:
    Wenn Du die Tabelle als XML speichern und laden willst, braucht sie einen Namen, z.B. "Personen".
    Die Datei kannst Du dann ggf. löschen.
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public dt As DataTable
    2. Const VERFASSER_PATH As String = "C:\Users\Ich\Desktop\Verfasser.txt"
    3. Public Sub DataTable_Verfasser()
    4. create_Table()
    5. For Each line In IO.File.ReadLines(VERFASSER_PATH)
    6. Dim parts() = line.Split(";"c)
    7. dt.Rows.Add(parts)
    8. Next
    9. dt.AcceptChanges()
    10. End Sub
    11. Private Sub create_Table()
    12. dt = New DataTable("Personen")
    13. dt.Columns.Add("Nachname", GetType(String))
    14. dt.Columns.Add("Vorname", GetType(String))
    15. dt.Columns.Add("Abteilung", GetType(String))
    16. dt.Columns.Add("Stadt", GetType(String))
    17. dt.Columns.Add("Plz", GetType(String))
    18. dt.Columns.Add("Tel", GetType(String))
    19. dt.Columns.Add("Fax", GetType(String))
    20. dt.Columns.Add("Standort Tel", GetType(String))
    21. dt.Columns.Add("Standort Fax", GetType(String))
    22. dt.Columns.Add("Titel", GetType(String))
    23. dt.Columns.Add("Kürzel", GetType(String))
    24. End Sub
    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!

    RodFromGermany schrieb:

    @Petersilie Warum ist create_Table() eine Funktion?
    weils das bessere Design ist - die Vorzüge sind allerdings verschenkt.
    IMO sollte die DataTable nur ein einziges Mal erstellt werden - nicht jedesmal eine Neue.
    Und mit create_Table als Function ist das sehr easy sicherzustellen:

    VB.NET-Quellcode

    1. Public ReadOnly dt As DataTable = create_Table()


    Aber die Benamung ist zum Haare-Ausreissen!