Seite 1 von 1

[gelöst]Datensatz aus Textdatei löschen

Verfasst: So, 01.04.2018 20:25
von Postbyme
Hallo zusammen,
führe Daten aus unterschiedlichen Calc-Dateien in eine Textdatei im CSV-Format zusammen (Strichpunkt als Datentrenner).

R;3799;04.12.2017 19:58:20;P;Fr.;Hans Muster;Schalhaldenstr. 113;;88348 Bad Wutzgau;;
A;3844;22.02.2017 11:42:38;W;Hr.;Max Mustermann;Karl Straße 86;;55128 Mainz;;

Da ich die Datei nicht immer neu aufbaue sondern Veränderungen update, müsste ich den ein oder anderen Satz auch wieder löschen können. Weis jemand wie das gehen könnte - habe in keiner Dokumentation etwas hierzu gefunden

Danke

Re: Datensatz aus Textdatei löschen

Verfasst: So, 01.04.2018 21:04
von F3K Total
Moin, du schreibst hier in der Forumskategorie Makros und allgemeine Programmierung. Warum?
Postbyme hat geschrieben: So, 01.04.2018 20:25 führe Daten aus unterschiedlichen Calc-Dateien in eine Textdatei im CSV-Format zusammen (Strichpunkt als Datentrenner).
Das ist ja schön, wie machst du denn das?
Postbyme hat geschrieben: So, 01.04.2018 20:25 ...sondern Veränderungen update...
Und nochmal, wie machst du denn das?

Oder anders, du läßt uns völlig im Nebel stehen, es sieht so aus, als könntest du Daten aus unterschiedlichen Dateien zusammenführen, weißt aber nicht wie du da eine Zeile löschst?
Klingt für mich nach Troll.

Gruß R

Re: Datensatz aus Textdatei löschen

Verfasst: So, 01.04.2018 21:54
von Postbyme
Hallo,
nix Troll :-)
Ich lese per Schleife alle -*.ods Dateien eines Verzeichnisses, öffne diese, lese diverse Feldinhalte aus und schreibe diese dann in einen Datensatz in eine einfache Textdatei raus.
In der Textdatei speichere ich mir zur gelesenen ods-Datei auch deren letztes Dateiänderungsdatum. Bei einem nächsten Lauf (Tage später) öffne ich nur noch die ODS-Files die ein neueres Dateiänderungsdatum haben. Wenn es die Ods-Datei nicht mehr gibt, möchte ich jetzt dann auch den zugehörigen Satz in der Textdatei löschen - und hier ist mein Problem.

Re: Datensatz aus Textdatei löschen

Verfasst: So, 01.04.2018 22:09
von F3K Total
Tja, dann kann das wohl nur klappen, wenn du jedem Datensatz den Namen/Speicherdatum oder ein anderes eindeutiges Attribut der Ursprungsdatei zufügst. Existiert die Datei nicht mehr, wird die Zeile nicht in die UPDATE-Datei kopiert. Also zwei Schritte
1.) Alte Datei durchforsten, nur aktuelle Zeilen in neue Datei übernehmen
2.) Wie gehabt, Updates an neue Datei dranhängen.
Gruß R

Re: Datensatz aus Textdatei löschen

Verfasst: So, 01.04.2018 22:17
von Postbyme
Deinen Hinweis verstehe ich nicht! Ich hole nochmal aus:

Ich möchte diese permanent aktualisierte Textdatei (=CSV-Datei) nutzen um Daten nach PHP zu überführen.
Ein Datenupdate in der Textdatei möchte ich so durchführen, dass ich den Datensatz in der Textdatei lösche und neu aufgebaut am Ende der Datei wieder anfüge. Also das Löschen ist mein Problem. So komisch wie es klingt, aber ich finde nirgends einen Hinweis wie ich einen Datensatz aus einer Textdatei löschen kann.

Du hast eine Datei mit 5 Namen untereinander. Wie löscht du Zeile 3 mit Max Mustermann?

