txt durchsuchen und Zeile anzeigen

  • VB.NET

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

    txt durchsuchen und Zeile anzeigen

    Hallo zusammen,

    ich habe in letzer Zeit nun ein Lieferschein-Programm mit vb.net programmiert und möchte dazu eine Log-Datei (Textdatei(?)) erzeugen, WER WELCHEN Lieferschein (Lieferschein-NR) & WANN erzeugt hat.
    Dies sollte eigentlich kein Problem sein für mich.
    Nun möchte ich noch ein kleines Tool zum auslesen der LOG-Datei erstellen, in welchem ich nach der Lieferschein-Nr. suchen kann und dann die komplette Zeile (mit Name,LS-NR und Datum/Uhrzeit) angezeigt wird.
    Da man den Lieferschein aber bearbeiten kann, wird nach jedem bearbeiten in die Log-Datei wieder Name, LS-NR, "bearbeitet" und Datum/Uhrzeit reingeschrieben.
    Folglich sollten dann auch alle Logs in der Datei angezeigt werden.

    Könnt ihr mir da weiter helfen?
    Ich hoffe ihr versteht wie ich das meine :/
    Wie ChOoSeMyNaMe schon gesagt hat: je nachdem wie viele Daten du hast würde ich auch Dataset/Datatable verwenden.
    Alternativ kann das Datum und die Lieferscheinnummer so "[Datum]|[Lieferscheinnr]" in eine Textdatei schreiben und später Zeile für Zeile auslesen und nach dem "|" Zeichen wieder aussplitten.
    ist bischen die Frage, was deine Anwendung eiglich tut.
    "Lieferschein-Programm" klingt mir sehr nach Datenverarbeitung, und wer welchen Lieferschein wann erzeugt hat, ist keine Frage von Logging, sondern sollte ganz regulär Bestandteil des Datenmodells sein.

    Da ich ja immer empfehle, Datenverarbeitungen ohne Datenbank zu entwickeln, würde ich gewissermassen zustimmen, dass Xml das Mittel der Wahl ist.
    Allerdings ist nichts mit dem Xml zu tun (du brauchst kein Xml-Tutorial - und sei froh deswegen!).
    Sondern die Xml-Verarbeitung übernimmt komplett das typisierte Dataset, welches dein Datenmodell enthält.

    Aber wie gesagt: v.a. ists keine gute Idee, mit verschiedenen Datensenken zu arbeiten, sondern es ist ein Datenmodell, und daher auch in eine Datensenke abzuspeichern, nicht in mehrere.

    Vlt. kann man das Prob auch so ansehen, dass du scheinbar den Sinn von Log-Dateien falsch auffasst: Logs loggen normalerweise System-Informationen für die Administration, um kniffligen Fehlfunktionen im weitesten Sinne (Bugs, Missbrauch, Angriffen, etc) auf die Spur kommen zu können.
    Logs sind nicht Bestandteil der Datenverarbeitung, also die Info, wer wann welchen Lieferschein erstellt hat, gehört ins Datenmodell, und auch mit diesem abgespeichert.



    Nun fürchte ich aber, du hast überhaupt kein Datenmodell, und weisst auch garnet, was der Begriff bedeutet... 8|

    Täte es dich in dem Falle interessieren, es zu erlernen? Auch auf die Gefahr hin, die ganze Anwendung nochmal neu zu machen?
    Naja diese (Log)Datei ist dafür gedacht, um nachzuvollziehen, welcher Lieferschein von wem erstellt bzw. editiert wurde. :?:

    Ich weiß ja nicht wie einfach/schwierig das ist eine Xml per Button zu erstellen, welche die Daten (LSnr; Datum; Uhrzeit; Benutzer; Status) beinhaltet.
    Ja ich würde gerne wissen, wie die ganze Sache funktioniert. (Auch wenn ich evtl. die Anwendung neu schreiben muss)
    Danke schonmal für die Hilfe ;)
    Also die Daten des Lieferscheines werden in einer .txt auf einem UNC-Pfad abgespeichert, werden mit einem Zeichen getrennt (";") und hinterher beim öffnen gesplittet.

    VB.NET-Quellcode

    1. For Each Zeile As String In System.IO.File.ReadAllLines("\\unc\pfad\" & ComboBox61.SelectedItem)
    2. Dim Data() As String = Zeile.Split(";")
    3. ...

    Sonstige andere Sachen sind nicht verbaut in meiner Anwendung und hab auch keine große Ahnung von Datenmodellen oder Datenbanken.
    also das liesse sich sehr leicht umstellen auf typisiertes Dataset.
    Da noch nur eine Tabelle vorhanden, kann man auch das Lernen der Datenmodellier-Regeln auf später verschieben.

    Nun hab ich leider gar kein Tut mit einem so einfachen Datenmodell vlt. das hier: DatasetOnly: DB-Programmierung ohne Datenbank

    Aber der ParentChild-View ist auch schon über das hinaus, was du brauchst, am ehesten trifft das Update des 4. Posts deine Belange: Einfach eine simple, platte Tabelle.
    Hmm ich weiß jetzt nicht genau, auf was du raus willst.
    Ich erkläre nochmal kurz, wie ich es haben möchte:
    Der Lieferschein wir ganz normal in einer .txt Datei abgespeichert. (dies soll nach Möglichkeit auch so bleiben).
    Ich will einfach nur, dass eine Ereignisprotokolldatei (für alle Lieferscheine die erstell werden) mit den Daten (LS-nr, name, datum,...) erstellt wird.
    Diese Datei möchte ich in einer eigenen Form auslesen und nach LSnr sortieren und durchsuchen können.
    Ich denke, dass geht doch auch, ohne dass ich den Rest des Codes komplett verändern muss. oder ?
    Sorry falls ich dein Vorgehen nicht durchblicke :S
    also worauf ich hinaus will ist, dir das auszureden, für jeden einzelnen Datensatz (denn nichts anderes ist ein Lieferschein) eine eigene Datei zu generieren.

    Mit der Idee einer Log-Datei, in der ja alle erstellten Lieferscheine vorkommen, näherst du dich auch langsam dem normalen Konzept einer Datenverarbeitung an.

    Aber das Datenverarbeitungs-Konzept geht noch weiter: Nicht nur eine Datei für eine Tabelle, sondern eine Datei für so viele Tabellen, wie halt nötig sind.

    Derzeit ist bei dir nur eine Tabelle nötig - also das sollte sehr einfach machbar sein.

    Aber wenn du weiterhin deine Datensätze über das Dateisystem verstreuen willst, und ausserdem noch eine besondere Datei haben willst, wo sie dann doch wieder zusammenkommen - ja gut, das ist ein Ansatz, bei dem von mir zumindet nicht viel Unterstützung zu erwarten ist.
    Ich will ja meine Datensätze nicht über das Dateisystem verstreuen.
    Ich habe den Lieferschein, welcher erzeugt, gespeichert, gedruckt und anschließend als PDF abgelegt wird.
    Und zur Nachverfolgung, was mit dem Lieferschein gemacht worden ist möchte ich eine Datei haben, in der alles Lieferschein-Nr. drin stehen, aber nicht der Inhalt des Lieferscheins, damit darin gesucht werden kann wer ihn wann erstellt hat und Wann bearbeitet hat. Alles andere ist unwichtig
    ok, erkenne ich das mal an: Eine Datei mit Informationen zu vielen pdf-Dateien - ist ja nicht wirklich ein Problem.
    Also das könnte man ganz wunnebar mit einem typisierten Dataset mit nur einer Tabelle drin lösen - ganz wie in DatasetOnly: DB-Programmierung ohne Datenbank , post#4 das Update vorgestellt.
    Man würde wohl ein paar andere Spalten anlegen, aber vom Prinzip her wäre das eine gute, sehr einfache und sehr erweiterbare Lösung.

    Also falls du das versuchen willst, versuch mal ein typisiertes Dataset im DatasetDesigner zu erstellen, entweder nach dem gegebenen Tut, oder wenn das nicht langt, in codeproject.com/Articles/1030969/Relational-Datamodel ist nochmal eine ausführlichere Anleitung.