Papyrus Base:
Ich habe weiterhin folgendes Problem: in Papybase sollen aus EINEM Datensatz mit etwa 30 Feldern einzelne CSV-Datensätze erzeugt werden. Nicht alle Felder sind immer gefüllt, manchmal sind sie leer. Über die Report-Funktion habe ich ein Dokument erstellt, welches ich im ASCII-Format abspeichere. Das hat dann pro Quell-Datensatz eine ganze Menge mehr Zeilen, ein Quell-Datensatz erzeugt auf diese Weise eine Menge CSV-Datensätze/Zeilen. Soweit klappt das alles, kann ich in Excel einlesen. Lästig aber: auch ein LEERES Quellfeld erzeugt eine Zeile, zwar eine LEERE, aber das stört, muss ich händisch löschen. Gibt es eine Möglichkeit, zum Beispiel im Rahmen einer IF-ELSE-Konstruktion so etwas einzubauen wie IF feld1=0 THEN „skip LF“ (habe ich mir ausgedacht!) ELSE feld1+„;“+feld1a+„;“+feld1b … Sowas etwa? In dem guten alten 1StBase auf ATARI ging das. Das LF/CR konnte man mit einem Semikolon im Report-Code überspringen.
Vielleicht eine Neben-Frage: könnte man die Ausgaben auch direkt in ein ASCII-File lenken, dann fiele der Umweg weg?
Du hast es fast schon. Du musst alle Feldplatzhalter direkt hintereinander hauen und darfst nur dann ein CR ausgeben, wenn etwas im Feld steht, also genau die umgekehrte Lösung zu Deiner - nicht „skip“, wenn nüscht da ist, sondern aktiv ein CR ausgeben, wenn was da ist.
Der Report kann in „Datei“->„Dokument speichern unter“ als Dateityp „ASCII.TXT“ gespeichert werden! Einfach unter Dateityp einstellen.
Nur mal so ganz nebenbei: Es gibt also noch Mneschen, die 1ST-base kennen.
Hier sei mal angemerkt, dass das Papyrus-Team es mir ermöglicht hat, meine mit der genannten Datenbank erstellten Adress-Datenbank aus Anfang der 90er bis heute zu nutzten! Danke!
Mh, das scheint für meinen Verstand zu einfach. Ich habe folgende Report-Syntax:
1.Zeile: (Datenfeld/grün)
IF Lohnabschlag1 != 0 THEN STR(TAG(Arbeitsdatum), 2, 0) + STR(MONAT(Arbeitsdatum), 2, 0) + ‚;‘ + Lohn1Name + ’ L!B Lohnabschlag X!’ + Monat1 + ‚;‘ + STR(Lohnabschlag1, 5, 2) + ‚;0;1740;1010;0‘
abgeschlossen mit CR
2.Zeile:
IF Lohnabschlag2 != 0 THEN STR(TAG(Arbeitsdatum), 2, 0) + STR(MONAT(Arbeitsdatum), 2, 0) + ‚;‘ + Lohn2Name + ’ L!B Lohnabschlag X!’ + Monat2 + ‚;‘ + STR(Lohnabschlag2, 5, 2) + ‚;0;1740;1010;0‘
wieder abgeschlossen mit CR.
Wenn IF Lohnabschlag2 = 0 ist, kommt eine leere Zeile, abgeschlossen mit CR.
…
mit dem nächsten Datensatz wieder so (natürlich auch bei IF Lohnabschlag1 = 0)
Ich verstehe nicht, wie ich diese beiden Datenfeld-Inhalte so verbinde, dass diese leere Zeile NICHT auftaucht, sondern der nächste volle Datensatz geschrieben wird.
- Füge das CR an das Ende deiner Ergebnisformel an (+ CR)
- Lösche die CR im Text, sodass die Daten/Formelfelder direkt hintereinander stehen.
Wenn die Ergebnisformel keinen Inhalt produziert, wird auch kein CR ausgegeben und es entsteht keine Leerzeile.
Super, eigentlich einfach, hat genau so funktioniert! Danke