none
Berichtsgröße zur Laufzeit einstellbar? (rdlc report) RRS feed

  • Frage

  • Hallo,

    ich möchte verschiedene Etiketten drucken können und in der Oberfläche für den Benutzer sein Etikett ändern können, auch in der Größe. Ich stehe aber erst am Anfang des Programmierens mit Berichten (rdlc) und habe gerade die Parameter kennengelernt. Ich habe keine Lösung gefunden, die Seitengröße per Parameter zu verändern, sondern nur einen Bugeintrag dazu bei MS (http://connect.microsoft.com/VisualStudio/feedback/details/765748/report-rdlc-designer-does-not-let-size-properties-set-from-parameters#tabs)

    Kann man das Problem anders lösen ? Kann Crystal Reports (das was bei VS 2012 dazu installiert werden kann) das besser oder kann man das in den report.rdlc-Dateien zur Laufzeit ändern ? Bevor ich da lange rumprobiere, wollte ich erst mal fragen, ob das jemand weiß, damit ich in der richtigen Richtung rumprobiere

    Danke und Gruß

    Thomas
    vb.net 2012


    Dienstag, 2. April 2013 14:33

Antworten

  • Hi Thomas,
    wenn Du per Code eine große Variabilität der Gestaltung beeinflussen willst, dann solltest Du Dir mal Open XML anschauen. Damit lassen sich beliebige Gestaltungen erreichen. Open XML passt gut zu WPF als Oberflächentechnologie.
     
    --
    Peter Fleischer
    Mittwoch, 3. April 2013 04:27
  • Hallo Thomas,

    zu 1) ich weiss ja nicht, welche Aufgaben Du neben den Etiketten damit lösen willst.

    Kriterium für eine Berichtssoftware sollte sein, wie schnell man die Majorität der Berichte erstellen kann. Probleme sind in Sonderfällen immer zu erwarten.[1]

    zu 2) Ich habe mir den Code nur oberflächlich angesehen. Err manipuliert die Seiteneinstellungen des Druckers über die PrinterSettings bzw. verwendet beim Export die DeviceInfo.

    zu 3)

    Da die Reporting Services nicht nur Drucker sondern für unterschiedlichste Formate (wie Excel, HTML, PDF) unterstützen, ist die Ausgabe (Rendern) ein unabhängiger Schritt.

    Microsoft Access war nebenbei für die Urfassung (RSS 2000) mal die (Feature) Grundlage.

    Mit dem PrintDocument bewegt man sich auf der unteren Ebene - was mehr Programmieraufwand bedeutet. RSS / CR / Access nutzen das auch, nur verstecken es vor dem Anwender.

    Hat man nur wenige Etikettenformate (hoffentlich), so lohnt das nicht unbedingt. Da ist der K(r)ampf mit dem jeweiligen System doch oft kürzer ;)

    Gruß Elmar

    [1] Ich habe in meinem Entwicklerleben (zu) viele "Berichte" programmiert, so dass ich eine heftige Aversion dagegen - und Druckern jeder Art - entwickelt habe... Etiketten gehören nur meinen besonderen Lieblingen - wie z. B. die Freude, sie auf unterschiedliche Drucker (des gleichen Herstellers) anpassen zu müssen, weil die Ränder nicht passen uvm.

    Mittwoch, 3. April 2013 07:35
    Beantworter

