none
Reporting services Grafik UseValueAsLabel=true RRS feed

  • Frage

  • Hallo,

    ich habe eine Grafik, in der mir mit Hilfe des UseValueAsLabel=True Parameters die prozentuale Stückzahl eines Herstellers in einem Monat im Verhältnis zu allen Herstellern angezeigt wird, diesen Wert müsste ich sonst irgendwie mit zusätzlichem Aufwand berechnen. Nun möchte ich aber Werte unter 1 unsichtbar machen, wie kann ich den Value des Labels an dieser Stelle abfragen?

    Gruß, Eckart


    • Bearbeitet Eegi Montag, 17. November 2014 13:39
    Montag, 17. November 2014 13:38

Antworten

  • Hallo Eckart,
    ich habe es bei mir (basierend auf den Beispieldaten von oben) so
    realisiert:
    - Summe Werte: =Sum(Fields!Anzahl.Value)/Sum(Fields!Anzahl.Value,
    "Chart1_CategoryGroup")
    - Kategoriegruppen: =Month(Fields!Datum.Value)
    -
    Reihengruppen: Hersteller
    - UseValueAsLabel: =IIF(Sum(Fields!Anzahl.Value)/Sum(Fields!Anzahl.Value,
    "Chart1_CategoryGroup")> 0.2, true, false)
     
     
     Label beim zweiten Balken fehlt
     
     
    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu
    • Als Antwort markiert Eegi Donnerstag, 20. November 2014 10:16
    Donnerstag, 20. November 2014 08:27

