[gelöst]Datensatz aus Textdatei löschen

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

Moderator: Moderatoren

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

[gelöst]Datensatz aus Textdatei löschen

Beitrag 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
Zuletzt geändert von Postbyme am So, 08.04.2018 21:44, insgesamt 1-mal geändert.
-------------------------------------------------------
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Datensatz aus Textdatei löschen

Beitrag 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
Postbyme
***
Beiträge: 90
Registriert: Mo, 27.11.2017 18:42

Re: Datensatz aus Textdatei löschen

Beitrag 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.
-------------------------------------------------------
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Datensatz aus Textdatei löschen

Beitrag 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
Postbyme
***
Beiträge: 90
Registriert: Mo, 27.11.2017 18:42

Re: Datensatz aus Textdatei löschen

Beitrag 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?
-------------------------------------------------------
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Datensatz aus Textdatei löschen

Beitrag von F3K Total »

... indem ich Zeile 1 und 2 sowie Zeile 4 und 5 in eine neue Datei schreibe...
Postbyme
***
Beiträge: 90
Registriert: Mo, 27.11.2017 18:42

Re: Datensatz aus Textdatei löschen

Beitrag 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?
-------------------------------------------------------
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Datensatz aus Textdatei löschen

Beitrag 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
Postbyme
***
Beiträge: 90
Registriert: Mo, 27.11.2017 18:42

Re: Datensatz aus Textdatei löschen

Beitrag 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.
-------------------------------------------------------
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Datensatz aus Textdatei löschen

Beitrag 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
Postbyme
***
Beiträge: 90
Registriert: Mo, 27.11.2017 18:42

Re: Datensatz aus Textdatei löschen

Beitrag 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
-------------------------------------------------------
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Datensatz aus Textdatei löschen

Beitrag 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
Postbyme
***
Beiträge: 90
Registriert: Mo, 27.11.2017 18:42

Re: Datensatz aus Textdatei löschen

Beitrag 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
-------------------------------------------------------
Windows 11 22H2 /Libre Office 7.3.6.2 (x64)
Antworten