+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

drucken in einem Printjob


(Guest) #1

Hallo,

ich habe folgende Aufgabenstellung:

ich möchte Sachkonten drucken. Ich habe dazu einen Bericht erstellt. Alle Sachkonten greifen auf diesen Bericht zu. Ein Sachkonto kann mehrere Seiten Buchungen haben. Und der User kann z. B. 100 Sachkonti (durch Intervall-Selektion) auswählen und drucken.

Nun, ich könnte das so machen, dass ich die 100 Sachkonti in 100 ll-Datei ausgebe (im Hintergrund) und dann diese 100 Datei mittels llstgsysappend zusammenfüge, das Ergebnis anzeige und die 100 ll-Datei lösche. Aber man kann ja vorstellen, das dies etwas Zeit kostet.

Gibt es die Möglichkeit, diese 100 Druckjobs in einen zusammenzufassen, so, dass der ersten ll-Datei die nachfolgenden immer hinzugefügt werden? Oder dass die ll-Datei ganz am Ende erstellt wird, als alle 100 Sachkonti durch sind? Wenn ja, wie?

Ich benutze diesen Code (vb.net), um ein Sachkonto auszudrucken:

With allg_bericht .ll.DataSource = pgds .ll.AutoDesignerFile = Application.StartupPath & "\berichte\sachkonto.lst" AddHandler .ll.AutoDefineNewPage, AddressOf param_sachkonto .ll.AutoDestination = LlPrintMode.PreviewControl .ll.PreviewControl = .llviewer .Show() .ll.Print(LlProject.List, .ll.AutoDesignerFile, False, LlPrintMode.Preview, LlBoxType.None, "", False, "") End With

wo allg_bericht ein Form ist, auf dem ein LL Objekt und ein LLViewer platziert ist. pgds ist das Dataset, welches die Daten zu einem Sachkonto beinhaltet.


(Guest) #2

Ich verstehe nicht, wieso Du nicht alle 100 Sachkonti in eine Datei druckst… Das geht doch normalerweise wunderbar:

  • oberste Ebene die Liste der Sachkonten
  • eine Ebene tiefer (relational verknüpft) die zugehörigen Buchungen

Sind Deine Daten denn nicht relational verknüpft?

Paulchen


(Guest) #3

In einer Tabelle sind nur die Sachkonti und in einer anderen nur die Buchungen. In der Datenbank habe ich keine Relation zwischen den beiden Tabellen festgelegt, da ich es für unnötig gehalten habe. Wenn der User ein Sachkonto löschen will, prüfe ich lieber direkt, ob es schon Buchungen auf diesem Konto gibt oder nicht.

Z. Zeit sieht der Bericht so aus, dass die allgemeine Daten (Sachkontonummer, Name, Zeitraum, Zeit und Datum) als Variablen übergeben werden und die Buchungen dann in einen Berichtskontainer gedruckt werden. Ich kann aus der Datenbank die Buchungen nur zu einem Sachkonto abfragen und nicht zu allen 100.

Aber das mit den Ebenen werde ich noch prüfen, vielleicht lässt sich da noch was machen.

Gibt es keine andere Möglichkeit, die Kontendrücke nur in eine Druckdatei auszugeben (ohne llstgsysappend)?


(Guest) #4

Eigentlich nicht.

Aber Du mußt doch irgendeine Verknüpfung haben, respektive Filter dafür definieren können, d.h. wissen, welche Buchungen zu welchen Sachkonten gehören.

Ich vermute, Du benutzt .NET, dann müßtest Du idealerweise einen Datenprovider für Deine Struktur schreiben, das ist aber m.W. nicht kompliziert (habe ich aber noch nie gemacht, da ich mit .NET immer noch marginal zu tun habe). Da hast Du Deine “obere” Tabelle, die Sachkonten (mit ihrem Filter, der zur Abfrage benutzt wird), und die zugehörige Untertabelle, deren Filter sich aus “… WHERE Sachkonto=” aufbaut.

Wenn Du einmal einen Provider hast, dann macht LL den Rest allein.

Auch wenn das etwas kompliziert klingt: ich glaube, wenn Du das ein Mal gemacht hast (war unglücklich, keine Relationen zu verwenden, finde ich), dann fällt der Rest praktisch kostenlos auf seinen Platz. Und das Design ist dann auch einfach und logisch, da Du dann relationale Tabellen hast im Designer.

Paulchen


(Guest) #5

Inzwischen habe ich die Daten aus der Datenbank so abgefragt, dass ich eine Relation zwischen den Sachkonten und den Buchungen definieren kann. Ich habe die Tabellen geordnet und es scheint zu funktionieren. Z. Zeit kämpfe ich noch mit dem Berichtsinhalt, ich bekomme nicht die Zahlen zurück, die ich vorher mit dem alten Bericht hatte.

Woher weiss eigentlich LL, um was für eine Relation es geht? (also um 1:1 oder um 1:n). Ich habe das nämlich nirendwo angegeben.


(Guest) #6

Das muß ein .NET-Guru erklären… :wink: Muß irgendwie aus dem Schema ersichtlich sein, nehme ich an.

Schöne Weihnachten und etwas Ruhe wünscht euch allen

Paulchen