Announcement

Collapse
No announcement yet.

Reporting Services - Multi Value

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Reporting Services - Multi Value

    Guten Morgen alle zusammen!

    Ich habe ein sehr grosses problem, betreffend Reporting Services.
    Ich muss mit den Reporting Services verschiedene Statistiken erstellen, von unserem Webshop.
    Nun muss man können verschiedene Monate auszuwählen, und nicht nur 1.
    Wenn ich bei den Parameter Monaten Multi-Value auswähle, und so versuche Statistiken anzuzeigen, kommt der Fehler:

    An error occurred during local report processing.
    An error has occured during report processing.
    The processing of FilterExpression for the chart "char1" cannot be performed. Cannot compare data of types System.Int32 and System.String. Please check the date type returned by the filter Expression.


    Laut diesem fehler, stimmt irgendwas mit den Filtern nicht, nur habe ich dort schon so oft rumgeklickt und versucht alles zu verändern.
    So suche ich hier im Forum die letze Hoffnung...

    Edit:

    Ich habe es schon geschafft, das er einen Report erstellt, aber dann immer mit dem ersten ausgewählten vom Monat. Bsp: Ich wähle Monat 11, 12 aus, dann macht er mir eine statistik mit dem Monat 11.

    Grüsse aus der Schweiz
    Necro

  • #2
    Hallo Necro,

    stimmt irgendwas mit den Filtern nicht
    Wenn man jetzt noch wüsste, wie der Filter aussieht, könnte es man vielleicht beantworten.

    Was ich aber so rausgelesen habe, vermute ich mal folgendes:
    In Deiner Abfrage selektierst Du vermutlich mit

    WHERE Feld = @Parameter

    Bei Multiselekt-Parameter bekommst Du als Komma-Separierte Liste und entsprechend muss Du mit

    WHERE Feld IN @Parameter

    selektieren (ich glaube, Klammern müssen um @Parameter auch noch rum ... ausprobieren)
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Hallo O.Helper
      Danke schonmal für die antwort

      Filter sieht so aus:

      =Fields!Monat.Value = =Parameters!Monat.Value



      Hmm, das mit dere Where abfrage versteh ich nicht ganz, ich versuchs nochmal...

      Gruss

      Comment


      • #4
        das mit dere Where abfrage versteh ich nicht ganz
        Meistens setzt man die Parameter bereits im DataSet ein, z.B.

        SELECT Feld1, Feld2, ...
        FROM Tabelle
        WHERE Feld3 = @Parameter

        Der Parameter wird dann bei der Verarbeitung durch den ausgewählten Wert ersetzt, also z.B. aus
        =Fields!Monat.Value = Parameters!Monat.Value

        wird bei einem Einfach-Paramter dann
        =Fields!Monat.Value = 11

        Bei einem MultiSelect Paramter wurde dann rauskommen:
        =Fields!Monat.Value = 10, 11, 12
        und das geht so nicht, aber so

        =Fields!Monat.Value IN (10, 11, 12)

        Du müsstes es also in
        =Fields!Monat.Value IN (Parameters!Monat.Value)
        abändern, dann sollte es gehen; auch wenn nur ein Wert ausgewählt wurde.
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          Ok, Danke vielmals, sieht und klingt sehr vielversprechend
          Ich meld mich morgen dann nochmal, ob es geklappt hat, und werde es auch mit den "Tagen" und S"tunden pro Tage" versuchen, da ich auch diese auswerten muss.

          Wird dies auch einfach so mit den Tagen funktionieren? Da diese in unseren Tabelenn das Format "MM.TT.JJJJ 00:00:00 AM" trägt...

          Edit:

          OK, das mit den Monaten funktioniert einwandfrei.
          Nun stellt sich das problem mit den Tagen, da ich diese im Dataset mit z.B. "02-09-2008 00:00:00" angeben muss, und diese im Report z.B. "09/02/2008 00:00:00" heissen...
          Und wenn er einfach ein Komma dazwischen macht gibt es ein fehler "Falsche Syntax in der Nähe von ','.
          Zuletzt editiert von Necromancer; 09.12.2008, 09:22.

          Comment


          • #6
            Wenn Du den Parameter mit Datentyp "Datum/Uhrzeit" definiert hast, sollte es kein Problem sein.
            Die Formatierung ist nur eine Sache der Darstellung, die Du in den Eigenschaften der "Textbox" unter "Format" angibst.
            Intern wird es eben als Datumswert gehandhabt und die Parameterwerte entsprechend behandelt.
            Olaf Helper

            <Blog> <Xing>
            * cogito ergo sum * errare humanum est * quote erat demonstrandum *
            Wenn ich denke, ist das ein Fehler und das beweise ich täglich

            Comment


            • #7
              wenn er einfach ein Komma dazwischen macht gibt es ein fehler
              Wie wo Komma? Und "Er" oder Du?
              Wie sieht bei Dir das Auswahlfeld für das MultiSelect-Datum aus?

              Datumswerte sind immer etwas unschön im Handling durch die unterschiedlichen Formatierung. Ich will mal ein kleines Beispiel anhand "Northwind" geben; AdventureWorks habe ich gerade nicht zur Hand.

              1. Datasource auf "Northwind" anlegen und in den erweiterten Eigenschaften bei "Sprache" dann "English" eingeben; warum kommt gleich noch.

              2. Neues Dataset "AllDates" anlegen mit der vorherigen Datasource und dem SQL
              SELECT DISTINCT Orders.OrderDate AS AllOrderDates
              FROM Orders

              3. Neues Dataset "Orders anlegen, dito mit z.B.
              SELECT Orders.OrderDate ,Orders.CustomerID ,Orders.ShipName ,Orders.ShipAddress
              ,Orders.ShipCity ,Orders.ShipRegion
              FROM Orders
              WHERE Orders.OrderDate IN (@MultiDate)
              und daraus einen einfachen Report gestalten.

              In den Eigenschaften des Parameters "MultiDate" gibts Du dann an:
              Datentyp = Datum/Uhrzeit
              Mehrer Werte zulassen = Ja
              Verfügbare Werte: Werte aus Abfrage abrufen und dann das Dataset "AllDates" angeben
              Rest bleibt auf Default.

              So, nun den Report abrufen. Wenn man mehrer Daten auswählt und den Profiler mitlaufen lässt, wird folgendes SQL abgesetzt:

              [highlight=SQL]SELECT Orders.OrderDate ,Orders.CustomerID ,Orders.ShipName
              ,Orders.ShipAddress ,Orders.ShipCity ,Orders.ShipRegion
              FROM
              Orders
              WHERE Orders.OrderDate IN ('07/04/1996 00:00:00','07/05/1996 00:00:00','07/08/1996 00:00:00')[/highlight]

              Du siehst, das Datum wird in englischen Format angegeben, deshalb die Spracheinstellung.
              Ansonsten funktioniert es aber, das Datum im Report wird auch im DE Format angezeigt.

              Übrigens, im Allgemeinen möchte man ja einen Datumsbereich auswerten; ist ungewöhnlich nur ganz bestimmte Tage zu haben.
              Für einen Datumsbereich legt man 2 Eingabefelder "Datum von" und "Datum bis" an.
              Im Dataset selektiert man dann mit

              WHERE Datumsfeld BETWEEN @DatumVon AND @DatumBis
              Olaf Helper

              <Blog> <Xing>
              * cogito ergo sum * errare humanum est * quote erat demonstrandum *
              Wenn ich denke, ist das ein Fehler und das beweise ich täglich

              Comment


              • #8
                JAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAW OOOOOOOOOOOOOOOOHHHHHHLLLLLLLLLLLL


                Habe es nun mit der Von - Bis Abfrage geschafft.
                das ist 1. Einfacher
                und 2. effizienter, und um einiges besser


                Ich danke dir, Olaf, viel mals, herzlichen dank!

                Comment

                Working...
                X