Berichte [basics]: Adressblock zusammenstellen

Auf Rechnungen und Briefen steht die Anschrift in mehreren Zeilen: Firma, Name, Straße, Postleitzahl und Ort, bei Auslandsadressen auch das Land. Nicht jede Adresse hat alle Bestandteile. Privatkunden haben keine Firma, und bei Firmen fehlt manchmal der Ansprechpartner. Legen wir für jede Zeile ein eigenes Textfeld in den Bericht, bleiben ohne weitere Maßnahmen Lücken. Wie Du die Anschrift mit einer einzigen Formel zusammenstellst und fehlende Teile samt Zeilenumbruch weglässt, liest Du in diesem Artikel.

Weiterlesen

Rechnungsverwaltung: Rechnungen als PDF speichern und versenden

Eine gestellte Rechnung soll den Kunden erreichen. Außerdem wollen wir sie als Datei ablegen, die sich nicht versehentlich ändern lässt. Beides leistet eine PDF-Datei. Wie wir den Bericht aus dem letzten Artikel per VBA-Prozedur als PDF-Datei mit der Rechnungsnummer im Dateinamen speichern und eine E-Mail mit dieser Datei als Anhang vorbereiten, liest Du in diesem Artikel.

Weiterlesen

Rechnungsverwaltung: Die Rechnung als Bericht

Die Rechnungen unserer Rechnungsverwaltung existieren bisher nur auf dem Bildschirm. Ein Formular eignet sich zum Erfassen, aber nicht für das Dokument, das der Kunde erhält. Dafür brauchen wir einen Bericht, der die Angaben des Absenders, die Anschrift des Kunden, die Positionen und die Summen je Steuersatz zu einem Rechnungsdokument zusammenstellt. Wie wir die Datensatzquelle dafür aufbauen und den Bericht Schritt für Schritt gestalten, liest Du in diesem Artikel.

Weiterlesen

Formulare [basics]: Anlagefelder anzeigen und -verwalten

Anlagefelder speichern Dateien direkt im Datensatz, in der Bücherverwaltung zum Beispiel das Cover eines Buchs. Damit Benutzer diese Dateien verwenden können, zeigen wir sie im Formular an. Dort sollen sie auch Dateien hinzufügen, entfernen und speichern können. Das Anlagefeld in der Tabelle haben wir im Artikel Tabellen [basics]: Anlagefelder (www.access-basics.de/565) kennengelernt. Wie Du die Anlagen eines Datensatzes in einem Formular anzeigst und verwaltest, liest Du in diesem Artikel.

Weiterlesen

VBA [basics]: Dateien auswählen per Dialog

Soll eine Prozedur eine Datei verarbeiten, benötigt sie deren Pfad. Den Pfad von Hand einzutippen ist umständlich und führt leicht zu Tippfehlern. Komfortabler ist der Dialog, den wir aus anderen Anwendungen kennen: Der Benutzer wählt die Datei aus, und die Prozedur erhält den Pfad. Dafür stellt die Eigenschaft FileDialog des Objekts Application den Dialog bereit. Wie Du den Dialog zur Auswahl von Dateien per VBA-Prozedur anzeigst, anpasst und auswertest, liest Du in diesem Artikel.

Weiterlesen

Rechnungsverwaltung: Die Firmendaten

Eine Rechnung enthält nicht nur Angaben zum Kunden und zu den Positionen. Sie nennt auch den Absender mit Anschrift, die Steuernummer, die Bankverbindung, das Zahlungsziel und einen abschließenden Text. Diese Angaben stehen bisher nirgends in der Datenbank, und das Zahlungsziel von 14 Tagen ist fest im Code eingetragen. Für den Ausdruck der Rechnung, den wir in den folgenden Artikeln aufbauen, brauchen wir sie. Wie wir die Angaben in einer Tabelle mit genau einem Datensatz speichern, in einem Formular pflegen und für das Zahlungsziel verwenden, liest Du in diesem Artikel.

Weiterlesen

VBA [basics]: Datenzugriff mit Recordsets

Eine Prozedur, die Daten einer Tabelle verarbeiten soll, muss diese Daten zuerst lesen können. Danach soll sie vielleicht einzelne Datensätze ändern, neue anlegen oder vorhandene löschen, ohne dass dafür ein Formular geöffnet ist. Dafür verwenden wir in VBA ein Recordset. Das ist die Menge der Datensätze einer Tabelle, einer Abfrage oder einer SQL-Anweisung, die wir über ein Objekt ansprechen. Wie Du ein Recordset öffnest, seine Datensätze durchläufst, einen Datensatz suchst und Datensätze anlegst, änderst und löschst, liest Du in diesem Artikel.

Weiterlesen

Rechnungsverwaltung: Kunden und Artikel sicher -löschen

In den Übersichtsformularen für Kunden und Artikel gibt es seit den ersten Artikeln der Reihe eine Schaltfläche zum Löschen. Solange ein Kunde noch keine Rechnung hat, löscht sie den Kunden. Hat er Rechnungen, bleibt der Kunde stehen, ohne dass die Schaltfläche erklärt, warum. Dass das Löschen scheitert, ist gewollt, die fehlende Rückmeldung nicht. Wie wir vor dem Löschen prüfen, ob zu einem Kunden oder Artikel noch Daten gehören, und wie wir Fehler beim Löschen mit einer Fehlerbehandlung abfangen, liest Du in diesem Artikel.

Weiterlesen

Rechnungsverwaltung: Ansprechpartner zu Kunden verwalten

Bei Privatkunden ist der Kunde zugleich der Ansprechpartner. Bei Firmenkunden haben wir es oft mit mehreren Personen zu tun: der Geschäftsführerin, dem Einkäufer oder jemandem aus der Buchhaltung, der die Rechnungen bearbeitet. Diese Personen wollen wir zu jedem Kunden erfassen und im Kundendetailformular auf einen Blick sehen. Eine von ihnen soll als Hauptansprechpartner markiert sein, aber nur eine. Wie wir Tabelle, Formulare und Schaltflächen dafür anlegen und wie wir die Regel mit dem einen Hauptansprechpartner durchsetzen, liest Du in diesem Artikel.

Weiterlesen

Rechnungsverwaltung: Gestellte Rechnungen sperren und stornieren

Seit dem letzten Artikel erhält eine Rechnung beim Stellen ihre Rechnungsnummer. Damit ist sie noch nicht vor Änderungen geschützt: Öffnen wir sie erneut, können wir Mengen ändern, Positionen löschen und das Datum überschreiben, obwohl die Rechnung bereits beim Kunden liegt. Das widerspricht dem Zweck einer gestellten Rechnung. Außerdem fehlen zwei Aktionen, die eine Rechnungsverwaltung braucht: Eine gestellte Rechnung muss sich stornieren lassen, und ein Entwurf, den niemand mehr braucht, soll sich löschen lassen. Wie wir das Rechnungsformular abhängig vom Status sperren und die beiden Aktionen im Kundendetailformular unterbringen, liest Du in diesem Artikel.

Weiterlesen