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

2-spaltige Tabelle wird nur 1-spaltig ausgegeben, was mache ich falsch?


(Guest) #1

Hallo,
in einem simplen Tabellenobjekt möchte ich die Datenzeile 2-spaltig ausgeben.
Die Tabelle enthält nur die Datenzeilendefinition (ohne Kopfzeilen etc.)
Im Tabellenobjekt habe ich “Spaltenzahl” auf “2-spaltig” gesetzt.
Im Designer sieht man dann, wie die rechte Hälfte der Tabelle ausgegraut die gleichen Werte wie die linke enthält.
Wenn ich meine Liste dann ausgebe (programmgesteuert, Delphi), wird aber nur die linke Seite des Blattes bedruckt (samt Seitenwechsel etc.); die 2. Spalte bleibt leer.
Warum wird nicht erst die rechte Hälfte (= 2.Spalte) des Blattes gefüllt, bevor der Seitenwechsel gemacht wird?

Was mache ich falsch?

Vielen Dank im voraus für eure Hilfe.
Uwe.

LL14
Spaltenwechselbedingung: “false”
Falls ich “Spaltenwechselbedingung” auf “true” setze, wird pro Blatt nur ein Datensatz ausgegeben ! Schrott.
Und den Parameter “Spaltenwechsel vor” (lt. Designerhandbuch) gibt es gar nicht!


(Guest) #2

Sehr geehrter Herr Spitzenberger,
vielen Dank für Ihren Beitrag.

Um dem Problem auf die Spur zu kommen, benötigen wir noch weitere Informationen:

-Wie werden die Daten übergeben?
-Wie wird der Druck gesteuert (eigene Druckschleife o. DataBinding)
-Ist es nachstellbar mit einem der mitgelieferten Beispielen?

Hinweis:
Ich vermute aber, dass hier wohl ein Supportcase benötigt wird, da man dort die Möglichkeit hat Dateien auszutauschen etc.

Mit freundlichen Grüßen

Erdal Alacali
Support
combit GmbH


(Guest) #3

Hallo,
ich habe keine Datenbank-Objekte (kein DataBinding), sondern ein einfaches Array, was programmgesteuert übergeben wird. So einfach:
Also erst mal für den Designer:
LlDefineVariableStart(hJob);
LlDefineFieldStart(hJob);
LlDefineVariable(hJob,‘Zeile_1’,PChar(‘Tagname’));
// hier die zwei Felder, die ich an das LL-Tabellenobjekt “TT_Parameter” übergebe:
DefineTextFields(hJob,‘Param_Name’,‘Zulauf’);
DefineTextFields(hJob,‘Param_Einheit’,‘Liter/Tag’);

// und dann die Ausgabe über 10 Tage:
LlPrintEnableObject(hJob,’:TT_Parameter’,TRUE);
for j:=1 to 10 do begin
LlDefineVariable(hJob,‘Zeile_1’,PChar(‘Tagname[j]’))
// Schleife über alle 100 Parameter:
i:=1;
REPEAT
DefineTextFields(hJob,‘Param_Name’,Name[i]);
DefineTextFields(hJob,‘Param_Einheit’,Einheit[i]);
LLstat:=LlPrintFields(hJob); // diese Zeile drucken
if LLstat=LL_WRN_REPEAT_DATA then begin
while LLstat=LL_WRN_REPEAT_DATA do begin
LLstat:=Llprint(hJob); // Seitenvorschub falls zu viele
end;
end else Inc(i);
UNTIL i=100;
end;
Diese Ausgabeschleife funktioniert auch tadellos! Aber das Tabellenobjekt wird NICHT zweispaltig (wie im Designer definiert) ausgegeben, sondern es wid nur die linke Spalte gedruckt. Warum ?

Gruss, Uwe.


(Guest) #4

Hallo Erdal,
ergänzend zu dem Programmcode in der vorherigen Antwort hier jetzt eine pdf-Datei, die zeigt, wie es im LL14-Designer aussieht.
LL17 macht übrigens auch keine 2-spaltige Ausgabe; im Designer sieht man auch die ausgegraute 2. Spalte nicht, aber wenn man die Spaltenzahl vergrössert, wird die 1.Spalte immer kleiner…
Irgendwer bei Combit muss doch wissen, was es mit der Einstellung “Spaltenzahl” auf sich hat. Eigentlich doch selbsterklären…funktioniert nur nicht!
Oder muss man programmgesteuert (wie beim Blattvorschub) abfragen und dann auf die 2. Spalte springen?
Wenn ja, wie ?
Gruss, Uwe.


(Guest) #5

Hallo Uwe,

bei mir funktioniert die zweispaltige Ausgabe problemlos. In der Beispielanwendung von combit gibt es ja auch einen mehrspaltigen Bericht. Den schonmal ausprobiert? Deine Druckschleife ist m.E. falsch (nach LlPrint muss LlPrintFields mit den gleichen Daten kommen), wobei Du da höchstens einen Datensatz beim Seiten/Spaltenwechsel verlieren solltest. Das LlPrintEnableObject ist auch nicht nötig, solange Du nur mit einer Tabelle arbeitest (tust Du doch hoffentlich?!).

Ich würde einfach mal bei combit ein Supportticket aufmachen. Hinterher würde mich die Antwort aber interessieren :).

G.


(Guest) #6

Hallo Günther,
vielen Dank für die Antwort! Du bist der erste, der außer Combit (leider ohne echte Hilfe) überhaupt mal antwortet.
Ich werde weiter testen…
Hast Du den Anhang gesehen, wie es bei mir aussieht im Designer?
Um Missverständnissen vorzubeugen: Mehrere Parameter nebeneinander auszugeben (das wären ja auch mehrere Tabellenspalten) ist kein Problem. Es geht darum, daß das Tabellenobjekt automatisch das Blatt mit einer zweiten Spalte (und den gleichen Parametern) füllt, ohne vorher den Blattvorschub zu machen. Erst wenn die 2. Spalte auch gedruckt ist, darf der Blattvorschub kommen…


(Guest) #7

Hallo Uwe,

ja, das hatte ich glaube ich schon so verstanden wie Du es meinst. Bei mir klappt das aber, wobei ich schon lange mit .NET und Databinding unterwegs bin, früher aber Delphi und eigene Druckschleife. Ich kann mir nicht vorstellen, dass das nur im einen Fall funktioniert, das Databinding macht ja auch im Hintergrund nichts anderes als Du selber. Klappt es denn mit der Beispielanwendung? Sonst mal einen Blick in das Logfile geworfen :)? Da finden sich manchmal sehr sinnvolle Erkenntnisse drin.

G.


(Guest) #8

Hallo zusammen,
das Problem ist gelöst!
Dank dem Hinweis: “solange Du nur mit einer Tabelle arbeitest” fand ich noch ein zweites Dummy-Tabellenobjekt (1-spaltig, wofür weiss ich gar nicht mehr), das ich nicht explizit disabled (LlPrintEnableObject…, FALSE) hatte.
Nachdem ich das getan hatte, funktioniert auch die 2-spaltige Ausgabe.

Danke Günther !!!


(Guest) #9

Faszinierend … Schön dass einer der Schüsse ins Blaue getroffen hat.


(Guest) #10

Ja, und wie ins Blaue…!!!
Danke nochmals,
Uwe.