BASE: Bedingte Ausgabe in Textdatei

Ich habe eine Datenbank allerlei Protokollen/Text-Einträgen. DIe Mitarbeiter tragen dort nach Arbeitsende alle Tagesdaten ein von Arbeitszeit bis Packprotokolle und Kundenkontakte bis Fahrtenbuch, alles in eine Maske, das muß so, sonst machen die das nicht lückenlos. Das klappt soweit seit Jahren. Aber jetzt auch mit Buchführungsfeldern: Datum,Ausgabe1, BarAus1, Ausgabe2, BarAus2, Ausgabe3,usw. Jetzt würde ich gerne daraus eine CSV-Datei extrahieren für die Buchführung nur mit den Feldern

Datum,Ausgabe1,BarAus1

nächster Satz

Datum,Ausgabe2,BarAus2

usw.

natürlich sind nicht alle Felder gefüllt, manchmal gibt es in einem Quell-Datensatz nur Ausgabe1, (oder besser garnichts). Dann soll der Extrakt/die Ausgabeprozedur weiter springen zum nächsten Quell-Daten-Satz.

Mit 1STBase auf dem Atari-Emulator geht das mittels

IF BarAus2>0

PRINT Datum;“,”;Ausgabe2;“,”;BarAus2

ENDIF

IF BarAus3>0

PRINT Datum;“,”;Ausgabe3;“,”;BarAus3

ENDIFIF BarAus4>0

PRINT Datum;“,”;Ausgabe4;“,”;BarAus4

ENDIF

So etwas schreibt dann ordentlich in eine Textdatei, bei Papyrus müßte ich dann den Text ASCII exportieren. Jetzt wollte ich aber den Umweg über 1StBase vermeiden, obwohl das immer noch ein Super-Programm ist. Ich mache die Lohnbuchhaltung damit, da sind bedingte Ausgaben nahezu unverzichtbar!

Wie kann das gehen?

Aw: BASE: Bedingte Ausgabe in Textdatei

Geht in Papyrus recht ähnlich, nur mit etwas anderer Syntax.

  • Ein IF muss noch ein THEN haben (für eine besser erkennbare Struktur)

  • Statt PRINT schreibt man wahlweise gar nichts oder, wenn es uneindeutig ist, RETURN (gib’ diesen Wert zurück)

  • Strings / Textzeichenketten werden in einfache Anführungszeichen gesetzt ‘String’

  • String-Verbindung geschieht mittels ‘+’

So sollte es gehen. Einfach einen passenden Report machen.

Aw: BASE: Bedingte Ausgabe in Textdatei

Krieg ich nicht hin.

Im Anhang ein Screenshot des Report-Formulars

Ich habe die Datenfelder einzeln mit SHIFT markiert/gegrünt.

Der IF-Krams kommt nicht durch, bleibt leer, wird ohne Dateninhalt und funktionierende Bedingung ausgegeben

Ergebnis:

Mi 16.03.16,M`Wesel, 593.91,2100,2000

IF >0 THEN Mi 16.03.16, ,2100,2000

IF >0 THEN Mi 16.03.16,2100,2000

IF >0 THEN Mi 16.03.16, ,Mi 16.03.16,M`XANTEN, ,2100,2000

IF >0 THEN Mi 16.03.16, ,2100,2000

IF >0 THEN Mi 16.03.16,2100,2000

IF >0 THEN Mi 16.03.16, ,Sa 12.03.16,M`Neuss, 1210,2100,2000

IF >0 THEN Sa 12.03.16, ,2100,2000

IF >0 THEN Sa 12.03.16,2100,2000

IF >0 THEN Sa 12.03.16, ,Sa 12.03.16,M`Kleve, 1313,2100,2000

IF >0 THEN Sa 12.03.16, ,2100,2000

IF >0 THEN Sa 12.03.16,2100,2000

IF >0 THEN Sa 12.03.16, ,Fr 11.03.16,M`Voerde, 280.35,2100,2000

IF >0 THEN Fr 11.03.16, ,2100,2000

IF >0 THEN Fr 11.03.16,2100,2000

IF >0 THEN Fr 11.03.16, ,Fr 11.03.16,M`Alpen, 231.5,2100,2000

IF >0 THEN Fr 11.03.16, ,2100,2000

IF >0 THEN Fr 11.03.16,2100,2000

IF >0 THEN Fr 11.03.16, ,Fr 11.03.16,M`Dinslaken, 590.24,2100,2000

IF >0 THEN Fr 11.03.16, ,2100,2000

IF >0 THEN Fr 11.03.16,2100,2000

IF >0 THEN Fr 11.03.16, ,IF >0 THEN Mi 16.03.16, , ,2100,2000

Danke für Hilfe

Aw: BASE: Bedingte Ausgabe in Textdatei

Derlei führt hier im Forum zu weit, das ist zu speziell, würde ich sagen. Bitte per Mail schicken.

Auf den ersten Blick sehe ich allerdings zwei Dinge - erstens fehlen bei der Ausgabe die umrahmenden ‘Textstring’, zweitens - sollte das nicht alternativ sein, also ein “ELSE IF” bei der 2. und folgenden Zeilen? Sicherheitshalber würde ich auch mit einem ENDIF beenden.

Aw: BASE: Bedingte Ausgabe in Textdatei

Habe die Dateien per Mail geschickt

Das mit dem Textsring umrahmen verstehe ich nicht…

Das soll rauskommen:

16.03.16,M`Wesel, 593.91,2100,2000

16.03.16,M`XANTEN, ,2100,2000

12.03.16,M`Neuss, 1210,2100,2000

12.03.16,M`Kleve, 1313,2100,2000

11.03.16,M`Voerde, 280.35,2100,2000

11.03.16,M`Alpen, 231.5,2100,2000

11.03.16,M`Dinslaken, 590.24,2100,2000

am liebsten ohne Leerzeichen.

das ELSEIF ist eher unnötig. Wenn mal eine Zeile leer bleibt, soll die Ausgabe nicht direkt zum nächsten Datensatz springen, ohne zu überprüfen, ob da vielleicht doch noch etwas im aktuellen Datensatz nächste Zeile kommt.

Aw: BASE: Bedingte Ausgabe in Textdatei

Eine Textzeichenkette oder “String” muss in einfache Anführungszeichen eingefasst werden. ‘String’ - sonst versucht Papyrus, daraus einen Feldnamen zu machen oder eine Variable.