Leerzeilen im Report vermeiden

Hallo,

nachdem meine Suche hier im Forum nur einen Teilerfolg brachte, und ich mir unbedingt ein Adressheft für mein Pocket-Notizbuch aus einer Adress-Tabelle gestalten will, das nicht zu umfangreich ausfallen soll, wage ich einen Versuch hier im Forum, Hilfe zu bekommen.

Problembeschreibung:

In meiner Adress-Tabelle (Papyrus Base) habe ich die üblichen Spalten, wie Name, Postleitzahl, Telefonnr. etc., und dazu noch eine Spalte “Öffnungszeiten” (von Bibliotheken, Arzpraxen usw.).

Dazu gibt es noch eine Spalte “Geburtstag” mit wenigen Einträgen.

Nun hab ich meinen Drucker endlich dazu gebracht, mir aus dem BASE-Report ein kleines Heftchen mit den Daten zu produzieren, doch das Heftchen hat den Schönheitsfehler, dass eben nicht alle eine Festnetznummer haben, oder die Adresse nicht notwendig ist, und ich auch nicht den Geburtstag von meinem Doktor feiern will.

Diese vielen Leerzeilen aus dem Fließtext-Report zu löschen, ist äußerst mühsam, und ich wünsche mir von der Papyrus-Fee, dass sie mir diese Arbeit erspart, zumal sich Adressbücher naturgemäß ständig ändern.

Hat da jemand einen Rat, oder kann mir verraten, was es mit dem “IF LENGTH() THEN …” auf sich hat?

LG, basejumper

Kannst du ein Beispiel posten, wie so eine Adresse bei dir aussehen soll. Dann ist es einfacher, Rat zu geben.

Danke für die Antwort.

Ich versuche nun, eine Seite des Adress-Reports zu senden.

Ich habe die Adressen mit xxx etwas unkenntlich gemacht, aber ich denke man kann sich nun vorstellen, wie das Endresultat aussehen soll - nur eben ohne die Leerzeilen…

Ich möchte die Daten eben kompakt untereinander haben. Wenn also bei einem Datensatz beispielsweise die Anschrift fehlt, möchte ich, dass an dieser Stelle eben keine leere Zeile steht, sondern einfach gar nix. Wenn ich nur einen Namen habe und dazu eine Handynummer, soll es eben nach Name und Handynummer gleich mit dem nächsten Kontakt weitergehen.

Wenn ich nämlich die Geburtstage im Report auch noch ausgeben will, oder die Öffnungszeiten von XY, dann entstehen noch mehr leere Zeilen, und das möchte ich eben irgendwie umgehen.

Ich hoffe, es wird dadurch etwas verständlicher. Vielen Dank.

Beispiel.pap (3.32 KB)

Hallo,

mich würde es ungemein stören, wenn es bei der Reportausgabe in einem Datensatz einen “Übertrag” auf die nächste Spalte oder nächste Seite gibt.

Daher würde ich immer alle Felder ausdrucken, egal ob darin etwas steht oder nicht. Und damit hätte ich dann eine feste Anzahl fon Datensätzen pro Spalte bzw. Seite - sieht vielleicht besser aus und du kanns schriftlich etwas ergänzen.

Für den anderen Fall, dass du die Zeilen nicht ausgeben willst, die leer sind, musst du abfregen (IF … THEN), ob überhaupt im gewünschten Feld etwas steht. Wenn Ja, dann ausgeben. Wenn nicht, dann ENDIF.

Am einfachsten ist es immer, du schickst auch den Report mal mit, dann ist es am leichtesten konkret zu helfen.

Gruß

Sönke

Der hauptsächliche Trick ist, dass man ein Zeilenende [CR] unterdrücken kann, indem man es nicht einfach in den Report eintippt, sondern in die IF … THEN … Bedingung aufnimmt.

Die einzelnen Datenfeld-Platzhalter also alle mit “IF length(feldname) THEN … +CR ENDIF” versehen.

Hallo,

danke für die Antwort; ich glaube, wir kommen der Sache schon etwas näher.

Die Formatierung ist noch nicht ausgereift, das kommt noch, wenn ich das Problem mit den Leerzeilen gelöst habe.

Die Spalten-Übergänge sind zugegebenermaßen auch nicht besonders hübsch, aber Priorität hat die Platzersparnis in diesem Fall - soll ja als Heft hinten im Notizbuch eingeklebt werden.

Der Report selber ist nicht besonders spannend. Name - Vorname nebeneinander, Straße darunter, Hausnummer daneben …

Also, die Sache mit dem IF…THEN würde mich schon interessieren.

Wo ist dieser Befehl einzugeben, und wie genau.

Das wär’ echt herzerwärmend, wenn vor der Ausgabe durch eine Art Filter im Programm geklärt wäre, ob überhaupt was in einer Zeile steht, und wenn nicht, dass dann eben die leere Zeile entfällt.

Oh, Hallo Ulli!

Jetzt haben sich die Beiträge wohl zeitlich überschnitten.

Ja, genau darum geht es: Zeilenende CR etc.

Das hatte ich bei meiner Suche im Forum auch schon mal aufgeschnappt, kann aber leider nix damit anfangen.

