PDA

View Full Version : Printerfile via SQL erstellen



Anna
20-09-05, 12:45
Hilfe!!!!
Ist es möglich aus einem SQLLERPG Programm(kann interactiv und oder im Batch laufen) ein Printerfile, was sowohl angezeigt als auch ausgedruckt werden kann, erstellen?

Fuerchau
20-09-05, 12:47
Diese Frage verstehe ich nicht ganz !
Eine Printerfile kann aus einem RPG/RPGLE ob mit oder ohne SQL ganz normal als O-Datei angesprochen werden.

Anna
20-09-05, 13:40
Diese Frage verstehe ich nicht ganz !
Eine Printerfile kann aus einem RPG/RPGLE ob mit oder ohne SQL ganz normal als O-Datei angesprochen werden.

Vielleicht habe ich meine Frage nicht richtig formuliert, sorry. Hier der bisheriger Ablauf meiner Programme:
-in einem SFL werden alle verfügbaren Felder einer Datei zur Auswahl angeboten
-die Auswahl wird in einer Datei gespeichert
-wird eine Liste aufgerufen, wird ein Vorprogramm gestartet, der aus der Auswahl eine SQL -Abfrage(dynamisch) erstellt und die gewünschten Sätze in eine Workdatei schreibt
Es funtioniert wunderbar, aber es ist ziemlich aufwendig, da ich immer wieder neue Programme und Printerfiles erstellen muß, wenn die Anwender andere Felder bzw.Summenzeilen benötigen.

kuempi von stein
20-09-05, 13:49
Vielleicht habe ich meine Frage nicht richtig formuliert, sorry. Hier der bisheriger Ablauf meiner Programme:
-in einem SFL werden alle verfügbaren Felder einer Datei zur Auswahl angeboten
-die Auswahl wird in einer Datei gespeichert
-wird eine Liste aufgerufen, wird ein Vorprogramm gestartet, der aus der Auswahl eine SQL -Abfrage(dynamisch) erstellt und die gewünschten Sätze in eine Workdatei schreibt
Es funtioniert wunderbar, aber es ist ziemlich aufwendig, da ich immer wieder neue Programme und Printerfiles erstellen muß, wenn die Anwender andere Felder bzw.Summenzeilen benötigen.
wäre dann sozusagen ein weiterer Aufruf in der Kette.
- Druckprogramm welches die Workfile aufbereitet/druckt....
.o.d.e.r.
- warum nicht gleich dann nach dem Aufruf "Vorprogramm" diese Workfile auslesen und drucken?

k.

Anna
20-09-05, 13:52
Vielleicht, weil es in der Workdatei keine Summenzeile gibt?

kuempi von stein
20-09-05, 13:56
Vielleicht, weil es in der Workdatei keine Summenzeile gibt?
hmmm...

habe wohl heute (mal wieder) vergessen den verständnissaft zu trinken...

die summenzeilen könnten doch im programm ebenfalls gebildet werden?
oder eben im zusätzlichen druckprogramm für diese workfile?

ich sehe wohl dein problem noch nicht.

k.

Fuerchau
20-09-05, 14:01
Dann ist dein bisheriges Verfahren die einzige Lösung.
Du kannst zwar eine Druckzeile per Programm auch dynamisch aufbauen, ob das aber hilft:

/free
PRTFLD = FLD1 + FLD2 + FLDx ... + %EDITC(FLDN:'K') + ...
/end-free

Der Nachteil ist halt, dass man die Feldnamen kennen muss und die Editcodes nicht als Variable definieren kann.

Anna
20-09-05, 14:23
Danke! Die Feldnamen und Feldart-/Länge sind in der Feldauswahldatei bereits gespeichert(sonst wäre es nicht möglich ein dynamisches SQL zu erstellen).Und wenn ich die Datei um ein Feld in dem die Editcodes für die num.Felder gespeichert werden, erweitere? Würde es dann gehen? Wie muß der Printerfile definiert werden? Und wie schreibe ich die Sätze darein?

Fuerchau
20-09-05, 16:27
Editcodes können NICHT als Variable angegeben werden sondern sind leider nur als Konstante erlaubt.
Dynamisches SQL ist per Programm ja möglich, da die Feldnamen als SQL-String an SQL übergeben werden und dem Programm nicht bekannt sein müssen.

Anders sieht es mit der Funktion %EDITC/%EDITW aus.
Dies ist eine RPGLE-Anweisung und kann eben NICHT dynamisch verwendet werden.
Der Feldname und Editcode müssen zur Compile-Zeit bereits feststehen.

Was das Drucken angeht, so reicht einfach ein 132/198-Stelliges Feld (je nach dem wie breit du druckst), da die Aufbereitung ja im Programm vorgenommen wird.