Access: Clevere Endlosformulare

Das Datenmodell und die Formulare

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Machen Sie sich mit der von Lorenz Hölscher vorbereiteten Beispieldatenbank vertraut. Sie enthält bereits ein einfaches Datenmodell sowie einige Tabellen und Abfragen.

Transkript

Ich habe in der Datenbank schon einiges vorbereitet, damit so die ganzen Fleißarbeiten schon mal wegfallen können und will Ihnen bei der Gelegenheit erstmal vorstellen, wie das Datenmodell eigentlich aussieht. Also, hier bei den "Beziehungen" ist zu sehen, das Ganze ist ein Online-Shop, bei dem man z. B. vorbereitete Kartons kaufen kann. Und diese Kartons gibt es in verschiedenen Varianten. Also bei den Artikeln hier sehe ich, es gibt kleine, mittlere und große Kartons, die werden geklebt. Und es gibt sog. Stülp-Kartons, die werden nur gefaltet, wenn man sie braucht. Und außerdem kann man dort auch Aufkleber kriegen. Und einige von diesen Artikeln werden geklebt, andere eben nicht. Und das wird zu berücksichtigen sein, weil es nämlich hier jeweils ein Datum gibt, je nachdem, wann die hergestellt werden. Tatsächlich steht da eine Uhrzeit drin, kann man sehen. Der Karton ist schon bedruckt worden mit dem, was der Kunde braucht, der ist schon geklebt worden und der ist schon geliefert worden. Und das ist das, was die Schaltflächen später regeln sollen. Wenn dieser Karton hergestellt wird, drückt man da ein Knöpfchen und dann wird genau diese eine Position mit dem Artikel dazu als "Bedruckt" mit dem Datum und Uhrzeit gekennzeichnet. Und hier ist so das Übliche, was man bei Bestellungen hat, eine zusammenfassende ID für die Bestellung. Das ist also relativ lieblos hier. Es gibt einen Empfänger, der hier sogar wirklich zu Fuß eingetragen ist, und ein Bestelldatum. Das ist wirklich so das allerminimalste, was man für eine Bestellung speichern kann. Die braucht eigentlich hier nur eine ID, damit die Positionen hier zusammengefasst werden können. Also, eine Bestellung hat "n" Positionen, hier mit dem Fremdschlüssel von der Position auf die Bestell-ID eine Referenz. Und die Position weiß außerdem, welcher Artikel gerade gebraucht wird und könnte dort nachgucken, ob dieser Artikel geklebt werden muss. Denn dann ist natürlich die Schaltfläche wichtig. Wenn er nicht geklebt wird, darf die Schaltfläche gar nicht existieren. Diese drei Datum-Uhrzeit-Werte sind das, was die Schaltflächen dann per Knopfdruck füllen müssen mit dem jeweiligen Datum bzw. der Uhrzeit. Zusätzlich gibt es noch eine Bemerkung. Wir können ja eben in die Positionen ja mal reinschauen. Da steht nichts besonders Originelles drin. Sie sehen einige der Werte sind auch schon völlig zufällig ausgefüllt. Und hier ist schon zu sehen, die Fremdschlüssel sind übersetzt sozusagen. Da ist eine Combo-Box, ein Kombinationsfeld, dahinter, dass die Artikel hier ausgewählt werden können. Das sieht einfach nur schöner aus. Das Gleiche auch für den Kunden hier allerdings noch mit der ID drin. Das ist in den Tabellen ja alles unerheblich. Wenn ich Ihnen jetzt die Formulare dazu zeige, z. B. das Hauptformular für die Bestellungen, dann sehen Sie, da ist überhaupt nichts Originelles drin. Das hätte ich auch mit dem Assistenten machen können, ein kleines Logo, eine Überschrift und hier die drei Felder je Datensatz. Im Entwurf können Sie sehen, dass es ganz normal, ohne irgendwelche besonderen Eigenschaften, ich könnte dieses hier noch anständigerweise deaktivieren, sodass man nicht auf die Idee kommt, da etwas zu ändern. Das Bestelldatum wird jetzt zu Fuß eingetragen. Oder wenn Sie wollen, können Sie das auch mit einem Standardwert machen. Das ist alles unerheblich. Ich kann also an dieser Stelle ein ganz normales Formular machen. Das muss ich jetzt einmal speichern. Und bei den Positionen, da ist es ein klein bisschen hübscher sozusagen, da sind jetzt die Bestellungen auswählbar und die Artikel. Und damit das gut aussieht, gibt es hier zwei Abfragen, die jeweils das sortiert anzeigen. Also, Query "ArtikelSortiert", steckt hier hinter, macht nichts anderes als im Entwurf der Abfrage zu sehen, den Artikelnamen aufsteigend zu sortieren und die ID zurückzugeben. Also, eine wirklich langweilige Abfrage. Und die mit den Bestellungen sortiert, die macht es ein klein bisschen netter, weil sie hier den Text zusammensetzt, also den Namen des Empfängers und das Datum, denn der gleiche Empfänger hat hier, z. B. da und dort, mehrfach bestellt. In irgendeiner Form muss ich diese Bestellungen unterscheiden können. Aber das ist hier wirklich nur das minimalste, um die Daten geht es eigentlich gar nicht richtig. Dann möchte ich, dass aus diesen beiden Formularen eine Haupt- und Unterformular-Konstruktion wird, d. h. Sie sehen im Moment, es ist ein Unterformular mit Referenzen, Fremdschlüsseln, auf eine Bestellung. Und wenn ich jetzt den Entwurf des Hauptformulars nehme und den Namen des Unterformulars hier reinziehe, ungefähr dahin, dann kann ich hier dieses kleine Textfeld schon mal löschen, das brauche ich nicht. Dann sind diese beiden Formulare mit ein bisschen Glück schon verbunden. Das müssen wir mal eben kontrollieren, sieht gut aus. Der Primärschlüssel hier, Bestell-ID, ist verknüpft mit dem Fremdschlüssel in dem Unterformular für die Positionen. Und wenn ich mir das jetzt angucke, ist es noch nicht wirklich perfekt, weil noch sehr klein, aber schon funktionsfähig. Ich sehe jetzt hier für Willi Wichtig schon zwei Positionen. Wenn ich weiter schalte, sehe ich für Maria Machmit, die hat nur noch eine Position. Die Synchronisation funktioniert also. Die Größe könnte noch schöner sein. Also, im Entwurf werde ich für das hier so schon markierte Formular beim Anordnen den Anker auf "Nach unten und quer dehnen" stellen. Das bedeutet, er nimmt sich so viel Platz, dass diese Lücke noch übrig bleibt und die rechts, die mir aber zu groß ist, dort werde ich jetzt also dafür sorgen, dass dieser Restabstand übrig bleibt. Und Sie sehen jetzt bei Start, dass es jetzt diesen maximalen Abstand einnimmt. Dann gibt es noch eine Kleinigkeit zu verbessern. Diese zweite Titelzeile hier, die ist eigentlich überflüssig, wenn es ein Unterformular ist. Ich werde also in den Entwurf des Hauptformulars wechseln und dort beim Anzeigen, also, wenn der erste Datensatz auf den Bildschirm kommt, das Ereignis beim Anzeigen setzen. Und das macht nichts anderes als hier den Formularkopf zu verstecken. Den brauche ich nicht, das ist alles selbsterklärend. Das ist am einfachsten. Dabei gehen mir natürlich auch hier die Titel verloren, aber das ist jetzt die schnellste Variante. Denn dieses Positionen-Formular will ich woanders vielleicht mit dem Titel haben. Also, hier das Ereignis beim Anzeigen, oder im Englischen "FormCurrent". Und dann muss ich noch nachgucken, wie denn das Formular hier heißt, und zwar der Name hier oben, der ist nicht ganz glücklich. Ich werde es "sfmPositionen" nennen, mein Unterformular, Subform. Und dann kann ich wieder mit Alt+F11 zurückwechseln und jetzt einzeln beschreiben. "Me.sfmPositionen", das ist das ganze Control, Punkt, da drin das "Formular". Und da muss ich im Blindflug sozusagen weiter programmieren, dessen "Formularkopf". So weiß ich, dass das Element heißt. Das zeigt mir nur Intellisense nicht mehr an. Und da drin gibt es eine "visible"-Eigenschaft und diese setze ich auf "false". Das war schon alles beim Anzeigen des Datensatzes. Tatsächlich sogar beim Anzeigen jedes Datensatzes wird das unsichtbar gemacht. Das ist ein bisschen viel des Guten, macht aber nichts. Alt+F11 wieder zurück. Und jetzt sehen Sie, obwohl es im Entwurf noch da ist, sobald ich das Formular zeige, sind hier nur noch die eigentlichen Daten zu sehen. Das ist vor allem praktisch, wenn Sie wenig Platz haben. Mit, ich sage mal, 5-7 Zeilen mehr Programmierung könnten Sie auch die Überschriften da oben noch erhalten, aber das ist ja nicht das eigentliche Thema. Ich habe jetzt also ein Hauptformular für eine Bestellung, ein Unterformular für die jeweiligen Inhalte. Und hier wird die eigentliche Arbeit stattfinden. Dort brauche ich die Schaltflächen, die dann hier jeweils die Daten mit Inhalten füllen.

Access: Clevere Endlosformulare

Entwerfen Sie Endlosformulare in Access, bei denen die Schaltflächen je nach Inhalt des Datensatzes unterschiedlich sind.

1 Std. 3 min (13 Videos)
Derzeit sind keine Feedbacks vorhanden...
Hersteller:
Exklusiv für Abo-Kunden
Erscheinungsdatum:25.01.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!