So funktioniert JustAnswer:
  • Fragen Sie einen Experten
    Tausende Experten in über 200 Kategorien.
  • Erhalten Sie eine professionelle Antwort
    Per E-Mail oder sofortiger Benachrichtigung, während Sie auf unserer Website warten.
    Stellen Sie ggf. weitere Anschlussfragen.
  • 100%ige Zufriedenheit garantiert
    Bewerten Sie die erhaltene Antwort.
Stellen Sie Ihre Frage an IT-Fachinformat...
IT-Fachinformatiker
IT-Fachinformatiker, Systemadministrator
Kategorie: Computer
Zufriedene Kunden: 6965
Erfahrung:  Software Entwicklung, Projekt Erfahrung, Windows-Netzwerke, Linux-Netzwerke, Windows/Linux-Server
32504664
Geben Sie Ihre Frage in der Kategorie Computer hier ein
IT-Fachinformatiker ist jetzt online.

Hallo justanswer.de, nun melde ich mich ein zweites Mal

Kundenfrage

Hallo justanswer.de,
nun melde ich mich ein zweites Mal bei Ihnen, ich komme hier mit dem Speichern unter Visual Studio 2013, bezüglich VB, nicht klar. Also: Ich habe in Visual Studio 2013 (kurz: VS) in einer Form z.B. 10 Textboxen (Name, Vorname, Straße, Wohnort, usw.). Die Inhalte dieser Textboxen möchte ich in einer einzigen Textdatei speichern. Ich habe das so gelöst:
My.Computer.FileSystem.WriteAllText("C:\Documents and Settings\All Users\Documents\daten.txt", TextBox1_Daten.Text, False)
My.Computer.FileSystem.WriteAllText("C:\Documents and Settings\All Users\Documents\daten.txt", TextBox2_Daten.Text, False)
Verlasse ich die Textbox1_Daten.Text mit Return, springt der Cursor weiter ins nächste Textfeld, nach Textbox2_Daten.Text. Beim Sprung ins nächste Textfeld wird der Inhalt des vorigen Textfeldes sofort gespeichert, das soll auch so sein. Nur leider wird beim Sprung in das neue Textfeld die vorherige Eingabe überschrieben bzw. gelöscht. Wie muss ich das machen, dass ich alle Textfelder in einer Datei speichere und natürlich auch wieder auslesen kann? Ich wiederhole: Beim Sprung in ein nächstes Textfeld soll die Eingabe des letzten Textfeldes immer automatisch gespeichert werden. Natürlich muss ich das dann auch wieder entsprechend auslesen können!
Vielen Dank ***** ***** Antwort.
Mit freundlichen Grüßen ***** *****
Peter Sierek
Gepostet: vor 2 Jahren.
Kategorie: Computer
Experte:  IT-Fachinformatiker hat geantwortet vor 2 Jahren.
Hallo

um optimal in eine Textdatei zu schreiben verwendet man üblicherweise das folgende Statement:

Dim myFileAs New StreamWriter("yourtextfile.txt", False)
myWriter.WriteLine (TextBox1.Text + vbCr + TextBox2.Text)
myWriter.Close()

damit werden die Inhalte beider Textboxen mit einem Zeilenumbruch gespeichert. Wenn Sie statt "false" den Wert "true" angeben werden spätere Daten (vor Close) an die Datei angehängt (Mode Append).

Es spielt keine Rolle, wie Sie sich in den Textboxen bewegen das hat keine Auswirkung auf das speichern oder auslesen der Textdatei. Gespeichert kann und wird nur jeweils der aktuelle Wert also der aktuelle Text der in den Textboxen enthalten ist.

Das heißt, wenn Sie es überschrieben und dann das schreiben in die Datei auslösen sind die letzten Daten natürlich nicht mehr da es sei denn, das Sie die Datne anhängen. Wenn es viele Datne sind macht es Sinn eine Datenbank zu verwenden und keine Textdatei.

Gruß Günter











Experte:  IT-Fachinformatiker hat geantwortet vor 2 Jahren.

Hallo

das speichern teilte ich Ihnen ja mit das ist nicht das Problem. Damit das aber automatisch passiert müssten Sie beim Event "LostFocus" pro TextBox das speichern auslösen am einfachsten wäre es, wenn Sie sich eine Methode erstellen die als Parameter die Inhalte der Textboxen entgegen nimmt. Dann könnten Sie automatisch speichern, sobald die Textbox den Fokus verliert. Das Laden selbst macht man normalerweise beim Ereignis OnLoad / Load des Formulars selbst. Ein einfaches Beispiel welches Sie für das auslesen verwenden können (Anpassung natürlich notwendig):

Dim myFileReader As New StreamReader("c:\temp\test.txt")
Dim currentRow As String
Dim arrTextArray As New ArrayList()

currentRow = ""

Do

currentRow = myFileReader.ReadLine()

If Not currentRow Is Nothing Then
arrTextArray.Add(currentRow)
End If

Loop Until currentRow Is Nothing

myFileReader.Close()

For Each currentRow In arrTextArray

Console.WriteLine(currentRow)

Next

Console.ReadLine()

damit liest man die Textdatei von der ersten Zeile bis zur letzten aus. natürlich müssen Sie pro Zeile logischerweise auch die Textboxen zuordnen daher macht es auf Dauer Sinn, wenn Sie eine Access Datenbank nutzen was mit VB.NET einfach ist damit können Sie pro Spalte eine Textbox binden und hätten sehr viel weniger Aufwand.

Gruß Günter









Experte:  IT-Fachinformatiker hat geantwortet vor 2 Jahren.
Hallo,

haben Sie mein Beispiel einmal versucht? Ich persönlich würde es aber viel eher mit einer reinen lokalen Datenbank (Access, ohne SQL-Server MS-Access ist nicht notwendig da das VS alle Tools an Board hat) machen denn dann würden Sie sich den Aufwand sparen das ganze wird nämlich später wenn es um Aktualisierungen und Validierungen geht sehr kompliziert und damit sehr fehleranfällig.

Gruß Günter

Ähnliche Fragen in der Kategorie Computer