Autor Thema: .dat Dateien öffnen, Zeilen löschen, neu schreiben  (Gelesen 3698 mal)

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Moin,moin,

ich habe eine .dat Datei, die folgendermaßen aufgebaut ist:

Code
[KOSTENTRAEGER]
        =Ohne Kostenträger
10      =Automation Allgemein
10842   =
10844   =Fuhrpark DO Schloss.
10845   =Fuhrpark DO Schloss.
10853   =Reinig. Werksh. 2003
10854   =Reinigung Schloss.
10855   =Reinigung Schloss.
10863   =Werkz. Lag. Schloss.
10864   =WZL Schlosserei
10865   =WZL Schlosserei
10892   =
00001281003E2633

Ist es möglich diese Datei mittels open...for.. as filenum zu öffnen, die ersten beiden und die letzte Zeile zu erhalten oder in Variablen zu speichern und alle Zeilen dazwischen zu löschen, damit die Daten neu eingelesen werden können?

Gruß
Demian

PS: Bin mir nämlich nicht sicher, ob die Dateien einfach gelöscht und neu erstellt werden können. Sie stammen aus unserem Zeiterfassungssystem. 
Gruß
Demian

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: .dat Dateien öffnen, Zeilen löschen, neu schreiben
« Antwort #1 am: 29.03.07 - 11:57:29 »
Das ist möglich, allerdings
- musst Du das Textfile zeilenweise einlesen (Random access ist mit Textfiles nicht möglich)
- und die gewünschten Zeilen dann in eine neue Datei schreiben (ggf. vorher die alte löschen).

Bernhard

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: .dat Dateien öffnen, Zeilen löschen, neu schreiben
« Antwort #2 am: 29.03.07 - 12:23:12 »
Moin Bernhard,

das mit zeilenweise hab ich fast befürchtet. Der gezeigt Ausschnitt war natürlich nur ein Bruchteil der echten Datei, so dass zeilenweises Auslesen der ganzen Datei seine Zeit dauert. Aber wenns nicht anders geht...

Und wie lösche ich alle Zeilen ohne die eigentlich Datei zu löschen? Wie gesagt, ich weiß nicht ob diese komplett gelöscht werden kann.

Gruß
Demian
Gruß
Demian

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: .dat Dateien öffnen, Zeilen löschen, neu schreiben
« Antwort #3 am: 29.03.07 - 16:54:18 »
- und die gewünschten Zeilen dann in eine neue Datei schreiben (ggf. vorher die alte löschen).

Wie schon gesagt: Du kannst aus einem Textfile keine Zeilen löschen, sondern musst eine neue erstellen.
Beispiel:
- Datei einlesen
- gewünschte Zeilen in Variable einlesen
- alte Datei löschen
- mit den Werten aus der Variablen neue Datei gleichen Namens erstellen.

Bernhard

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: .dat Dateien öffnen, Zeilen löschen, neu schreiben
« Antwort #4 am: 30.03.07 - 08:22:41 »
Ok,

hatte das in deinem 1. Beitrag übersehen. Gut, dann muss ich wohl warten bis mir unsere Zeiterfassungsfirma Bescheid sagt, ob die Dateien ohne weiteres kurzzeitig gelöscht werden können.

Danke.

Gruß
Demian
Gruß
Demian

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: .dat Dateien öffnen, Zeilen löschen, neu schreiben
« Antwort #5 am: 30.03.07 - 09:38:46 »
Also, ich habe eben Rückmeldung erhalten -> die Dateien können kurzzeitig gelöscht werden. Vereinfacht die Sache ungemein. Da die ersten beiden und die letzte Zeile für die jeweiligen Dateien konstant sind, werde ich die jeweiligen Werte in Notesdokumente schreiben, und in den Ansichten für die einzelnen Dateien irgendwie kennzeichnen, damit sie in der richtigen Zeile erscheinen.

Vielen Dank Bernhard.

Gruß
Demian
Gruß
Demian

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: .dat Dateien öffnen, Zeilen löschen, neu schreiben
« Antwort #6 am: 31.03.07 - 12:03:01 »
Moin,moin,

habe da doch noch ein kleines Problem. Ich erzeuge die Datei mit folgendem Code:

Code
Function ZMKST0bis8dat_exportieren(Datei As String)
	Dim s As New NotesSession
	Dim db As NotesDatabase
	Dim view As NotesView
	Dim doc As NotesDocument
	Dim filenum As Integer
	
	Set db = s.CurrentDatabase
	'Start = 9, da Verzeichnis = "T:\Zeit\
	Set view = db.GetView(Mid(Datei,9,10))
	
	Set doc = view.GetFirstDocument
	test = doc.Text(0)
	filenum = Freefile
	
	Open Datei For Output As filenum
	For i = 1 To view.AllEntries.Count
		Write #filenum, doc.text(0)
		Set doc = view.GetNextDocument(doc)
	Next
	Close filenum	
End Function

Funktioniert an sich auch wunderbar, jedoch schreibt er mir den Inhalt des Feldes doc.Text mit " " in die Datei. Woran liegt das, bzw. wie kann man das beheben?

Gruß
Demian
Gruß
Demian

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: .dat Dateien öffnen, Zeilen löschen, neu schreiben
« Antwort #7 am: 31.03.07 - 18:45:38 »
Die Designer-Hilfe Dein Freund ist. Nachlesen in dem Kapitel "Write # Statement" Du kannst:

Data type:
String   
Write # statement behavior
Encloses all strings in double quotation marks. Pads fixed-length strings with spaces as needed.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: .dat Dateien öffnen, Zeilen löschen, neu schreiben
« Antwort #8 am: 31.03.07 - 19:52:43 »
Nimm PRINT anstelle von WRITE, wenn du die Anführungszeichen nicht brauchst.

Gruß

Norbert
Situs vilate in isse tabernit.

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Re: .dat Dateien öffnen, Zeilen löschen, neu schreiben
« Antwort #9 am: 01.04.07 - 11:35:35 »
Moin,moin,

ich dachte write wäre das Gegenstück zu Datei.writeline bei Scripting.FileSystemObject, deswegen habe ich in der Hilfe das auch gar nicht gesehen. Aber gut zu wissen, werde dann print nehmen.

Danke euch beiden.

Gruß
Demian
Gruß
Demian

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz