Home > Artikel > Ausgabe 3/2013 > Balkendiagramme mit Bordmitteln

Balkendiagramme mit Bordmitteln

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Zur Darstellung von Daten mit Balkendiagrammen gibt es verschiedene Varianten. Wenn man beachtet, dass ein Balkendiagramm eine sehr einfache Visualisierung zum Vergleichen von Zahlenwerten ist, sollte man sich fragen, wie man dies mit einfachsten Mitteln hinbekommt. In diesem Fall ist es einfach: Die Länge des Balkens soll ja schlicht und einfach einem Zahlenwert entsprechen. Warum also nicht einfach für jeden Datensatz ein beliebiges Zeichen entsprechend diesem Zahlenwert anzeigen? Wie dies gelingt, zeigt der vorliegende Artikel.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1303_Abfragebalkendiagramm.mdb.

Einfaches Balkendiagramm

Der einfachste Weg, eine Art Balken auf Basis eines Zahlenwertes zu erzeugen, ist die Darstellung eines geeigneten Zeichens wie etwa dem Pipe-Zeichen (|) in entsprechender Anzahl. Dies sieht beispielsweise wie in der Abfrage qryBalkendiagrammEinfach aus Bild 1 aus.

Einfaches Balkendiagramm direkt in der Abfrage

Bild 1: Einfaches Balkendiagramm direkt in der Abfrage

Stellt sich die Frage, wie man die Zeichen in entsprechender Anzahl ausgibt – und die ist leicht zu beantworten, wenn man sich einmal die gängigen VBA-Funktionen angesehen hat. Dort gibt es auch eine Funktion namens String(). Diese erwartet zwei Parameter: die Anzahl der anzuzeigenden Zeichen und das anzuzeigende Zeichen. Sie können diese Funktion ganz einfach im Direktbereich des VBA-Editors testen. Geben Sie dort beispielsweise den folgenden Ausdruck ein, erhalten Sie zehn Mal das Pipe-Zeichen:

  String(10, "|")

||||||||||

Das ist auch schon das komplette Geheimnis hinter der Abfrage qryBalkendiagrammEinfach. Deren Entwurf finden Sie in Bild 2. Das Feld Balken verwendet dabei den folgenden Ausdruck, um den gewünschten Balken auszugeben:

Entwurfsansicht einer Abfrage zur Darstellung eines einfachen Balkendiagramms

Bild 2: Entwurfsansicht einer Abfrage zur Darstellung eines einfachen Balkendiagramms

Test: String([Lagerbestand];"|")

Diese Darstellung sieht allerdings sehr rudimentär aus, sodass wir noch etwas weiterforschen. Eine Verbesserung wäre es etwa, wenn wir tatsächlich einen Balken erhalten, bei dem man nicht die einzelnen Zeichen erkennt. Auch dies ist möglich: Man muss lediglich ein Zeichen finden, dass keine Lücke zwischen zwei Zeichen liefert.

Balkendiagramm mit Sonderzeichen

Nun wollen wir für das Balkendiagramm ein geeigneters Zeichen finden – eines, mit dem sich ein durchgängiger Balken erzeugen lässt. Dazu erstellen Sie für das nächste Beispiel zunächst eine Kopie der Abfrage qryBalkendiagrammEinfach und nennen Sie diese qryBalkendiagrammMitSonderzeichen.

Sonderzeichen finden

Bevor wir uns nun um die Anpassung der Abfrage und um das Formular kümmern, benötigen wir zunächst einmal ein geeignetes Sonderzeichenn in der entsprechenden Schriftart. Wie aber finden wir ein solches Sonderzeichen? Ganz einfach: mithilfe von Word.

Dort gibt es einen Dialog namens Symbol, der alle Zeichen einer Schriftart liefert. Nach einer kleinen Suche findet sich beispielsweise ein Zeichen wie in Bild 3, das sich hervorragend zur Abbildung von Balkendiagrammen eignet.

Sonderzeichen suchen mit Word

Bild 3: Sonderzeichen suchen mit Word

Theoretisch brauchten sich nun nur den ASCII-Code für dieses Zeichen zu merken (hier 2588). Wichtig ist, dass es sich hierbei um ein Unicode-Zeichen handelt.

Dieses sollte sich mit der ChrW()-Funktion (nicht mit der Chr()-Funktion, die liefert nur die Zeichen für Codes von 0 bis 255) ausgeben lassen. Außerdem müssen Sie noch herausfinden, zu welcher Schriftart das Zeichen gehört.

Dies ist aus dem Dialog nicht direkt ersichtlich, sodass Sie das Zeichen am einfachsten einmal in das aktuelle Word-Dokument einfügen und im Ribbon-Bereich Start|Schriftart den Namen der Schriftart ermitteln. Das Zeichen mit dem Code 2588 wird allerdings in allen Schriftarten ähnlich abgebildet.

Nun fügen wir der Abfrage qryBalkendiagrammMitSonderzeichen in der vierten Spalte den folgenden Ausdruck hinzu:

Balken: String([Lagerbestand];ChrW(2588))

Das Ergebnis ist nicht besonders ermutigend (siehe Bild 4) – anscheinend interpretiert Access die Sonderzeichen anders.

Die Abrage liefert das falsche Sonderzeichen

Bild 4: Die Abrage liefert das falsche Sonderzeichen

Also versuchen wir, den Zeichencode auf die harte Tour zu ermitteln: Sie kopieren das Zeichen aus dem Word-Dokument, erstellen in einem leeren Formular in Access ein Bezeichnungsfeld und fügen das kopierte Zeichen aus der Zwischenablage als Beschriftung des Bezeichnungsfeldes ein.

Speichern Sie das Formular unter frmTest und wechseln Sie in die Formularansicht. Aktivieren Sie dann den Direktbereich des VBA-Editors (mit Strg + G) und geben Sie dort den folgenden Befehl ein:

AscW(Forms!frmTest.Controls(0).Caption)

Dieser liefert einen ganz anderen Code für das angegebene Zeichen, nämlich 9608. Nach der Änderung der vierten Spalte des Abfrageentwurfs liefert die Datenblattansicht schließlich das richtige Zeichen (siehe Bild 5).

Mit dem manuell ermitteln Unicode liefert die Abfrage das richtige Zeichen.

Bild 5: Mit dem manuell ermitteln Unicode liefert die Abfrage das richtige Zeichen.

Balken im Formular

Die Anzeige der Balken in der Datenblattansicht der Abfrage ist bereits hilfreich. Allerdings soll der Benutzer ja nicht mit Tabellen oder Abfragen in der Datenblattansicht arbeiten, sondern die Daten in Formularen oder Berichten präsentiert bekommen

Also erstellen wir nun ein Formular, dass die Daten in der Endlosansicht anzeigt.

Legen Sie dazu ein neues Formular in der Entwurfsansicht an und weisen Sie der Eigenschaft Datenherkunft die Abfrage qryBalkendiagrammMitSonderzeichen zu.

Ziehen Sie dann alle Felder der Abfrage aus der Feldliste in den Detailbereich des Formulars (siehe Bild 6).

Ausgangsposition des Formulars in der Endlosansicht

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!