Rechnungsverwaltung: Rechnungen eines Kunden

Das Kundendetailformular zeigt bisher nur die Stammdaten eines Kunden – Name, Anschrift, Kontaktdaten. Was fehlt, ist der Blick auf das Geschäft: Welche Rechnungen hat dieser Kunde eigentlich erhalten? Diese Frage beantworten wir, indem wir dem Formular ein Unterformular hinzufügen, das genau die Rechnungen des gerade angezeigten Kunden auflistet. Das Prinzip dahinter kennen wir bereits aus dem Rechnungsformular – Verknüpfen von und Verknüpfen nach -, nur wenden wir es diesmal auf eine andere Beziehung an. Und ganz nebenbei wird dabei sichtbar, wozu die historisierten Felder aus dem Datenmodell gut sind. Außerdem legen wir von hier aus neue Rechnungen an und öffnen vorhandene zum Bearbeiten. Wie das gelingt, liest Du in diesem Artikel.

Weiterlesen

Rechnungsverwaltung: Das Rechnungsformular

Die Stammdaten stehen – Artikel und Kunden lassen sich bequem erfassen. Jetzt kommt das Herzstück der Anwendung: das Formular, mit dem eine Rechnung entsteht. Es ist das anspruchsvollste der Reihe, denn hier passiert zum ersten Mal etwas, das die Stammdatenformulare nicht kannten – wir rechnen. Ein Hauptformular nimmt Kunde und Datum auf, ein Unterformular die einzelnen Positionen, und ganz unten sollen Nettosumme, Mehrwertsteuer und Bruttobetrag erscheinen. Dabei zeigt sich ein Stolperstein, an dem selbstgebaute Rechnungen reihenweise scheitern. Wie das Rechnungsformular entsteht und wie wir dabei richtig rechnen, liest Du in diesem Artikel.

Weiterlesen

Rechnungsverwaltung: Kundenübersicht und -details

Im vorherigen Artikel haben wir die Artikel mit einem Formularpaar aus Übersicht und Detail ausgestattet. Genau dasselbe brauchen die Kunden – und weil die Struktur identisch ist, geht der Aufbau diesmal deutlich schneller. Wir können uns dafür auf die Stellen konzentrieren, an denen Kunden sich von Artikeln unterscheiden: Sie haben Nachschlagefelder für Anrede und Land, sie können Firmen oder Privatpersonen sein, und beim Löschen ist mehr Vorsicht geboten. Wie das Kundenformular entsteht, liest Du in diesem Artikel.

Weiterlesen

Rechnungsverwaltung: Artikelübersicht und -details

Das Datenmodell steht – jetzt geben wir ihm eine Oberfläche. Wir beginnen mit den Artikeln und bauen dafür ein Gespann aus zwei Formularen, das sich durch die ganze Reihe ziehen wird: eine Übersicht, die alle Artikel auflistet und durchsuchbar macht, und ein Detailformular, das einen einzelnen Artikel zum Bearbeiten anzeigt. Der Reiz liegt im Zusammenspiel der beiden – und in einem kleinen Trick, mit dem das Detailformular der Übersicht mitteilt, ob überhaupt etwas gespeichert wurde. Wie das gelingt, liest Du in diesem Artikel.

Weiterlesen

Rechnungsverwaltung: Das Datenmodell

Mit diesem Artikel beginnen wir eine neue Reihe. Schritt für Schritt bauen wir eine vollständige Rechnungsverwaltung auf – mit Kunden, Artikeln, Rechnungen und Positionen, später mit Formularen zur Eingabe und Berichten für den Ausdruck. Bevor davon irgendetwas entstehen kann, brauchen wir ein tragfähiges Fundament: die Tabellen. Und gerade bei einer Rechnungsverwaltung ist das Fundament kein Nebenschauplatz, denn hier gelten Regeln, die eine einfache Adressverwaltung nicht kennt. Warum wir welche Tabelle, welches Feld und welchen Datentyp wählen – und warum manche Entscheidung anders ausfällt, als man zunächst denkt -, liest Du in diesem Artikel.

Weiterlesen

Tabellen [basics]: Arbeit sparen mit Beschriftungen

Feldnamen wie AnredeID oder EMail sind praktisch beim Entwickeln, aber niemand möchte sie als Spaltenüberschrift in einer Tabelle oder als Bezeichnungsfeld in einem Formular lesen. Meist gewöhnt man sich an, jedes Bezeichnungsfeld von Hand umzubenennen – wieder und wieder, in jedem Formular neu. Dabei gibt es eine Feldeigenschaft, die genau das ein für alle Mal erledigt: die Beschriftung. Wie sie funktioniert, wo sie Dir Arbeit spart und an welcher Stelle sie zur Falle wird, liest Du in diesem Artikel.

Weiterlesen

Tabellen [basics]: Eingabe erforderlich/Leere -Zeichenfolge

Beim Aufbau des Datenmodells sind wir an jedem Textfeld an zwei Eigenschaften vorbeigekommen, die eng zusammenhängen und doch ständig verwechselt werden: Eingabe erforderlich und Leere Zeichenfolge. Die erste kennt fast jeder, die zweite steht meist auf ihrem Standardwert, ohne dass jemand darüber nachdenkt. Dabei entscheiden die beiden gemeinsam, welche Zustände ein Feld überhaupt annehmen darf – und ob eine Rechnungsnummer versehentlich „leer, aber vorhanden“ sein kann. Was die beiden Eigenschaften bedeuten, welche vier Kombinationen es gibt und welche Du in der Rechnungsverwaltung wann wählst, liest Du in diesem Artikel.

Weiterlesen

Formulare [basics]: Steuerelemente korrekt benennen

Wenn wir mit Kunden zusammenarbeiten, schauen wir uns auch immer die Datenbanken einmal genau an. Was uns dabei oft auffällt: Die Benennung von Steuerelementen wird äußerst stiefmütterlich gehandhabt. Das bedeutet, dass diese nach dem Anlegen einfach gar nicht umbenannt werden. Das führt dazu, dass wir in diesen Formularen viele Steuerelemente vorfinden, die einfach Text0, Text1, Befehl2 der Kombinationsfeld43 heißen. Wenn Steuerelement überhaupt einen aussagekräftigen Namen erhalten, handelt es sich um gebundene Felder, die aus der Feldliste ins Formular gezogen wurden. Diese heißen dann immerhin KundeID, Vorname oder Nachname. Dieser Artikel beschreibt, wie man Steuerelemente optimal benennt – und welche Vorteile dies bietet.

Weiterlesen

Berichte [basics]: Wiederholte Werte ausblenden

Im Artikel Berichte [basics]: 1:n-Daten im Bericht ausgeben (www.access-basics.de/****) haben wir Leser und Ausleihen über eine Gruppierung getrennt: der Leser im Gruppenkopf, seine Ausleihen darunter. Manchmal will man aber gar keine Blöcke, sondern eine schlichte Liste – eine Zeile je Ausleihe, den Lesernamen links daneben, so wie man es aus einer Tabellenkalkulation kennt. Nur steht der Name dann in jeder Zeile erneut. Access bietet dafür eine Eigenschaft an, die genau das abstellt – und die tückischer ist, als ihr Name vermuten lässt. Was sie kann, was sie nicht kann und wie Du ihr die entscheidende Schwäche austreibst, liest Du in diesem Artikel.

Weiterlesen

Berichte [basics]: 1:n-Daten im Bericht ausgeben

In Formularen ist die Sache bei unserer Beispieldatenbank „Bücherverwaltung“ klar: Sollen zu jedem Leser seine Ausleihen erscheinen, legen wir ein Hauptformular für die Leser an und setzen ein Unterformular für die Ausleihen hinein. Wer diesen Weg in einen Bericht übertragen will, sucht folgerichtig nach dem Unterbericht – und fährt damit einen Umweg. Berichte lösen das Problem anders, nämlich mit einer einzigen Abfrage und einer Gruppierung. Warum das so ist, wie es Schritt für Schritt gelingt und welche Stolpersteine dabei auf uns warten, liest Du in diesem Artikel.

Weiterlesen