XRechnung, Teil 1: Rechnungen generieren

XRechnung ist ein Standard für das Einreichen von Rechnungen bei öffentlichen Aufträgen. Sinn und Zweck dieses Standards ist, das Übermitteln von Rechnungsdaten auf eine Weise zu erlauben, dass diese automatisiert eingelesen und verarbeitet werden können. Wie das X in XRechnung vermuten lässt, steckt dahinter ein Austausch der Daten im XML-Format. Die Vorlage für XRechnung liefert die europäische Norm EN 16931. Wie die Daten strukturiert werden müssen, haben wir dem Dokument „Spezifikation XRechnung Standard und Extension“ entnommen, das öffentlich einsehbar ist. Als Grundlage für die Zusammenstellung der XRechnung verwenden wir ein herkömmliches Datenmodell einer Bestell- oder Rechnungsverwaltung. In diesem ersten Teil zeigen wir, wie die Daten aus den Tabellen der Beispieldatenbank in ein XRechnung-kompatibles XML-Dokument umgewandelt werden und wie Sie dieses validieren können.

Weiterlesen

Daten-Updates ausliefern

Wenn Sie eine Anwendung bereitstellen wollen, die bereits Daten enthält und deren Daten sowohl von Ihnen als auch vom Benutzer der Anwendung erweitert werden sollen, müssen Sie einige Dinge beachten. Wir gehen zur Vereinfachung davon aus, dass nur neue Daten hinzukommen und keine vorhandenen Daten geändert werden – das würde die Aufgabe noch schwieriger gestalten. Als Beispiel soll eine Datenbank mit Produkten dienen, die sowohl aus einem Basiskatalog gefüttert werden, der gelegentlich erweitert wird, als auch vom Benutzer der Anwendung. Wie Sie das überhaupt machen, welche Probleme das mit sich bringt und wie Sie diese lösen, zeigen wir in diesem Beitrag.

Weiterlesen

Webcam-Bilder in Datenbank speichern

Die Bilder einer Webcam kann man üblicherweise auf dem Rechner speichern, auf dem man diese erstellt hat. Gegebenenfalls geschieht das auch automatisch – so zum Beispiel mit der Kamera-App von Windows. Ein Leser fragte, ob sich das Aufnehmen von Bildern auch so steuern lässt, dass man die neuen Fotos direkt in einer Datenbank weiterverwenden kann – durch Speichern des Bildes oder des Speicherpfades in der Datenbank und das anschließende Anzeigen des Bildes direkt in einem Formular der Datenbank. Eine direkte Steuerung via VBA haben wir nicht realisiert, aber einen Workaround, der diese Aufgabe ebenso gut erfüllt.

Weiterlesen

SQL Server-Security, Teil 4: Schutz mit Datenbankrollen

In Teil 4 dieser Beitragsreihe wurden die Zugriffsrechte der Anwender auf die Datenbank begrenzt. In der Datenbank jedoch gibt es für die Anwender keine Grenzen. Durch die Zuordnung zur Datenbankrolle db_owner besitzen sie dort administrative Rechte. Dies erlaubt ihnen u.a. das Anlegen und Löschen von Tabellen sowie das Lesen und Ändern aller Daten. Wie Sie die Rechte mit Hilfe der Datenbankrollen weiter eingrenzen, lesen Sie in diesem Beitrag.

Weiterlesen

.accdb läuft, .accde aber nicht

Haben Sie das schon einmal erlebt Sie haben Ihre Anwendung fertig programmiert und alles läuft einwandfrei. Sie müssen nur noch die Kompilierung in eine .accde-Datenbank vornehmen, damit der Kunde keinen Zugriff auf den Quellcode hat. Auch das gelingt ohne Probleme. Kaum starten Sie die .accde-Datenbank, geht jedoch plötzlich nichts mehr: Es funktionieren einfach keine Ereignisprozeduren mehr, und falls vorhanden, meckert auch das Ribbon, dass es seine Callback-Funktionen nicht mehr ausführen kann. Was ist hier geschehen und wie lösen wir das Problem Das zeigen wir in diesem Artikel.

Weiterlesen

Tastenkombinationen mit AutoHotKeys

Access bietet einige Tastenkombinationen, mit denen sich die wichtigsten Aufgaben schnell erledigen lassen. Manche Tastenkombination wurde aber über die Jahre geändert – zum Beispiel können Sie seit einigen Access-Versionen nicht mehr mit der Tastenkombination Strg + Tab zwischen den aktuell geöffneten Access-Objekten wechseln. Stattdessen erledigen Sie diese Aufgabe nun mit der Tastenkombination Strg + F6. Eine Kombination, für nur für Menschen mit halbwegs großen Händen mit einer Hand greifbar ist. Da man während der Entwicklung gern einmal von einem Objekt zum nächsten wechselt und Strg + Tab sehr gut dafür geeignet war, wollen wir diesen Zustand wiederherstellen. Wie das gelingt und warum die Bordmittel von Access dafür nicht ausreichen, zeigt dieser Beitrag.

Weiterlesen

Das AutoKeys-Makro

Makros sind unter Microsoft Access eine stiefmütterlich behandelte Objektart. In der Tat ist die Programmierung einer Datenbank mit VBA wesentlich flexibler und mächtiger. Allerdings gibt es Anwendungszwecke, die sich mit VBA nicht abdecken lassen. Hier kann man auf zwei spezielle Makros zugreifen: Das AutoExec-Makro wird beim Start einer Anwendung aufgerufen und kann zum Anstoßen von Aktionen verwendet werden, die beim Start benötigt werden. Das AutoKeys-Makro nimmt die Definition von Tastenkombinationen auf, die während des Betriebs der jeweiligen Access-Anwendung zur Verfügung stehen. Das letztere Makro schauen wir uns in diesem Beitrag im Detail an.

Weiterlesen

Autowertfelder: Long durch GUID ersetzen

In den meisten Fällen ist die Wahl des Datentyps „Long“ für ein Autowertfeld sinnvoll. Da es die Standardeinstellung ist, denkt man vielleicht gar nicht über alternative Datentypen nach. Manchmal kann es jedoch Vorteile haben, den Datentyp GUID zu wählen. Dann landen keine durchnummerierten Zahlen im Primärschlüsselfeld, sondern Zeichenketten im Format einer GUID. Die Nutzung der GUID ist vor allem dann anzuraten, wenn mehrere Datenbanken parallel existieren, deren Daten gelegentlich zusammengeführt werden. In diesem Fall kann man die Primärschlüsselwerte einfach weiterverwenden und muss sich nicht darum kümmern, dass der gleiche Primärschlüsselwert in mehreren Datenbanken vorkommt und angepasst werden muss.

Weiterlesen

Office 365 updates under control

When you use Office 365, updates come to you automatically. For Access, this also means that even if there are no \“big\“ updates, the system will still be updated as before. The disadvantage, however, is that you usually don’t learn about the new features. This article shows how you can influence whether new versions land on your computer, where you can get information about new features and how you can switch back to the previous version if a new version sometimes contains errors.

Weiterlesen