Bestimmte Zeilen aus csv Datei anwählen

  • VB.NET

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

    Bestimmte Zeilen aus csv Datei anwählen

    Moin Jungs,

    allen vorran, ich nutze Visual Studio 2012 und bin mit einem vb-Projekt jetzt betreut, jedoch in Sachen Visual Basic ein blutiger Anfänger... Habt also bitte Nachsicht ;)



    Das Projekt ist:

    Eine Art Adressbuch, in der ich Daten zu Namen einspeichern kann

    Die Idee ist:

    Ein Programm, dass die Daten einem Objekt zuweist und die Daten aus einer CSV-Datei entnimmt bzw. auch umgekehrt einspeichert

    Das Problem ist:

    Zwar kann ich die Daten in die CSV- Datei bekommen, jedoch bräuchte ich eine Funktion die Zeilen zu zählen bzw dann eine bestimmte Zeile aufzurufen um diese zu lesen und/oder zu überschreiben. Ich probiere es grade mit dem Streamreader, jedoch finde ich keine entsprechende Funktion.

    Vielleicht könnt ihr, sofern Ihr eine Idee habt, die ja mal posten, sodass ich sie vielleicht sogar verstehe :)



    Ich muss damit keinen Schönheitswettbewerb gewinnen... Funktionieren ist alles ;)





    Wenn einer bis hier hin gelesen hat schon einmal danke :D

    Will



    PS: Ich habs auch schon probiert ein Sonderzeichen hinter jeden Eintrag zu machen und somit dann über 2 Split funktionen erst die Namen und dann die Eigenschaften dazu zu filtern... Aber so Klasse lief das dann auch irgendwie nicht ;)
    Wenn du Zeilen zählen willst, deklarier dir ne Variable vom Typ Integer und zähl diese einfach bei jedem Read hoch.
    Altenrativ les die ganze CSV in nen Array oder derartiges ein und greif via Index drauf zu.

    Ohne zu wissen was du bis jetzt gebastelt hast ist es schwer ne Hilfestellung zu geben.
    Ich verstehe noch nicht so 100%ig wo dein Problem liegt. Wobei ne CSV nicht zwingend die beste Möglichkeit ist :P
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    VB.NET-Quellcode

    1. Private Function Zeilehochladen(ByVal ID As Integer)
    2. Dim fs As New FileStream(Abspeicherort, FileMode.Open)
    3. Dim sr As New StreamReader(fs)
    4. Dim zeile As String
    5. Dim Zeilen(1000) As String
    6. Dim i As Integer = 0
    7. Do Until sr.Peek() = -1
    8. zeile = sr.ReadLine()
    9. Zeilen(i) = zeile
    10. i += 1
    11. Loop
    12. sr.Close()Return Zeilen(ID)
    13.  
    14. End Function
    15.  
    16. Public Sub Zuweisen(ByVal ID As Integer)
    17. Dim Zeileninhalt As String
    18. Zeileninhalt = Zeilehochladen(ID)
    19.  
    20. Dim strTeil(13) As String
    21. Dim merker(13) As StringstrTeil = Zeileninhalt.Split(";")
    22. For i As Integer = 0 To strTeil.Count - 1
    23. merker(i) = strTeil(i)
    24. Next
    25. Vorname = merker(0)
    26. Nachname = merker(1)
    27. Straße = merker(2)
    28. Ort = merker(3)
    29. Geburt = merker(4)
    30. Telefonnummer = merker(5)
    31. Mobilnummer = merker(6)
    32. Krankheiten = merker(7)
    33. Sonstiges = merker(9)
    34. Alter = merker(10)
    35. Gruppe = merker(11)
    36. Postleitzahl = merker(12)
    37. Nummer = merker(13)


    Also ich hab mir in meinem jugendlichen leichtsinn jetzt vorgestellt, dass er quasi alle zeilen läd, und dann auf eine zugreift und dann die eigenschaften dem objekt zuweist, die dann über ein anderes programm halt abgefragt werden und in textfelder gepackt wird.... Dachte mir, dass das zwar nicht allzu elegant ist aber dass es funktioniert.

    danke für die schnelle antwort eben ^^
    Kennst du den Unterschied zwischen Funktion und Sub?
    Also für mich muss ne Funktion immer nen Rückgabewert haben du hast sie aber ohne deklariert.
    Private Function Zeilehochladen(ByVal ID As Integer) <--
    Das ist das Erste was mir ins Auge sticht.
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    ich hab hier iwie ein "Hilfsbereitschafts-Problem".
    Der TE sagt ja selbst, dass ihm an Code-Qualität nichts liegt, es soll nur das Ergebnis funktionieren.

    Nun kann meiner Meinung nach aber Hilfe nur in Hilfe zur Selbsthilfe bestehen, also dem TE zu helfen, Code in besserer Qualität zu erstellen.
    Also es kann eiglich nicht drum gehen, das Ergebnis zum funktionieren zu bringen, sondern nur darum, dem TE ein Stückel mehr Programmieren beizubringen.
    Weil Software ist immer nur ein Zwischen-Ergebnis, und wenn der TE nix dazulernt, dann wird er bereits beim nächsten Entwicklungsschritt wieder steckenbleiben, und den wieder ins Forum stellen, usw..
    Gewissermassen lässt er dann hier für sich programmieren, weil er selbst entwickelt sich ja nicht weiter.

    Aber an Weiter-Entwicklung scheint er ja ühaupt nicht interessiert :huh:
    Hy Will1313

    Hast du schon mal mit XML dateien gearbeitet ? denn für Solche vorhaben sind XML Dateien besser geeignet, denn du kannst einzelne Attribute ändern, einzelne Knoten ändern, einen Bestimmten Knoten Öffnen und hast weniger code.
    Meine Projekte Genesis Game Engine | GFX | smartli.me - Der smarte URL shortener

    Ich habe soweit noch nicht mit xml dateien gearbeitet... aber dann werde ich mal probieren mich da einzulesen.

    Danke für den tip



    @erfinder des rades: Nun ja sofern das programm erstmal läuft, denke ich habe ich was dazu gelernt. Ich wollte damit nur darauf hinweisen, dass ich keine hochgeschossene lösung brauche sondern lieber eine einfache lösung, nach dem keep-it-simple prinzip, da ich in visual basic nicht unbedingt besonders stark bin.

    @ memo... wieso ich gebe doch einen wert wieder zurück. der return befehl ist leider ne zeile zu hoch gerutscht beim kopieren. aber steht in zeile 12. und in zeile 18 wird der wert dann abgegriffen.... oder irre ich mich da?