Umsatzstatistiken mit Access erstellen

01.01.2007 von Helma  Spona
Umsätze mit Access zu erfassen, ist eine Kleinigkeit. Schwieriger wird es, wenn Sie Statistiken darüber führen möchten, welchen Umsatz eine bestimmte Artikelgruppe bei verschiedenen Kunden erzielt hat. Gerade für die Gewinnmaximierung bieten solche Statistiken interessante Anhaltspunkte. Anhand einer kleinen Beispielanwendung zur Erfassung von Umsätzen aus Bildlizenzen zeigt dieser Beitrag, wie solche Statistiken realisiert werden.

Verkaufsstatistiken mit Access zu führen, ist nicht das große Problem. Im einfachsten Fall ist es völlig ausreichend, die Anzahl der entsprechenden Artikel, deren Artikelgruppe, den Kunden und das Datum zu speichern. Aus diesen Daten können Sie dann bei feststehenden Preisen den Umsatz bei verschiedenen Kunden, in verschiedenen Artikelgruppen und in verschiedenen Zeiträumen ermitteln.

Es gibt jedoch auch Szenarien, in denen die Schwierigkeit hinzukommt, dass gleiche Artikel zu ganz verschiedenen Preisen verkauft werden. Das ist beispielsweise bei Verkäufen von Lizenzrechten an Bildern der Fall. Hier bekommt der Bildanbieter nicht nur bei verschiedenen Bildagenturen einen unterschiedlichen Anteil, sondern die Bildagenturen haben auch verschiedene Preisstaffelungen für die einzelnen Bildgrößen, verschiedene Lizenz- und Preismodelle.

Zehn Verkäufe bei Agentur A können daher weniger Umsatz bedeuten als ein Verkauf bei Agentur B. In einem solchen Fall reicht es natürlich nicht aus, die Anzahl der Verkäufe zu speichern; Sie müssen auch speichern, zu welchem Preis der Artikel verkauft wurde und gegebenenfalls, was dann an Umsatz bei diesem Verkauf herumkommt. Darüber hinaus müssen gegebenenfalls verschiedene reale Währungen und andere Umrechnungseinheiten berücksichtigt werden. Einige Agenturen arbeiten mit virtuellen Währungen, Credits genannt, die dann beim Umsatz in Euro konvertiert werden müssen, damit ein Vergleich mit anderen Agenturen erst möglich ist.

Aufbau der Beispiellösung

Die Beispiellösung besteht aus drei Tabellen (Bild1). Die Tabelle tabVerkaeufe speichert die Umsatzzahlen. Jede Datenzeile stellt eine verkaufte Lizenz dar. Daher ist auch keine Spalte für die Anzahl erforderlich. Falls Sie diese benötigen, weil auf die Artikel, die Sie statistisch erfassen möchten, häufig auch mehrere Umsätze pro Tag entfallen, können Sie die Spalte problemlos hinzufügen.

Lediglich an den Abfragen für die Ermittlung der statistischen Daten, müssen Sie dann eventuell Änderungen vornehmen. Die Spalte Bildagentur in der Tabelle tabVerkaeufe ist ein Nachschlagefeld, in dem die ID der Bildagentur aus der Tabelle tabBildagenturen gespeichert wird.

Bild 1: Die verwendeten Tabellen.

In den Spalten Verkaufspreis und Einnahmen wird der Umsatz eingetragen. Die Spalte Verkaufpreis enthält den Anteil des Verkaufspreises, die der Bildanbieter in der jeweiligen Währung der Bildagentur erhält. Das Eingabeformular sorgt dann abhängig von der Bildagentur dafür, dass der Preis entsprechend umgerechnet und in die Spalte Einnahmen eingetragen wird. In dieser Spalte befindet sich somit der für die Statistiken relevante, erzielte Verkaufspreis.

Formulare für die Datenerfassung

Für die Datenerfassung gibt es zwei einfache Formulare (Bild 2). Das Formular frmVerkaeufe enthält einen Button, mit dem das Formular frmBildagenturen aufgerufen werden kann, über das die Bildagenturen erfasst werden können.

Bild 2: Die Formulare für die Datenerfassung.

Beide Formulare können Sie als einspaltige Formulare mit dem Formularassistenten erstellen. Auf dem Formular frmVerkaeufe sollten Sie dann noch ein verstecktes Feld txtBA einfügen, in das per Code der Name der Bildagentur eingetragen wird. Die ist notwendig, um den Umsatz für das Bild abhängig vom eingegebenen Preis und der Währung der Bildagentur zu ermitteln.

Das Formular frmVerkaeufe enthält zudem noch Code zum Erzeugen eines neues Datensatzes sowie Ereignisprozeduren, die ausgeführt werden, wenn der Benutzer eine Bildnummer eingibt und den Verkaufspreis eingegeben hat. Den vollständigen Code finden Sie in Listing 1.

Listing 1 - Code für das Formular frmVerkaeufe

Private Sub Bildagentur_Change()
Me.txtBA.Value = Me.Bildagentur.Text
End Sub

Private Sub Bildagentur_Exit(Cancel As Integer)
Me.txtBA.Value = Me.Bildagentur.Text
End Sub

Private Sub Bildnr_Change()
Dim varErg As Variant

If Me.Bildnr.Text = "" Then
Me.Titel.Value = ""
Else
varErg = DLookup("Titel", "tabVerkaeufe", "Bildnr=" & Me.Bildnr.Text)
If Not (IsNull(varErg)) Then
Me.Titel.Value = varErg
Else
Me.Titel.Value = ""
End If
varErg = DLookup("Bildagentur", "tabVerkaeufe", "Bildnr=" & Me.Bildnr.Text)
If Not (IsNull(varErg)) Then
Me.Bildagentur.Value = varErg
Me.txtBA.Value = DLookup("Kuerzel", "tabBildagenturen", "ID=" & varErg)
Else
Me.Bildagentur.Value = ""
End If
varErg = DLookup("Bereich", "tabVerkaeufe", "Bildnr=" & Me.Bildnr.Text)
If Not (IsNull(varErg)) Then
Me.Bereich.Value = varErg
Else
Me.Bereich.Value = ""
End If
End If
End Sub

Private Sub Form_GotFocus()
Me.Bildagentur.Requery
Me.Bereich.Requery
End Sub

Private Sub Verkaufspreis_Exit(Cancel As Integer)
If Me.txtBA.Value = "FOT" Then
Me.Einnahmen.Value = Me.Verkaufspreis.Value * 0.83
ElseIf Me.txtBA.Value = "IP" Then
Me.Einnahmen.Value = (((Me.Verkaufspreis.Value * 0.6) * 2) * 0.4)
Else
Me.Einnahmen.Value = Me.Verkaufspreis.Value
End If
End Sub

Hinweis: Die weiteren Ereignisprozeduren für die Schaltflächen des Formulars, die zum Speichern der Daten sowie zum Duplizieren und Erzeugen eines neuen Datensatzes dienen, können Sie über den Steuerelementassistenten von Access erzeugen, sodass hier der Code nicht aufgeführt wird.

Listing 1 - Erklärung

Die Ereignisprozedur Change für das Listenfeld Bildagentur wird ausgeführt, wenn der Benutzer eine Bildagentur ausgewählt hat. Sie sorgt dafür, dass der Name der Bildagentur in das versteckte Textfeld txtBA eingetragen wird. Gleiches passiert, wenn das Listenfeld verlassen wird und das Exit-Ereignis eintritt.

Wird das Feld Bildnummer verlassen, wird dessen Ereignisprozedur für das Change-Ereignis ausgeführt. Sie dient hier allerdings nur der Bequemlichkeit des Benutzers und prüft, ob die angegebene Nummer schon einmal in die Tabelle eingegeben wurde. Falls ja, wird passend zur Nummer der Titel des Bildes und die Kategorie ermittelt und angezeigt.

