Dieser Text entstand 1996 und setzt Access 2.0 voraus. Vielen Dank für Ihre interessante Aufgabenstellung. Ich werde sie sicher bei nächster Gelegenheit in einem Kurs vorstellen, weil sich daran fast alles (Erstellen von Berichten mit Funktionen, Verknüpfungen mit referentieller Integrität, Formulare mit Kombinationsfeldern auf Basis von Abfragen und Berichte mit Gruppierung) lernen läßt.
Ich habe zunächst vier Tabellen erstellt und folgende Beziehungen definiert, alle mit referentieller Integrität. In der Abbildung wird die letzte Linie gerade erstellt und noch nicht angezeigt:
Diese Beziehungen ermöglichen eine Abfrage zur Eingabe der Angebote, bei der die Kürzel sofort nach der Eingabe aufgelöst werden: Artikelnummer -> Mindestbestand, Lieferantennummer -> Lieferantenname, Währung -> Wechselkurs beim Ankauf. Außerdem kann mit berechneten Feldern der Wert des Mindestbestandes =Mindestbestand*Wechselkurs*Einzelpreis angezeigt werden.
Der Assistent macht daraus schnell ein Formular, das ich aber noch überarbeiten würde, etwa durch Einbau von Kombinationsfeldern. Hier habe ich noch die relational ermittelten Felder grau formatiert und "In Reihenfolge" auf "Nein" gesetzt.
Diese Formatierungen (Nicht in Reihenfolge) und Steuerelemente (Kombinationsfelder) erleichtern auch die Eingabe in der tabellarischen Darstellung als Datenblatt:
Nun brauchen wir eine Auswahl aus den Angeboten. Und zwar sollen die Sätze dargestellt werden, bei denen der Gesamtpreis minimal ist. Für jeden Artikel ein Satz. Das leistet diese Abfrage:
Um diese Abfrage zu erstellen, müssen Sie die Zeile Funktionen anzeigen lassen (Ansicht / Funktionen)
Die Anzeige dieser Abfrage zeigt nur eine Zelle, also nur eine Zeile und eine Spalte. Im Schnittpunkt dieser einen Zeile und einen Spalte steht die Summe der Mindestbestandsmindestbeschaffungskosten jedes Artikels
Nicht gefragt, aber trotzdem interessant ist die Überlegung, welcher Anbieter denn das günstigste Angebot abgegeben hat. Ich rate dazu, zwei Abfragen (üblich ist Tabellen) in einer Abfrage zu untersuchen, nämlich die, die die günstigsten Angebote ermittelt und die, die alle Angebote enthält, aber mit zusätzlichen Angaben. Gesucht ist dann der Angebotssatz, dessen berechnetes Feld Mindestbestandskosten gleich dem Minimum von Mindestbestandskosten ist. Leider gibt es diesen Satz nicht, denn die berechneten Felder sind Fließkommazahlen, bei denen genaue Übereinstimmung nicht zu erwarten ist. Ich habe deshalb die Sätze gesucht, bei denen die Mindestbestandskosten vom Minimum der Mindestbestandskosten um höchstens 10 Pf. abweichen:
Sie könnten auch alle Felder auf einmal mit "*" einfügen. Dann wären aber die berechneten Felder nicht über das Eigenschaftenfenster als Festkommazahl oder Währung zu formatieren.
Aus dieser Abfrage können Sie auch einen Bericht generieren lassen (mit dem Assistenten für Gruppierungen). Dann werden alle Zahlenfelder im Berichtsfuß aufsummiert. Das ist für die Artikelnummern und Wechselkurse natürlich Blödsinn, aber bei den Mindestbestandskosten haben Sie genau das gewünscht. Die übrigen Summenfelder entfernen Sie in der Entwurfsansicht:
Die Onlinehilfe schreibt zum "Berechnen einer laufenden Summe":
Eine laufende Summe in einem Bericht berechnen Sie für ein gebundenes Textfeld, wie z.B. "Preis" oder "Gehalt", oder für ein berechnetes Textfeld, wie z.B. =Anzahl([Bestell-Nr]) oder =Summe([Gehalt]). Sie können eine laufende Summe für die Datensätze in jeder Gruppe oder für alle Datensätze in einem Bericht berechnen.
So berechnen Sie laufende Summen
1 | Fügen Sie in der
Entwurfsansicht des Berichts ein gebundenes Textfeld
oder ein berechnetes Textfeld hinzu. Fügen Sie das Textfeld in den Detailbereich ein, um eine Summe für jeweils einen einzelnen Datensatz zu berechnen. Fügen Sie das Textfeld in einen Gruppenkopf oder Gruppenfuß ein, um eine Summe für jeweils eine einzelne Gruppe zu berechnen. |
|
2 | Zeigen Sie das Eigenschaftenfenster für das Textfeld an. | |
3 | Stellen Sie die Eigenschaft "LaufendeSumme" des Textfeldes entsprechend dem gewünschten Typ für die laufende Summe ein. | |
Wert | Ergebnis | |
Über Gruppe | Erstellt eine laufende Summe, die am Anfang jeder höheren Gruppenebene auf 0 zurückgesetzt wird. | |
Über Alles | Erstellt eine laufende Summe, die bis zum Ende des Berichts kumuliert. |
Tip Wenn Sie die Eigenschaft "LaufendeSumme" auf "Über Alles" einstellen, können Sie die Gesamtsumme im Berichtsfuß wiederholen. Erstellen Sie ein Textfeld im Berichtsfuß und legen Sie als Einstellung der Eigenschaft "Steuerelementinhalt" den Namen des Textfeldes fest, das die laufende Summe berechnet.
Ich habe diese Abfragen, Tabellen und den Bericht in die Sammlung von ACCESS-Beispielen eingebaut
Selbstentpackendes Archiv (670646 Byte, Format Access 2.0) Spätere Versionen können nicht alle Elemente der Datenbank benutzen; für dieses Beispiel ist das kein Problem, weil man die Objekte mit "Mindestbestand" im Namen in eine neue Datenbank importieren kann.