Crystal Reports 2 Felder verbinden mit unterschiedlicher Formatierung

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von toeller.

    Crystal Reports 2 Felder verbinden mit unterschiedlicher Formatierung

    Hallo Zusammen,

    ich habe einen Crystal Reportbericht erstellt und habe dabei die Textfelder Freitext und Freitext2 verbunden. Dabei verwende ich folgenden Formelcode

    VB.NET-Quellcode

    1. dim s, t as string
    2. s = {Rechnungsposition.Freitext}
    3. if Trim({Rechnungsposition.Freitext2}) <> "" then
    4. if Trim(s) <> "" then s = s + chr(13)
    5. s = s + {Rechnungsposition.Freitext2}
    6. end if
    7. formula = s


    Dieser funktioniert auch wunderbar. Jedoch sollte das Freitextfeld immer Fett (also Bold) angedruckt werden und der Freitext2 ohne Fett.

    Ich finde leider keine Lösung dafür und wäre sehr dankbar, wenn mir hierbei jemand behilflich sein könnte.
    Wollte die Felder eigentlich nicht zusammenführen und das Feld Freitext Fett formatieren und das Feld Freitext2 normal lassen.

    Würde funktionieren, aber leider habe ich da das Problem, wenn z.B. bei Freitext nichts eingegeben wird und nur bei Freitext2 ein Eintrag gemacht wird, dass dann beim Ausruck beim Freitext eins ein leeres Feld erscheint.

    Der Ausdruck sollte folgendermaßen aussehen:
    Pos.Nr. Freitext Menge Preis Gesamtpreis
    Freitext2


    Beispiel1: Freitext und Freitext2 haben einträge, dann sollte erst das Feld Freitext und dann das Feld Freitext2 gleich unterhalb stehen. Das geht Problemlos.

    Beispiel2: Freitext hat keinen Eintrag und Freitext2 hat einen Eintrag, dann entsteht beim Ausdruck bei Freitext eine leere Lücke, welche das Problem ist. Wenn also Freitext keinen Eintrag hat, dann sollte Freitext2 an den Platz von Freitext.

    Und wie bereits gesagt, alle Einträge von Freitext müssen immer Fett angedruckt werden.
    das geht mit zugefügten berechneten Spalten "PseudoFreitext" und "PseudoFreitext2":
    PseudoFreitext zeigt normalerweise Freitext, andernfalls Freitext2.
    PseudoFreitext2 zeigt Freitext2 oder leer.

    mögliche BeispielExpression für PseudoFreitext: "iif(Freitext is null, Freitext2, Freitext)"

    entsprechend PseudoFreitext2.


    gugge DataExpressions
    Habe es jetzt mal mit 2 Pseudofelder versucht.
    Hier meine Felder und Formeln:

    FreitextPseudo:

    VB.NET-Quellcode

    1. if isNull({Rechnungsposition.Freitext}) OR ({Rechnungsposition.Freitext}) = "" then {Rechnungsposition.Freitext2} Else {Rechnungsposition.Freitext}

    Freitext2Pseudo:

    VB.NET-Quellcode

    1. if isNull({Rechnungsposition.Freitext}) OR ({Rechnungsposition.Freitext}) = "" then "" Else {Rechnungsposition.Freitext2}


    Funktioniert teilweise. Das Problem ist, wenn in Freitext kein Eintrag gemacht wird und in Freitext2 ein Eintrag gemacht wird, dann steht zwar der Freitext2 an der richtigen stelle, ist aber auch fett angedruckt.

    Es sollte ja so sein, dass die Einträge im Freitextfeld Fett gedruckt werden und die Einträge im Freitext2 nicht fett gedruckt werden sollen.
    Das Tutorial DataExpressions hast du dir nicht angeguckt, oder dich damit beschäftigt, was?
    Weil was du hier machst, ist bestimmt keine berechnete Spalte in einer DataTable.

    Aber vlt. hast du ja auch garkein typisiertes Dataset, und ich hab folglich keinen Schimmer, wie du CrystalReports ühaupt ansteuerst.
    Hast schon recht, steuere Crystal Reports über ein Dataset an.
    Ich bin ja kompletter Neueinsteiger.

    Ich habe im Crystal Report 2 Formelfelder FreitextPseudo und Freitext2Pseudo angelegt.

    Da es auch soweit funktioniert, wäre es eigentlich logisch, wenn man die aktuelle Formel:

    VB.NET-Quellcode

    1. if isNull({Rechnungsposition.Freitext}) OR ({Rechnungsposition.Freitext}) = ""
    2. then {Rechnungsposition.Freitext2}
    3. Else {Rechnungsposition.Freitext}


    In etwa so erweitert

    VB.NET-Quellcode

    1. if isNull({Rechnungsposition.Freitext}) OR ({Rechnungsposition.Freitext}) = ""
    2. then {Rechnungsposition.Freitext2} crREGULAR
    3. Else {Rechnungsposition.Freitext}


    Wäre meiner Meinung nach irgendwie logisch, aber anscheinend geht es doch nicht, weil ich mich bereits die ganze Zeit so rumspiele und bekomme es nicht hin.

    Wenn Freitext ist null oder leer,
    dann Freitext2 und Schriftart (crRegular)
    sonst Freitext.

    Liege ich etwa hier mit meinem Gedanken so falsch?
    rede ich mit 'ner Wand?
    Ich empfehle dir das Tut DataExpressions, und du antwortest mit iwelchem Zeugs, was sicher nix mit dem Tut zu tun hat.
    Ich frage nach, ob du das Tut ühaupt zur Kenntnis genommen hast, und du faselst einfach weiter.
    Die Lösung, die ich sehe, liegt in DataExpressions, und du kannst noch bis Jahresende iwelche Codeschnippel posten ohne Kopf und Fuß - meinem Lösungsvorschlag kommst du damit nicht näher.
    Hab die Bilder jetzt da und habe auch bereits begonnen mich in dieses Thema einzuarbeiten.

    Ich habe im Dataset eine Spalte FreitextPseudo angelegt und dort bei der Expression diesen Code eingefügt.
    iif(Freitext is null, Freitext2, Freitext)

    Funktioniert leider nur teilweise.
    Freitext hat in der Datenbank keinen Wert, es steht aber auch nicht Null in der SQL-Datenbank drinnen.

    Hätte versucht, ein is null or empty irgendwie zu machen, bekomme es aber leider nicht hin.

    Habe eine kleine Anlage angefügt.
    Dateien
    Es sind 2 Textboxen, einmal die Textbox Freitext und einmal die Textbox Freitext2. In Freitext wurde kein Eintrag gemacht, bzw. der Eintrag in Freitext wurde gelöscht und somit ist Freitext in der Datenbank leer.
    Ich glaube ich habs gelöst.
    FreitextPseudo: iif(Freitext = '' Or Freitext is null, Freitext2, Freitext)
    Freitext2Pseudo: iif(Freitext = '' Or Freitext is null, '', Freitext2)

    Im Crystal Report schaffe ich es deswegen auch nicht, dass FreitextPseudo nicht fett gedruckt werden darf, wenn nur freitex2tpseudo einen Wert hat.

    Nochmal kurz mein Ziel:
    Hat FreitextPseudo einen Wert und Freitext2Pseudo einen Wert, dann sollte FreitextPseudo fett gedruckt werden und Freitext2Pseudo darunter nicht Fett (eigentlich kein Problem).
    Wurde nur in der Textbox Freitext2 ein Eintrag gemacht und in der Textbox Freitext1 kein Eintrag gemacht, dann sollte FreitextPseudo nicht fett gedruckt werden.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „toeller“ ()

    Ich habs geschafft. Im Crystal Report im Schriftschnitt des FreitextPseudo Feldes folgende Formel eingeben und es funktioniert.

    // Diese Formel für bedingte Formatierung muss einen der folgenden Werte zurückgeben Konstanten für den Schriftschnitt:
    //
    // crRegular
    // crBold
    // crItalic
    // crBoldItalic
    //
    if isNull({Rechnungsposition.Freitext}) OR ({Rechnungsposition.Freitext}) = "" then crregular else crbold

    Nochmal vielen Dank für den Tip mit den PseudoSpalten im Dataset. Damit habe ich es jetzt hinbekommen.