Für die statistische Auswertung ist der Code nicht relevant. Gleiches gilt auch für die Ereignisprozedur Form_GotFocus. Sie wird ausgeführt, wenn das Formular den Fokus bekommt. In diesem Fall werden die beiden Listenfelder Bereich und Bildagentur neu gefüllt.

Die wichtigste Ereignisprozedur ist die Prozedur Verkaufspreis_Exit. Sie wird ausgeführt, wenn das Feld Verkaufspreis verlassen wird. Sie berechnet, abhängig von der gewählten Bildagentur, den tatsächlichen Umsatz. Da die Formeln für die Berechnung nicht für alle Bildagenturen gelten und auch von deren Konditionen abhängig sind, müssen Sie die Prozedur individuell anpassen. Alternativ können Sie natürlich auch in der Tabelle tabBildagenturen ein Feld vorsehen, in dem Sie die Formel für die Berechnung speichern.

Der berechnete Umsatz wird dann in das Feld Einnahmen übertragen. Dieses ist deaktiviert, so dass hier keine Eingaben erfolgen können.

Daten für die statistischen Auswertungen ermitteln

Die Daten für die statistischen Auswertungen berechnen Sie mithilfe von Abfragen. Dies soll hier an einem Beispiel gezeigt werden. Es soll eine Statistik erzeugt werden, die die Anzahl und Summe der Verkäufe nach Monat und Bildagentur berechnet.

1. Erstellen Sie zunächst eine leere Abfrage mit den Tabellen tabVerkaeufe und tabBildagenturen, und öffnen Sie sie in der Entwurfsansicht.

2. Fügen Sie in das erste Feld die Formel Datum nach Monaten:Format$(tabVerkaeufe.Datum;'mmmm jjjj') ein, und wählen Sie im Feld Funktion den Eintrag Gruppierung aus. Damit berechnen Sie den Monat, in dem der Verkauf stattgefunden hat, und gruppieren danach.

3. Ziehen Sie das Feld Einnahmen aus der Tabelle tabVerkaeufe in die zweite Spalte, und wählen Sie als Funktion Summe aus. Ergänzen Sie dann vor dem Feldnamen den Text Summe:. Damit berechnen Sie die Summe der Einnahmen innerhalb der Gruppe.

4. In die dritte Spalte geben Sie als Formel Anzahl:Anzahl(*) ein und wählen als Funktion Ausdruck aus. Diese Spalte ermittelt die Anzahl der Verkäufe des Monats.

5. In die vierte Spalte ziehen Sie das Feld Bildagentur aus der Tabelle tabVerkaeufe und wählen als Funktion Gruppierung aus.

6. Ziehen Sie nun die Spalte Agentur aus der Tabelle tabBildagenturen in die fünfte Spalte, und wählen Sie als Funktion Gruppierung aus.

7. Öffnen Sie das Kontextmenü der Abfragen und wählen Sie daraus Eigenschaften. Setzen Sie die Eigenschaft Eindeutige Datensätze auf Ja.

8. Speichern Sie die Abfrage, und führen Sie sie aus. Sie sollte ein Ergebnis wie das in Bild 4 liefern. Pro Monat wird für jede Bildagentur die Summe und die Anzahl Verkäufe berechnet.

Bild 3: Die notwendige Abfrage.

Daten ausschließlich nach Monat berechnen

Bild 4: Die ausgeführte Abfrage.

Natürlich können Sie nicht nur den monatlichen Umsatz für jeden Kunden berechnen, sondern auch den Gesamtumsatz je Monat. In diesem Fall benötigen Sie nur eine Abfrage mit drei Ausgabefeldern. Das erste ist wieder der Monat, nach dem Sie gruppieren. Dazu tragen Sie die Formel Datum nach Monaten:Format$(tabVerkaeufe.Datum;'mmmm jjjj') in die Zeile Feld ein.

Die beiden nächsten Felder berechnen die Summe mit Summe:Einnahmen und die Anzahl Verkäufe mit Anzahl:Anzahl(*). Auch weitere Varianten sind natürlich denkbar, beispielsweise eine Gruppierung nach Kategorie oder nur nach Kunde, ohne den Monat zu berücksichtigen. Mit nur wenigen Änderungen lassen sich damit eine ganze Menge statistischer Auswertungen erzeugen.

