Textdatei durchsuchen und in Dataset kopieren

  • VB.NET

Es gibt 33 Antworten in diesem Thema. Der letzte Beitrag () ist von a.setzer.

    Textdatei durchsuchen und in Dataset kopieren

    Hallo,

    Ich habe eine Textdatei, welche ich in ein Dataset exportieren möchte, dazu benötige ich noch etwas Hilfe

    INHALT DES TEXTFILES
    --------------------------
    /// 20.09.2011 13:33:34 Login Personalnummer:444
    NIO KunststofffehlerAndere
    NIO KunststofffehlerAndere
    NIO KunststofffehlerAndere
    NIO KunststofffehlerAndere
    NIO KunststofffehlerAndere
    NIO LackfehlerKratzer LackfehlerPickel LackfehlerDelle KunststofffehlerGrat Einfall KunststofffehlerKratzer KunststoffffehlerAndere Rastlasche Schweißpin
    IO
    IO
    NIO KunststofffehlerAndere
    NIO KunststofffehlerAndere
    /// 21.09.2011 05:57:02 Login Personalnummer:444
    IO
    NIO KunststofffehlerKratzer
    NIO LackfehlerPickel
    NIO LackfehlerPickel
    NIO KunststofffehlerAndere
    IO
    NIO LackfehlerPickel
    NIO LackfehlerPickel KunststofffehlerGrat
    NIO KunststofffehlerAndere
    NIO KunststofffehlerAndere
    --------------------------

    Ich habe folgende Variablen...
    Datum, Personalnummer, LackfehlerKratzer, LackfehlerPickel, LackfehlerDelle, KunststofffehlerGrat, Einfall, KunststofffehlerKratzer, KunststofffehlerAndere, Rastlasche, schweißpin

    Nun benötige ich einen Code, welcher in Schleifen Form das Textfile durchläuft....
    - Wenn die Zeile mit /// beginnt, soll die Variable Datum & Personalnummer befüllt werden.
    - Wenn in einer Zeile IO geschrieben steht, sollen alle darauf folgende Variablen mit "+++" befüllt werden
    - Wenn in einer Zeile NIO geschrieben steht, soll der NIO Fehlertext in die entsprechende Variable geschrieben werden

    danke für eure Hilfe im voraus.

    gruß


    EDIT: Mein Anfang

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim ZeilenInhalt As String
    2. Dim fs As IO.FileStream = New IO.FileStream( _
    3. "d:\einleger.txt", IO.FileMode.Open, _
    4. IO.FileAccess.Read)
    5. Dim w As IO.StreamReader = New IO.StreamReader(fs)
    6. ZeilenInhalt = w.ReadLine
    7. If ZeilenInhalt.StartsWith("///") Then
    8. ZeilenInhalt.Split()
    9. End If
    10. w.Close()
    11. fs.Close()



    funktioniert soweit.. nur bei der Split option pack ichs nimmer...
    - er soll jetzt das datum ohne uhrzeit raussplitten raussplitten - in variable datum ablegen!
    - sowie die personalnummer


    dann solls so weiter gehen:
    weiter mit einem ElseIf dann den Fall IO, wenn IO dann schreibe.... (bekomm ich selber hin)

    weiter mit einem ElseIf dann den Fall NIO, wenn NIO dann schreibe den NIO text in eine variable und splite den text in einzelne wörter und füge die wörter in die gleichnamigen variablen auf, nicht aufgefüllte variablen mit +++ füllen

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „a.setzer“ ()

    Habe die Lösung... und funktioniert

    Eine Zeile fehlt mir jedoch noch...

    ich lese eine Zeile, und möchte das nach dem lesen diese Zeile gelöscht wird.. (damit die eigentlich zwete zeile jetzt an erster stelle steht)

    oder was auch möglich wäre... ein counter, welcher nach jedem zeilen durchlauf eines höher zählt und dann beim nächsten durchlauf zu der zeilennummer automatisch springt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „a.setzer“ ()

    Du kannst nicht eine Zeile einer Textdatei löschen, Du musst die ganze Datei laden, die entsprechende Zeile löschen und alles wieder speichern oder alle Zeilen einzeln schreiben und diejenigen beim Schreiben auslassen.
    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!
    hat mir den echt keiner eine lösung? :(

    VB.NET-Quellcode

    1. Dim ZeilenInhalt as String
    2. Dim fs As IO.FileStream = New IO.FileStream("d:\einleger.txt", IO.FileMode.Open, IO.FileAccess.Read)
    3. Dim w As IO.StreamReader = New IO.StreamReader(fs)
    4. ZeilenInhalt = w.ReadLine
    5. Do until Zeileninhalt = "DATEIENDE"
    6. If ZeilenInhalt.StartsWith("///") Then
    7. 'Hier wird die Variable Zeileninhalt nun weiterverarbeitet und zwischengespeichert (zu viel Code zum einbringen, was auch sekundär ist)
    8. End If
    9. 'Hier sollte jetzt ein Befehl rein, das er beim nächsten Durchlauf die nächste Zeile nimmt... könnt ich hier CrLf verwenden? wenn ja wie?
    10. 'Oder an dieser Stelle einen counter der immer eins höher zählt, wie funktioniert dann oben die anweisung das er jetzt in Zelle XY springen muss?
    11. loop
    12. w.Close()
    13. fs.Close()
    Zum Thema "aus Textdatei auslesen" hätte ich ein weiteres anliegen, an welchem ich nicht weiterkomme...


    1. durchsuche im ordner "d:\test\" nach allen textdateien, mit unterordner. (sind nur textdateien vorhanden, keine andere)
    2. schreibe mir den dateiname in eine variable.
    3. schreibe mir das erstellungsdatum in eine variable
    4. öffne die datei und schau das ganze dokument durch, ob eine 3 stellige zahl vorhanden ist, wenn ja schreibe diese 3 stellige zahl in eine variable
    5. jetzt schreibe ich alle variablen in eine datenbank
    6. nächste textdatei...


    ich benötige hierzu dringend hilfe.
    liebe grüße

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. 'Dateinamen einlesen
    4. Dim dateien() As String = System.IO.Directory.GetFiles("d:\test\io")
    5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    6. For Each dName As String In dateien
    7. Dim fs As New FileStream(dName, FileMode.Open)
    8. Dim sr As New StreamReader(fs)
    9. Dim fileDate As DateTime = System.IO.File.GetCreationTime(dName)
    10. sr.Close()
    11. Next
    12. End Sub
    13. End Class

    ErfinderDesRades schrieb:


    Aber interessiert nicht die Bohne, oder? Weil ich red vonne DirectoryInfo-Klasse, und du wurstelst da mit Strings herum.

    Auch frug ich, ob du den ObjectBrowser bedienen kannst - aber sieht eher nicht danach aus.


    Du/ich/wir musst es ihm genuer erklären. Er steht doch auf dem schlauch.
    Ich versuche ihm, den ObjectBrowser nahezubringen, denn wenner den bedienen kann, brauchen ichduwir ihm garnixmeh zu erklären :) - dann findeter so Sachen selbst heraus.

    Annersrum, wenn ichduwir ihm die Vorzüge der DirectoryInfo-Klasse vorkauen, wirds ihm natürlich unnötig sein, den ObjectBrowser kennenzulernen.

    Oder meinst du, ichduwir sollen ihm den ObjectBrowser genauer erklären?

    Noch genauer als im gegebenen Link?
    Ich habe zuerst meinen vorhandenen/bereits erstellten Code gepostet und dann deinen Beitrag durchgelesen.
    Jedoch habe ich mich mit dem ObjectBrowser noch nicht allzuviel befasst... was ich jetzt tun werde.
    Wie er mich weiterbringen wird mit meinem problem bin ich gespannt... bzw. ob ich selbst dahinter steig :)

    ErfinderDesRades schrieb:


    Ich versuche ihm, den ObjectBrowser nahezubringen, denn wenner den bedienen kann, brauchen ichduwir ihm garnixmeh zu erklären - dann findeter so Sachen selbst heraus.

    Annersrum, wenn ichduwir ihm die Vorzüge der DirectoryInfo-Klasse vorkauen, wirds ihm natürlich unnötig sein, den ObjectBrowser kennenzulernen.

    Oder meinst du, ichduwir sollen ihm den ObjectBrowser genauer erklären?

    Noch genauer als im gegebenen Link?


    Oha. Ich glaube er sollte sich noch mal alles durchlesen und versuchen selber drauf zu kommen. Das mit dem OB ist keine schlechte Idee. Ich habe noch 1 Link. MSDN

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. 'Dateinamen einlesen
    4. Dim dateien() As String = Directory.GetFiles("d:\test\io")
    5. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    6. Dim Personalnummer As String
    7. Dim Barcode As String
    8. Dim datum As DateTime
    9. Dim Textinhalt() As String
    10. For Each dName As String In dateien
    11. datum = File.GetCreationTime(dName)
    12. Textinhalt = File.ReadAllLines(dName)
    13. Next
    14. End Sub
    15. End Class


    Soweit habe ich es jetzt....
    Er liest mir alle Dateien im Ordner IO in ein Array ein und arbeitet diese nacheinander ab.
    - Wie lautet der Befehl für "GetDateiname" hierzu habe ich im OBJEKT-BROWSER nichts gefunden. EDIT: ERLEDIGT!
    - Benötige folgenden Befehl: Durchsuche mir alle ca.15Zeilen vom Array nach einer 3 stelligen Zahl !!

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „a.setzer“ ()