Re: Datensatz aus Textdatei löschen

Verfasst: So, 01.04.2018 22:32
von F3K Total
... indem ich Zeile 1 und 2 sowie Zeile 4 und 5 in eine neue Datei schreibe...

Re: Datensatz aus Textdatei löschen

Verfasst: So, 01.04.2018 22:44
von Postbyme
Hallo,
ok - verstanden - löschen geht nicht. Leider sind es halt immer 15000 Datensätze die dann neu geschrieben werden müssen.

Dann könnte ich vielleicht die alten Datensätze in der Textdatei mit xxx en überschreiben / ungültig machen und die neuen Sätzen anfügen? Überschreiben geht ja an der Stelle wo der Dateizeiger sitzt, oder?

Re: Datensatz aus Textdatei löschen

Verfasst: So, 01.04.2018 22:51
von F3K Total
Ich frage mich warum du das alles so kompliziert machst.
Ich würde alle Daten in einer Calc-Datei oder einer Datenbank halten, da kann man einfügen, löschen sortieren.
Eine .csv daraus zu exportieren ist kein Problem.
Geht auch per Makro.

Gruß R

Re: Datensatz aus Textdatei löschen

Verfasst: So, 01.04.2018 22:59
von Postbyme
Ja der Tipp ist gut jedoch möchte ich permanent von PHP aus auf neueste Daten zugreifen können. Ab und zu einmal ein CSV-Export aus einer Tabelle reicht nicht und wäre bei 15000 Sätzen sicher auch mit Laufzeiten verbunden.

Re: Datensatz aus Textdatei löschen

Verfasst: So, 01.04.2018 23:05
von F3K Total
Du weißt, dass man mit Calc .csv Dateien öffnen und bearbeiten, dann wieder als .csv speichern kann?
Habe gerade mit meinem 2009er 32-Bit Laptop eine .csv mit 20000 Zeilen aus Calc gespeichert, dauert eine Sekunde.

Gruß R

Re: Datensatz aus Textdatei löschen

Verfasst: So, 01.04.2018 23:07
von Postbyme
:-) habe es gerade auch mit 5000 Sätzen gemacht. Geht wie der Blitz.

OK ich bleib in OO und gehe dann über CSV-Export.

Vielen Dank

Re: Datensatz aus Textdatei löschen

Verfasst: So, 01.04.2018 23:55
von F3K Total
Hi,
dies kann helfen CSV-Filter-Optionen (unten die Zeile args1(1).Value = "59,34,76,1,,0,false,true,true") wenn du die .csv per Makro öffnen möchtest, ein Beispiel:

Code: Alles auswählen

Sub LOAD_CSV
    dim args1(1) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "FilterName"
    args1(0).Value = "Text - txt - csv (StarCalc)"
    args1(1).Name = "FilterOptions"
    args1(1).Value = "59,34,76,1,,0,false,true,true"
    sURL = "file:///C:/Users/<USERNAME>/Desktop/TESTDATEN.csv"
    odoc = StarDesktop.loadComponentFromURL(sURL,"_blank", 0, args1)
end sub
Speichern geht dann so:

Code: Alles auswählen

Sub SAVE_CSV
    ThisComponent.store
end sub
Gruß R

Re: Datensatz aus Textdatei löschen

Verfasst: Mo, 02.04.2018 09:49
von Postbyme
Du weißt, dass man mit Calc .csv Dateien öffnen und bearbeiten, dann wieder als .csv speichern kann?
Ja das klingt genau richtig für meine Anwendung : Import der csv als Calc / Daten updaten / wieder als csv abspeichern.

Über die Jahre sind Rechnungs-ods-Dateien (mit 1...n Rechnungspositionen) zusammengekommen. Diese Daten möchte ich jetzt quasi als (csv-)Datenbank zusammenfassen für unterschiedliche Auswertungen und wie bereits geschrieben, auch für PHP zur Verfügung haben.
Gruss winni