Statistiken grafisch darstellen

Nun müssen Sie die Daten nur noch als Grafik darstellen. Dazu können Sie ein Formular erstellen, auf dem Sie ein Diagramm-Objekt platzieren. Sie können natürlich auch, wie nachfolgend beschrieben, den Diagramm-Assistenten verwenden.

1. Aktivieren Sie im Datenbankfenster die Kategorie Formulare, und klicken Sie dort auf Neu.

2. Markieren Sie den Listeneintrag Diagramm-Assistent, und wählen Sie im Pulldown-Listenfeld die erstellte Abfrage aus. Klicken Sie auf OK.

3. Fügen Sie bis auf das Feld Bildagentur alle Felder in das rechte Listenfeld ein, und klicken Sie auf Weiter.

4. Wählen Sie einen geeigneten Diagrammtyp aus, zum Beispiel das 3-D-Säulendiagramm, und klicken Sie erneut auf Weiter.

5. Ordnen Sie nun die Felder so an, wie in Bild 5 dargestellt, und klicken Sie dann auf Weiter.

6. Klicken Sie im nächsten Dialog auf Fertig Stellen.

7. Access zeigt das Formular nun an. Wechseln Sie in die Entwurfsansicht, und ziehen Sie das Diagramm-Objekt auf die gewünschte Größe.

Bild 5: Aufbau des Diagramms.

Das Diagramm ist nun im Groben fertig. Allerdings sollten Sie die Formatierungen und den Diagrammtitel noch anpassen. Wenn Sie den Diagrammtitel ändern möchten, klicken Sie zunächst einmal auf die Diagrammfläche, um das Steuerelement zu markieren. Danach klicken Sie doppelt auf den Titel und geben den gewünschten Titel ein.

Diagramme ohne Assistent erstellen

Möchten Sie ein Diagramm erstellen, ohne dazu den Diagramm-Assistenten zu verwenden, geht natürlich auch das. Sie müssen dazu lediglich ein leeres ungebundenes Formular erstellen und dort ein Diagramm einfügen.

1. Erstellen Sie zunächst über die Schaltfläche Entwurf im Datenbankfenster in der Rubrik Formulare ein neues Formular.

2. Wählen Sie Einfügen/Diagramm aus dem Menü aus.

3. Klicken Sie auf die Formularfläche, halten Sie die Maustaste gedrückt, und ziehen Sie die Maus nach unten rechts, um einen Rahmen in der gewünschten Größe zu ziehen. Lassen Sie dann die Maustaste los. Access startet nun den Assistenten für Diagramme.

4. Wählen Sie nun die Abfrage aus, die dem Diagramm zugrunde liegen soll, und klicken Sie auf Weiter.

5. Fügen Sie bis auf das Feld Bildagentur alle Felder in das rechte Listenfeld ein, und klicken Sie auf Weiter.

6. Wählen Sie einen geeigneten Diagrammtyp aus, und klicken Sie erneut auf Weiter.

7. Ordnen Sie nun die Felder so an, wie in Bild 5 dargestellt, und klicken Sie dann auf Weiter.

8. Klicken Sie im nächsten Dialog auf Fertig Stellen.

9. Access zeigt das Formular nun an. Wenn Sie in die Entwurfsansicht wechseln, können Sie das Diagramm-Objekt auf die gewünschte Größe ziehen.

Bild 6: Mögliche Darstellung der Daten.

Das Ergebnis ist nicht viel anders als das des Diagramm-Assistenten. Der Unterschied besteht nur darin, dass Sie auf diese Weise von vornherein die Möglichkeit haben, die Diagrammgröße zu bestimmen. Bei Bedarf können Sie so auch mehrere Diagramme nebeneinander in das Formular einfügen. Ein mögliches formatiertes Ergebnis zeigt Bild 6. (hs/mha)