Alle Antworten

  • Hallo Thomas,

    Etikettendruck in unterschiedlichen Größen war immer schon eine undankbare Sache.

    Entweder man bastelt man für jedes Format einen eigenen Bericht oder man stüsselt mit den Positionen für die Elemente herum (letzteres geht nur bei "ähnlichen" Formaten).

    Einfacher kann es sein, für solche Fälle auf das konventionelle Drucken über ein PrintDocument in Windows Forms zurückzugreifen. Da muss man zwar auch rechnen, kann aber richtig positionieren und auch Dinge wie Mehrfachdruck, den Anfang bei Teilverbräuchen leichter berücksichtigen.

    Ich kann nur davon abraten die Wahl für die eine oder andere Reporting-Software festzumachen, denn wie von selbst hinkriegen tut das keine[1]. Das sollte man an den "richtigen" Berichten festmachen.

    Gruß Elmar

    [1] Nur eine Fundstelle zu CR: http://www.crystalkeen.com/articles/crystalreports/resizelabelreports.htm

    Dienstag, 2. April 2013 16:40
    Beantworter
  • "Ich kann nur davon abraten die Wahl für die eine oder andere Reporting-Software festzumachen, denn wie von selbst hinkriegen tut das keine[1]. Das sollte man an den "richtigen" Berichten festmachen."

    Hallo Elmar:

    danke für die interessanten Aspekte.

    1) den o.a. Absatz Deiner Antwort verstehe ich nicht. Was ist ein "richtiger" Bericht ?

    Meinst Du damit, ich soll die Entscheidung ob mit CR oder mit RDLC nicht von den Etiketten abhängig machen, sondern von den anderen (großen) Zetteln und Listen, die das System auch noch auspucken soll ?

    2) Ich habe eine Beispiel für eine alte VB.net-Version gefunden. Das Projekt funktioniert perfekt, man kann das Papierformat ändern, die Seitenränder, so wie man sich das vorstellt... Ich nehme an die Textelemente dito. Das müsste meine Anforderungen doch erfüllen.

    http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=6718&lngWId=10

    Aber eben in einer Version vor VS 2010 (da geht das auch nicht). Sobald man das rdlc-Format in das "moderne" umwandelt, ist es vorbei. (die Frage, warum nicth mehr ist wahrscheinlich hier nicht zu beantworten) Macht es Sinn, sich dann mit dem "alten" rdlc im xml-Format weiter zu befassen oder gar neue zu erstellen (geht ja mit dem modernen vb.net nicht) ?

    3) Ich komme von Access, deswegen ging ich davon aus, dass Reports die einzige Druckmöglichkeit ist. Meinst Du, dass für Etiketten das "PrintDocument" das Mittel der Wahl wäre. Kenne ich noch rein gar nicht, müsste ich erst mal ein Tutorial lesen :-)

    Danke und Gruß

    Thomas


    Dienstag, 2. April 2013 20:41
  • Hi Thomas,
    wenn Du per Code eine große Variabilität der Gestaltung beeinflussen willst, dann solltest Du Dir mal Open XML anschauen. Damit lassen sich beliebige Gestaltungen erreichen. Open XML passt gut zu WPF als Oberflächentechnologie.
     
    --
    Peter Fleischer
    Mittwoch, 3. April 2013 04:27
  • Hallo Thomas,

    zu 1) ich weiss ja nicht, welche Aufgaben Du neben den Etiketten damit lösen willst.

    Kriterium für eine Berichtssoftware sollte sein, wie schnell man die Majorität der Berichte erstellen kann. Probleme sind in Sonderfällen immer zu erwarten.[1]

    zu 2) Ich habe mir den Code nur oberflächlich angesehen. Err manipuliert die Seiteneinstellungen des Druckers über die PrinterSettings bzw. verwendet beim Export die DeviceInfo.

    zu 3)

    Da die Reporting Services nicht nur Drucker sondern für unterschiedlichste Formate (wie Excel, HTML, PDF) unterstützen, ist die Ausgabe (Rendern) ein unabhängiger Schritt.

    Microsoft Access war nebenbei für die Urfassung (RSS 2000) mal die (Feature) Grundlage.

    Mit dem PrintDocument bewegt man sich auf der unteren Ebene - was mehr Programmieraufwand bedeutet. RSS / CR / Access nutzen das auch, nur verstecken es vor dem Anwender.

    Hat man nur wenige Etikettenformate (hoffentlich), so lohnt das nicht unbedingt. Da ist der K(r)ampf mit dem jeweiligen System doch oft kürzer ;)

    Gruß Elmar

    [1] Ich habe in meinem Entwicklerleben (zu) viele "Berichte" programmiert, so dass ich eine heftige Aversion dagegen - und Druckern jeder Art - entwickelt habe... Etiketten gehören nur meinen besonderen Lieblingen - wie z. B. die Freude, sie auf unterschiedliche Drucker (des gleichen Herstellers) anpassen zu müssen, weil die Ränder nicht passen uvm.

    Mittwoch, 3. April 2013 07:35
    Beantworter
  • Hallo Elmar,

    danke für die Betrachtungen, das bringt den nötigen Erst-Durchblick.

    Ich wollte eigentlich meine von zwei Kunden sehr gut empfundene Access-Lösung nach vb.net portieren, weil ich dachte, das ganze irgendwie für weitere Interessenten installationsfreundlicher zu machen. Einmal wegen eines besseren Softwareschutzes, zum anderen wegen der Etiketten.

    Ich habe da soviel Zeit gebraucht, ein blödes Etikett vor Ort anzupassen, dass ich da eine für den Benutzer einfachere Lösung haben will. So gesehen Holzweg...

    Ich sehe schon, da muss ich mir mehr Gedanken machen :-(

    Aber das Problem, userseitig konfigurierbare Berichte und insbesondere Etiketten zu haben, wird doch häufig sein, wie ich ja auch aus [1] entnehme (und nachvollziehen kann). Ich dachte, da gibt es bestimmt eine Basislösung irgendwie.

    Zu 2) das Demoprojekt in 2) ist also eine eigene Nutzung des RSS über XML-Einstellungsdateien, so ähnlich könnte man das auch für modernere RDLC machen ?

    Fazit: alles erstmal abschreckend... Für den Anfang werde ich also ein einziges Etiketten Format festlegen, was der normale Etikettendrucker kann. Ich glaube so mache ich das :-)

    Danke und Gruß
    Thomas

    Mittwoch, 3. April 2013 08:00
  • Hallo Peter,

    ich habe mal eben angefangen, dazu zu lesen und das scheint ja was sehr interessantes zu sein. (und zukunftsträchtig) Also ein OfficeOpenXML-Dokument erstellen, mit Daten aus DB füllen und ausdrucken. Sollte ich ausprobieren.

    (Aber schon wieder ein wahrscheinlich ganz großes umfangreiches Thema. Ich wollte doch nur... ;-) )

    Danke und Gruß
    Thomas

    Mittwoch, 3. April 2013 08:25
  • Hi Thomas,
    anstelle Open XML kannst Du auch System.Windows.Documents nehmen. Mir gefällt das besser, da die gesamte Formatierung über Eigenschaften möglich ist anstelle separater Objekte in Open XML.
     
    --
    Peter Fleischer
    Mittwoch, 3. April 2013 08:29