Vorgehensweise: Angeben von Farben, die für mehrere Formdiagramme konsistent sind (Berichts-Generator 2.0)

Bei Nicht-Formdiagrammen wird eine neue Farbe anhand des Indexes von Reihen im Diagramm ausgewählt. Beispielsweise wird die erste Reihe im Diagramm der ersten Farbe in der Palette zugeordnet. Formdiagramme weisen jedoch ein anderes Verhalten auf. Bei Formdiagrammen wird jede Farbe in der Palette einem Datenpunkt im Dataset zugeordnet. Beispielsweise wird Datenpunkt 1 der ersten Farbe in der Palette zugeordnet, Datenpunkt 2 wird der zweiten Farbe in der Palette zugeordnet usw.

Wenn ein Datenpunkt keinen Wert aufweist, wird er nicht im Formdiagramm angezeigt. Dies bedeutet, dass dem Datenpunkt keine Farbe zugewiesen wird. Wenn beispielsweise Punkt 2 den Wert 0 (null) aufweist, wird Punkt 1 der ersten Farbe in der Palette und Punkt 3 der zweiten Farbe in der Palette zugeordnet. Dieses Prinzip weist den Vorteil auf, dass für leere Punkte im Dataset eines Kreisdiagramms nicht unnötigerweise eine Palettenfarbe verwendet wird, wenn die leeren Punkte nicht gezeichnet werden müssen.

Als Nebeneffekt werden möglicherweise in einem Bericht, in dem mehrere Kreisdiagramme angezeigt werden, in den Kreisdiagrammen unterschiedliche Farben für Datenpunkte angezeigt, die derselben Kategoriegruppe angehören. Um dieses Problem zu lösen, müssen Sie einzelne Farben definieren, die nicht einzelnen Datenwerten, sondern einer Kategoriegruppe zugeordnet sind.

Die Legende ist mit der Reihe verknüpft. Daher wird jede Farbe, die Sie für die Reihe angeben, automatisch in der Legende angezeigt.

So geben Sie Farben an, die für mehrere Formdiagramme konsistent sind

  1. Klicken Sie mit der rechten Maustaste außerhalb des Hauptteils des Berichts, und wählen Sie Berichtseigenschaften aus.

  2. Geben Sie in Code den folgenden Code in das Textfeld ein.

        Private colorPalette As String() = {"Color1", "Color2", "Color3"}
        Private count As Integer = 0
        Private mapping As New System.Collections.Hashtable()
        Public Function GetColor(ByVal groupingValue As String) As String
            If mapping.ContainsKey(groupingValue) Then
                Return mapping(groupingValue)
            End If
            Dim c As String = colorPalette(count Mod colorPalette.Length)
            count = count + 1
            mapping.Add(groupingValue, c)
            Return c
        End Function
    
    HinweisHinweis

    Sie müssen die Zeichenfolgen "Color1", "Color2" usw. durch eigene Farben ersetzen. Sie können benannte Farben, z. B. "Red", verwenden, oder Sie können einen sechsstelligen Hexadezimalwert verwenden, der die Farbe darstellt, z. B. "#FFFFFF" für Schwarz. Wenn mehr als drei Farben definiert werden, müssen Sie das Array der Farben so erweitern, dass die Anzahl der Farben im Array mit der Anzahl von Punkten im Formdiagramm übereinstimmt. Sie können dem Array neue Farben hinzufügen, indem Sie eine durch Trennzeichen getrennte Liste von Zeichenfolgenwerten angeben, die benannte Farben oder hexadezimale Darstellungen von Farben enthalten.

  3. Klicken Sie auf OK.

  4. Klicken Sie mit der rechten Maustaste auf das Formdiagramm, und wählen Sie Reiheneigenschaften aus.

  5. Klicken Sie in Ausfüllen auf die Schaltfläche Ausdruck (fx), um den Ausdruck für die Eigenschaft Farbe zu bearbeiten.

  6. Geben Sie den folgenden Ausdruck ein, wobei "MyCategoryField" das Feld ist, das in der Kategorieablagezone angezeigt wird:

    =Code.GetColor(Fields!MyCategoryField)