Adressbuch: Fehler beim einlesen

flyandshot

Grünschnabel
Tach zusammen,
Ich hab so ein Art Adressbuch erstellt. Dort kann man Name, Vorname ... eintragen und man kann am Schluss noch Bemerkungen hereinschreiben.
Das wird dann in eine Textdatei geschrieben. Läuft auch alles
Aber das Problem:
Ich habe ebenfalls eine Suche eingebaut, welche sequentiell liest , also Zeile für Zeile
beim ersten Datenblock (Adresssatz) funktionert alles. Nur beim zweiten werden noch die Bemerkungen des ersten eingelesen und beim Dritten die vom ertsen und zweiten usw.

Ich habe die Bemerkungen per Do Loop ausgelesen und lass die schleife dann durch eine If anweisung beenden.
Ich habe keine Ahnung wo der Fehler liegt.

m.f.G.: flyandshot
 
Schreiben:
Code:
Private Sub cmdsend_Click()
On Error GoTo errorhandler

abgs = "false"
Open "Datenb.txt" For Append As #num

Print #num, ""
Print #num, "---------------------"
Print #num, txtvname.Text
Print #num, txtnname.Text
Print #num, txtplz.Text; " "; txtort.Text
Print #num, txtstreet.Text; " "; txtstreetnum.Text
Print #num, txtphone.Text
Print #num, txtmobil.Text
Print #num, txtmail.Text
Print #num, txtwebsite.Text
Print #num, txtbemerk.Text
Print #num, "Ende"
Close #num

abgs = "true"
errorhandler:
  If abgs = "false" Then
   msgfault = MsgBox("Fehler beim Absenden des Datensatzes", vbCritical + vbOKOnly)

  ElseIf abgs = "true" Then
   msgfault = MsgBox("Der Datensatz wurde abgesendet", vbExclamation + vbOKOnly)
  End If

und lesen:
Code:
bemerk = ""
zumb = vbCrLf

anzeige = "openfailed"
On Error GoTo errorhandler
Open "Datenb.txt" For Input As #num

Do
On Error GoTo errorhandler

If txtsuchevname.Text = Empty And txtsuchenname.Text = Empty Then
   msgfault = MsgBox("Keine Daten angegeben")
  anzeige = "nod"
  Exit Do
 
ElseIf txtsuchevname.Text = "Vorname" And txtsuchenname.Text = "Nachname" Then
   msgfault = MsgBox("Keine Daten angegeben")
  anzeige = "nod"
  Exit Do
  
End If

Line Input #num, leer
Line Input #num, bstrich
Line Input #num, vname
Line Input #num, nname
Line Input #num, ort
Line Input #num, street
Line Input #num, phone
Line Input #num, mobil
Line Input #num, mail
Line Input #num, website

Do
   Line Input #num, bemadd
   If bemadd = "Ende" Then
   bemerk = bemerk + zumb
   Exit Do
   Else
   bemerk = bemerk + bemadd + zumb
   End If
Loop


If txtsuchevname = Empty Or txtsuchevname = "Vorname" Then
    If nname = txtsuchenname Then
    anzeige = "true"
    Exit Do
    End If
ElseIf txtsuchenname = Empty Or txtsuchenname = "Nachname" Then
    If vname = txtsuchevname Then
    anzeige = "true"
    Exit Do
    End If
ElseIf vname = txtsuchevname And nname = txtsuchenname Then
  anzeige = "true"
  Exit Do
Else
anzeige = "false"

End If





Loop
Close #num



all = leer + zumb + bstrich + zumb + "Vorname:    " + vname + zumb + "Nachname: " + nname + zumb + "PLZ/Ort:     " + ort + zumb + "Straße:        " + street + zumb + "Telefon:      " + phone + zumb + zumb + "Mobil:         " + mobil + zumb + "E-mail:        " + mail + zumb + "Website:    " + website + zumb + zumb + "Bemerkungen:" + zumb + bemerk
txtausg.Text = all

errorhandler:
   If anzeige = "false" Then
  
    msgfault = MsgBox("Datensatz konnte nicht gefunden werden!!")
   ElseIf anzeige = "openfailed" Then
   msgfault = MsgBox("Datenbank wurde noch nicht angelegt!!", vbCritical, "Datenbank noch nicht angelegt")
   
   End If

 Close #num
Exit Sub


End Sub
 
Hallo,

gibt es einen Grund, dass Du ein Adressbuch in einer sequentiellen Datei anlegst? Da wäre doch eine Random-Datei mit fester Satzlänge wesentlich sinnvoller (wenn Du schon keine Datenbank verwenden willst).

In der Random-Datei defnierst Du über eine Type-Definition Deine Datensatz-Struktur, und kannst dann zumindest satzweise darauf zugreifen.

In Deiner sequentiellen Datei würde es schon knallen, wenn Du z.B. "Michael Ende" zu Deinen Bekannten zählen würdest, weil die Einlesefunktion dann wirklich Ende machen würde.

Falls es unbedingt sequentiell sein soll, solltest Du zumindest die Einleseschleife so aufbauen:

DO WHILE NOT EOF(FileNummer)
line input #FileNummer,TextString
LOOP

Dann liest Du zumindest die ganze Datei.

Grüsse
Ronald
 
Ok danke... ist wahrscheinlich schon schlauer wenn ich mit wahlfreiem Zugriff arbeite (nehme keine Datenbank, damit es ortunabhängig bleibt)

m.f.G.: flyandshot
 
Zurück