Alle Antworten

  • Hallo  Eckart,

    Du meinst mit Sicherheit ein Diagramm statt Grafik? Bei einem Diagramm kann man je Wertereihe "UseValueAsLabel" definieren, aber nicht je Wert.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Montag, 17. November 2014 14:27
  • Hallo Olaf,

    ja, das meinte ich, Danke für den Hinweis. Es handelt sich um ein Diagramm vom typ Column.

    Gruß, Eckart

    Montag, 17. November 2014 14:31
  • Hallo Eckart, wie wäre es mit einem Ausdruck für UseValueAsLabel:

    = IIF(Fields!Wert.Value>1, True, False)

     Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu

    Dienstag, 18. November 2014 07:41
  • Hallo Christoph,

    Danke für die Antwort.

    Das Problem ist, dass ich gar nicht weiß, welches das Feld für Wert ist. Das Feld Label ist leer, automatisch wird die Anzahl der Datensätze pro Hersteller genommen (der Wert aus Chart Data), dieser wird automatisch ins Verhältnis zu allen Herstellern gesetzt (wie gesagt, ohne, dass ich das extra spezifiziert habe). Das ist auch was ich will, aber dies passiert "magisch" im Hintergrund und wie ich diesen Wert abfragen kann, weiß ich nicht. Kann mir das jemand sagen?

    Gruß, Eckart

    Dienstag, 18. November 2014 12:37
  • Schau mal unter "Data Point" -> "Values" -> "Y" bei den Reiheneigenschaften.

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu

    Dienstag, 18. November 2014 12:43
  • Hallo Christoph,

    Danke noch einmal, aber vielleicht habe ich mein Problem noch nicht deutlich gemacht. Meine Daten sehen in etwa wie folgt aus:

    Hertseller, Anzahl, Datum
    Siemens,5,22.01.2014
    Philips,2,21.01.2014
    Grundig,3,20.01.2014
    Siemens,5,22.02.2014
    Philips,7,21.02.2014
    Grundig,4,20.02.2014

    Mein Balkendiagramm soll mir jetzt pro Monat und Hersteller zeigen, welchen prozentualen Anteil er in diesem Monat  hat, also z.B. hat Grundig im Januar 30%, die Berechnung wäre Anzahl von Grundig im Januar/ Anzahl alle im Januar. Ich möchte dafür aber keine zusätzliche Query erstellen, in einer normalen Matrix ist das auch nicht notwendig, weil ich auf die Summenspalten referenzieren kann. Auch beim Diagramm klappt das, wenn ich UseValueAsLabel auf True stelle, nur dass ich die Label, die kleiner als ein bestimmter Wert sind, nicht ausblenden kann, weil ich nicht weiß, wie ich den Wert abfragen kann. Wenn ich aber den berechneten Wert verwenden möchte, weiß ich nicht, wie ich den Monatssummenwert bekomme, ohne eine neue Abfrage zu erstellen.

    Ich hoffe, ich habe mich verständlich ausgedrückt?

    Gruß, Eckart

    Dienstag, 18. November 2014 14:32
  • Hallo Eckart,
    ich rechne nicht so gerne in den Reports rum, sondern mache dies in der Regel in der Abfrage. Wenn ich also Deine Input-Daten als CTE Rohdaten definiere, würde mein SQL wie folgt aussehen:

    With Rohdaten as
    (
    Select 'Siemens' as Hersteller, 5 as Anzahl, cast('20140122' as Date) as
    Datum
    UNION ALL
    Select 'Philips' as Hersteller, 2 as Anzahl, cast('20140121' as Date) as
    Datum
    UNION ALL
    Select 'Grundig' as Hersteller, 3 as Anzahl, cast('20140120' as Date) as
    Datum
    UNION ALL
    Select 'Siemens' as Hersteller, 5 as Anzahl, cast('20140222' as Date) as
    Datum
    UNION ALL
    Select 'Philips' as Hersteller, 7 as Anzahl, cast('20140221' as Date) as
    Datum
    UNION ALL
    Select 'Grundig' as Hersteller, 4 as Anzahl, cast('20140220' as Date) as
    Datum
    )
    Select Hersteller, Anzahl, Datum, convert(varchar(7), Datum, 120) as Monat,
    100.0 * SUM(Anzahl) Over(Partition by Hersteller, Datepart(Month,
    Datum))/SUM(Anzahl) Over (Partition by Datepart(Month, Datum))    as
    Proz_Hersteller
    from Rohdaten;

    Dann verwende ich im Balkendiagramm:
    - Summe Werte: Proz_Hersteller (ohne irgendwelche Aggregatsfunktionen drum rum)
    - Kategoriegruppen: Monate
    - Reihengruppen: Hersteller
    - UseValueAsLabel: =IIF(Fields!Proz_Hersteller.Value >= 30, true, false)

    HTH!

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu

    Mittwoch, 19. November 2014 08:32
  • Hallo Christoph,

    gerade das möchte ich nicht, die Query verlagern, da ich die Diagramme nur bei Bedarf einblende und ansonsten die Summenwerte nicht benötigen. Daher möchte ich gern die Berechnungen erst in der Grafik ausführen, ansonsten müsste ich die Summierung auf einen Dataset machen, den ich entweder duplizieren müsste (das möchte ich eigentlich vermeiden, da das doppelten Pflegeaufwand bei Änderungen bedeutet), oder ich weiß einfach nicht, wie ich von einem Dataset auf einen anderen referenzieren kann. Geht das?

    Lieber wäre mir, die Berechnung wie in der Matrix in einem Ausdruck unterzubringen.

    Gruß, Eckart

    Mittwoch, 19. November 2014 13:15
  • Hallo Eckart,

    wie ich schon schrieb, mit UseValueAsLabel kannst Du nur für die gesamte Wertereihe die Labels ein-/ausblenden, aber nicht für einzelne Werte in der Reihe.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Mittwoch, 19. November 2014 13:29
  • Hallo Olaf,

    mir geht es auch nicht darum, unbedingt UseValueAsLabel zu verwenden. Ich möchte nur gern ohne eine zusätzliche Query sondern nur mit einem Ausdruck den Wert von Stückzahl/Hersteller zu Stückzahl gesamt bezogen auf einen Monat anzeigen, und wie ich diesen Ausdruck für die gesamtmenge bauen soll, habe ich noch nicht herausgefunden.

    Gruß, Eckart

    Mittwoch, 19. November 2014 13:33
  • Hallo Eckart,
    du kannst Doch eine gemeinsame Query für Matrix und Diagramm verwenden.
    In der Matrix gibst Du halt das Feld mit den Prozentwerten nicht aus.

    Beschreibe doch mal bitte Dein SQL und die Angaben zu
    - Summe Werte
    - Kategoriegruppen
    - Reihengruppen

    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu

    Mittwoch, 19. November 2014 14:42
  • Hallo Christoph,

    Die Query sieht ungefähr so aus:

    select Hersteller, qunantity, productname, orderdate from orderlist where year = 2014

    um nun die Gesamtquantity pro Monat zu berechnen muss ich in irgend einer Form eine zweite query/subquery bauen, die zudem Laufzeit kostet, die ich erst beim Auffalten des Diagrammes verwenden möchte.

    Gruß, Eckart

    Mittwoch, 19. November 2014 15:25
  • Hallo Eckart,
    ich habe es bei mir (basierend auf den Beispieldaten von oben) so
    realisiert:
    - Summe Werte: =Sum(Fields!Anzahl.Value)/Sum(Fields!Anzahl.Value,
    "Chart1_CategoryGroup")
    - Kategoriegruppen: =Month(Fields!Datum.Value)
    -
    Reihengruppen: Hersteller
    - UseValueAsLabel: =IIF(Sum(Fields!Anzahl.Value)/Sum(Fields!Anzahl.Value,
    "Chart1_CategoryGroup")> 0.2, true, false)
     
     
     Label beim zweiten Balken fehlt
     
     
    Einen schönen Tag noch,
    Christoph
    --
    Microsoft SQL Server MVP - http://www.insidesql.org/blogs/cmu
    • Als Antwort markiert Eegi Donnerstag, 20. November 2014 10:16
    Donnerstag, 20. November 2014 08:27
  • Hallo Christopher,

    der Scope war der entscheidende Hinweis!

    Sum(Fields!Anzahl.Value, "Chart1_CategoryGroup") ermittelt mir die Summe, nach der ich die ganze Zeit gesucht habe!

    Herzlichen Dank!!

    Gruß, Eckart

    Donnerstag, 20. November 2014 10:16