2016-06-18 25 views
-3

Ich versuche ein System für Buchungen und Zahlungen zu erstellen, ich habe derzeit mehrere Variablen in einer Datei Geldbuße speichern. Was ich tun muss, ist, eine Zahlung zu der eingestellten bookingID hinzuzufügen, jetzt habe ich es so sortiert, dass es die geänderten Zahlungssummen zu der Datei hinzufügt, aber ich kann es nicht bekommen, um die alten zu löschen. Wenn es also die Datei durchsucht, findet es zuerst die alte, wo der Kunde nur £ 50 bezahlt hat und nicht die letzte, wo er £ 100 bezahlt hat. Also, wie lese ich aus der Datei und mache alles, was ich mit den Daten daraus tun muss, lösche dann diese einzelne Zeile von Daten und dann weiß ich, wie man die neuen Daten einfügt. Ein Freund erwähnte ein Array, aber ich habe es versucht Das hier durchzuschauen und es hat mich massiv verwirrt.Eine Zeile aus einer Textdatei in vb.net löschen

Vielen Dank im Voraus

mehr Code Es oben ist, wo er die Daten findet und zeigt sie dann dies, sobald sie den Betrag, den sie

Dim bookings As String 
    bookings = "E:\Grouse Lodge Bookings\Bookings.txt" 
    bookingidtemp = txtbookingid.Text 
    FileOpen(1, bookings, OpenMode.Input) 
    found = False 
    If temp = True Then 
     If found = False Then 
      Do Until found = True 
       Input(1, custname) 
       Input(1, address1) 
       Input(1, address2) 
       Input(1, cost) 
       Input(1, amount) 
       Input(1, startdate) 
       Input(1, enddate) 
       Input(1, postcode) 
       Input(1, bookingid) 
       Input(1, remaining) 
       If bookingidtemp = bookingid Then 
        txtname.Text = custname 
        txtaddress1.Text = address1 
        txtaddress2.Text = address2 
        txtcost.Text = cost 
        txtstartdate.Text = startdate 
        txtenddate.Text = enddate 
        txtpostcode.Text = postcode 
        txttopay.Text = remaining 
        found = True 
        FileClose(1) 
       Else 

       End If 
      Loop 
     End If 
     If found = False Then 
      MsgBox("Booking not found, please try again") 
      FileClose(1) 
     Else 
      If found = True Then 
       FileOpen(1, bookings, OpenMode.append) 
       custname = txtname.Text 
       address1 = txtaddress1.Text 
       address2 = txtaddress2.Text 
       cost = txtcost.Text 
       amount = txtpaid.Text 
       startdate = txtstartdate.Text 
       enddate = txtenddate.Text 
       postcode = txtpostcode.Text 
       bookingid = txtbookingid.Text 
       cost = txtcost.Text 
       amount = txtpaid.Text 
       paying = remaining - amount 
       remaining = paying 
       amount = cost - remaining 
       WriteLine(1, custname, address1, address2, cost, amount, startdate, enddate, postcode, bookingid, remaining) 
       FileClose(1) 
       MsgBox("Payment added") 
+3

Textdateien sind kein wahlfreier Zugriff. Die einzige Möglichkeit, eine Zeile zu ändern, besteht darin, die gesamte Datei erneut zu schreiben. Betrachten Sie eine Datenbank. Lies auch [Ask] und nimm die [Tour] – Plutonix

+0

Was hast du probiert? Keiner von uns kann Ihnen helfen, es sei denn, ich habe etwas, mit dem ich arbeiten kann, insbesondere ein [minimales, vollständiges und verifizierbares Beispiel (MCVE)] (https://stackoverflow.com/help/mcve). Eine gute Möglichkeit, dies zu erklären, ist es, den Code, den Sie bisher geschrieben haben, die Beispieleingabe (falls vorhanden), die erwartete Ausgabe und die Ausgabe, die Sie tatsächlich erhalten (Konsolenausgabe, Trace-Backs usw.), einzubeziehen. Je mehr Details Sie angeben, desto mehr Antworten erhalten Sie wahrscheinlich. Schauen Sie sich auch die [FAQ] (http://meta.stackexchange.com/q/7931) und [ask] (https://stackoverflow.com/help/asking) an. –

+0

Hinzugefügt es auf die Frage.Sorry für die Unerfahrenheit! –

Antwort

0

Vielleicht hinzufügen möchten eingegeben haben .....

Public Sub rml(ByVal path As String, ByVal ln As Integer) 
    Dim tb As New TextBox 
    tb.Text = My.Computer.FileSystem.ReadAllText(path) 
    Dim str As New List(Of String) 
    Dim i As Integer = 0 
    For Each l In tb.Lines 
     str.Add(tb.Lines(i)) 
     i += 1 
    Next 
    str.RemoveAt(ln - 1) 
    tb.Text = "" 
    For Each h In str 
     tb.Text = tb.Text & h & vbNewLine 
    Next 
    Dim writer As New System.IO.StreamWriter(path) 
    writer.Write(tb.Text) 
    writer.Close() 
End Sub 

. Beispiel: rml("C:\Users\User1\Desktop\TextEx.txt", 5) wird die fünfte Zeile der Textdatei entfernen "TextEx"

Verwandte Themen