Ist es möglich für Sie, mir das in der “Dummie-Variante” zu erklären?

Meine Basic-Kenntisse sind vor 25 Jahren verrottet, ich kapier grade noch, “was if … then” bedeutet, dann ist das Ende der Fahnenstange erreicht.

Also, wo finde ich die Datenfeld-Platzhalter?

Wo ist dieses “IF length(feldname) THEN … +CR ENDIF” genau einzutippen? Wenn ich mal den Fadenanfang des Knäuels hätte, könnte ich ja einmal damit herumspielen und den Knoten evtl. lösen…

Danke.

In der Reportvorlage. Also Datenbank öffnen, Report anklicken und dann in der Vorlagenliste den richtigen Report zum Bearbeiten auswählen. Danach auf Bearbeiten klicken. Es öffnet sich die Reportvorlage, in der die Datenfelder durch blaue Pfeile gekennzeichent sind.

Im Datenfeld-Fenster, das man über Einfügen > Datenfeld … oder durch einen Doppelklick auf ein existierendes Datenfeld bekommt. Das Fenster enthält links eine Liste aller Datenfelder der Datenbank und rechts einen Bereich für Formeln.

Bei einem einfachen Datenfeld steht rechts einfach nur der Name des Datenfelds, z.B. Strasse. Das kann man ersetzen durch:


if length(Strasse) > 0 then
return Strasse + CR
endif

Falls bei einem Datensatz die Straße ausgefüllt ist, wird sie im Report ausgegeben (return Strasse), gefolgt von einer Zeilenschaltung (+ CR). Falls im Datensatz keine Straße ausgefüllt ist, wird nichts ausgegeben (die if-Abfrage enthält keine Alternative mit “else”).

Vielen Dank für die ausführliche Antwort!

Super!

Das werde ich morgen gleich ausprobieren…

LG an alle!

Hallo,

ich habe das super-Rezept soeben ausprobiert, die Formeln eingegeben und alles angepasst. Es funktioniert soweit ganz gut, es steht alles da wo es hingehört, doch das Programm macht eine Fleißaufgabe.

Nach jedem Datenfeld, dass durch die IF…THEN - Schleife geht, schreibt der Report jetzt zusätzlich eine Leerzeile.

Wo also Daten vorhanden sind, werden die Daten UND eine darunterliegende Leerzeile angezeigt. Wo keine Daten vorhanden sind, ist alles beim Alten geblieben.

Es scheint, als ob der Report einen Befehl bräuchte in der Art von “IF NOT THEN NOTHING”. Möglicherweise wäre doch ein ELSE-Befehl vonnöten.

Tja, programmieren müsste man können…

Das liegt vermutlich daran, dass die Daten/Formelfelder in der Reportvorlage jeweils in einer eigenen Zeile stehen. Bringe die mal alle in eine einzige Zeile.

Ok, danke!

Ich werde das demnächst probieren.

LG

Hänge hier mal eine Formel dran wie ich es machen würde. Es geht vielleicht auch eleganter. Bin selber auf Optimierungsvorschläge gespannt …

Adressheft.zip (15.7 KB)

Hallo alle zusammen,

da ich weiter oben sehr allgemein etwas zu diesem Thema gesagt habe, hier jetzt ein ganz konkreter Verbesserungsvorschlag. Er betrifft die LENGTH-Abfrage und den schönen Befehl TRIM.

Bitte schaut euch die von mir gemachten Vorschläge in der anhängenden Datenbank an. Ich habe es in der Reportvorlage kommentiert, daher zunächst so ein überraschendes Erscheinungsbild des Datensatzes. Einfach öffnen, dann seht ihr schon.

Viel Spaß!

Sönke

Adressheft.zip (14.1 KB)

Hallo HeHo.

Hallo Sönke.

Verhindert man so Leerzeilen, sollte für den Leser des Adresshefts dennoch erkennbar sein, ob eine Telefonnummer aus den Datenbankfeldern '/ ’ oder '/ ’ stammt.

Dies trifft insbesondere immer dann zu, wenn nur eine Tefonnummer (mit Vorwahl) im Datensatz erfasst ist.

Es könnte also noch in den Fallunterscheidungen (if … then ist keine Schleife) erklärender Text eingebaut werden. Etwa so:

'Tel.2: ’ + …

Darstellung im Adressheft: Tel.2: 0123/4567

oder

'Tel.geschäftl.: ’ + …

Darstellung im Adressheft: Tel.geschäftl.: 0123/4567

Hallo alle zusammen!

Mein Leerzeilenproblem habe ich leider auf Eis legen müssen. Sehr viel Zeit ist nun vergangen, aber jetzt habe ich einen neuen Versuch gestartet, und nun hat es endlich so funktioniert, wie ich mir das vorgestellt hatte.

Dank eurer Mithilfe wieder was gelernt…

Es lag tatsächlich an der Gestaltung des Reports.

Als ich alle Datenfelder dann “in einer Wurst” (also ohne eine neue Zeile zu beginnen) hingebastelt hatte, waren plötzlich die Leerzeilen weg.

Welch Freude!

Vielen Dank nochmal für Eure zahlreichen und intensiven Bemühungen.