[gelöst]Datensatz aus Textdatei löschen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Postbyme
**
Beiträge: 38
Registriert: Mo, 27.11.2017 18:42

[gelöst]Datensatz aus Textdatei löschen

Beitrag von Postbyme » So, 01.04.2018 20:25

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
Zuletzt geändert von Postbyme am So, 08.04.2018 21:44, insgesamt 1-mal geändert.

F3K Total
********
Beiträge: 3213
Registriert: Mo, 28.02.2011 17:49

Re: Datensatz aus Textdatei löschen

Beitrag von F3K Total » So, 01.04.2018 21:04

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

Postbyme
**
Beiträge: 38
Registriert: Mo, 27.11.2017 18:42

Re: Datensatz aus Textdatei löschen

Beitrag von Postbyme » So, 01.04.2018 21:54

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.

F3K Total
********
Beiträge: 3213
Registriert: Mo, 28.02.2011 17:49

Re: Datensatz aus Textdatei löschen

Beitrag von F3K Total » So, 01.04.2018 22:09

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

Postbyme
**
Beiträge: 38
Registriert: Mo, 27.11.2017 18:42

Re: Datensatz aus Textdatei löschen

Beitrag von Postbyme » So, 01.04.2018 22:17

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?

F3K Total
********
Beiträge: 3213
Registriert: Mo, 28.02.2011 17:49

Re: Datensatz aus Textdatei löschen

Beitrag von F3K Total » So, 01.04.2018 22:32

... indem ich Zeile 1 und 2 sowie Zeile 4 und 5 in eine neue Datei schreibe...

Postbyme
**
Beiträge: 38
Registriert: Mo, 27.11.2017 18:42

Re: Datensatz aus Textdatei löschen

Beitrag von Postbyme » So, 01.04.2018 22:44

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?

F3K Total
********
Beiträge: 3213
Registriert: Mo, 28.02.2011 17:49

Re: Datensatz aus Textdatei löschen

Beitrag von F3K Total » So, 01.04.2018 22:51

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

Postbyme
**
Beiträge: 38
Registriert: Mo, 27.11.2017 18:42

Re: Datensatz aus Textdatei löschen

Beitrag von Postbyme » So, 01.04.2018 22:59

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.

F3K Total
********
Beiträge: 3213
Registriert: Mo, 28.02.2011 17:49

Re: Datensatz aus Textdatei löschen

Beitrag von F3K Total » So, 01.04.2018 23:05

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

Postbyme
**
Beiträge: 38
Registriert: Mo, 27.11.2017 18:42

Re: Datensatz aus Textdatei löschen

Beitrag von Postbyme » So, 01.04.2018 23:07

:-) 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

F3K Total
********
Beiträge: 3213
Registriert: Mo, 28.02.2011 17:49

Re: Datensatz aus Textdatei löschen

Beitrag von F3K Total » So, 01.04.2018 23:55

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

Postbyme
**
Beiträge: 38
Registriert: Mo, 27.11.2017 18:42

Re: Datensatz aus Textdatei löschen

Beitrag von Postbyme » Mo, 02.04.2018 09:49

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

Antworten