Für manche Themen gibt es keine kurze, prägnante Überschrift. In diesem Fall wollen wir zeigen, wie Sie einen neuen Datensatz anlegen, der in einer temporären Tabelle im Frontend gespeichert wird, bis er fertiggestellt ist. Erst danach soll er in einem Rutsch in die entsprechende Tabelle im Backend kopiert werden. Dadurch wollen wir verhindern, dass die Verbindung unnötig lange offen gehalten wird, was beim Zugriff vieler Benutzer gleichzeitig die Performance beeinflussen kann.
Beispiel vorbereiten
Wir benötigen ein Frontend und ein Backend, wobei wir uns die Arbeit vereinfachen wollen. Also erstellen wir zunächst das Frontend namens NeuerDSFE.accdb (mit FE für Frontend) und fügen dieser eine Tabelle namens tblVorlagen hinzu. Die Tabelle enthält die drei Felder aus Bild 1. Danach schließen wir die Datenbank und kopieren diese, wobei die neue Datenbank den Namen NeuerDSBE.accdb erhalten soll (mit BE für Backend).
Bild 1: Die Tabelle tblVorgaenge in der Entwurfsansicht
Danach ändern wir den Namen der Tabelle tblVorgaenge in tblVorgaengeTemp. Außerdem erstellen wir eine Verknüpfung zur Tabelle tblVorgaenge der neuen Backend-Datenbank. Dazu rufen wir den Ribbon-Befehl Externe Daten|Importieren und Verknüpfen|Neue Datenquelle|Aus Datenbank|Access auf (siehe Bild 2). Die folgenden Schritte sind selbsterklärend: Im Dialog Externe Daten – Access-Datenbank wählen Sie über die Durchsuchen-Schaltfläche die Backend-Datenbank aus und selektieren die Option zum Erstellen einer Verknüpfung.
Bild 2: Hinzufügen einer Verknüpfung
Im danach erscheinenden Dialog Tabellen verknüpfen wählen Sie die Tabelle tblVorgaenge aus und klicken auf OK.
Die Tabelle wird nun verknüpft und erscheint wie in Bild 3 im Navigationsbereich der Frontend-Anwendung.
Bild 3: Die temporäre und die verknüpfte Tabelle
Wenn Sie nun die eingebundene Tabelle tblVorgaenge öffnen und den Windows Explorer dabei beobachten, stellen Sie fest, dass die Backend-Datenbank die ganze Zeit als geöffnet markiert wird. Das erkennen Sie daran, dass neben der Datei mit der Endung .accdb auch noch eine Datei mit der Endung .laccdb erscheint (siehe Bild 4). Damit ist eine Verbindung zu dieser Datei hergestellt, was Vor- und Nachteile haben kann. Wenn das Frontend etwa viel mit dem Backend kommunizieren soll, macht es sogar Sinn, die Verbindung offenzuhalten. Das könnte man beispielsweise erreichen, wenn man beim Starten der Datenbank ein Formular öffnet, das an eine Tabelle des Backends gebunden ist und dieses dann ausblendet. Das Formular ist dann weiterhin geöffnet und hält die Verbindung aufrecht.
Bild 4: Das geöffnete Backend
Im Gegensatz dazu steht die Konstellation, dass viele Benutzer gleichzeitig mit ihrem Frontend auf die Backend-Datenbank zugreifen wollen. In diesem Fall sollte man die Anzahl der Verbindungen zum Backend eher gering halten.
Und hier greift die hier vorgestellte Lösung, bei der wir davon ausgehen, dass die Benutzer nicht längere Zeit mit den Daten der Backend-Datenbank arbeiten, sondern nur Datensätze anlegen und diese im Backend speichern wollen. Normalerweise würde man in einem Formular, das an die Tabelle tblVorgaenge im Backend gebunden ist, einen neuen Datensatz anlegen, die Daten eingeben und den Datensatz dann speichern. Das Problem ist nur: Auch hier wird die Verbindung vom Zeitpunkt des Öffnens des Formulars bis zum Schließen des Formulars aufrechterhalten. Das heißt, wenn der Benutzer seinen Datensatz angelegt hat und das Formular nicht schließt, bleibt die Verbindung bestehen. Das wollen wir verhindern.
Die Lösung: Temporäre Datensätze
Also legen wir eine temporäre Tabelle im Frontend an, was wir ja eingangs bereits gemacht haben, indem wir die Tabelle tblVorgaenge in tblVorgaengeTemp umbenannt haben. Der Tabelle tblVorgaengeTemp fügen wir noch ein weiteres Feld namens InBackendUebertragen hinzu, in dem wir den Zeitpunkt speichern wollen, an dem der Datensatz in die Tabelle tblVorgaenge des Backends übertragen wurde (siehe Bild 5).
Bild 5: Neues Feld in der Tabelle tblVorgaengeTemp
Wir erstellen ein neues Formular namens frmVorgaenge, das wir über die Eigenschaft Datensatzquelle an die Tabelle tblVorgaengeTemp binden. Das Formular sieht in der Entwurfsansicht wie in Bild 6 aus. Es zeigt alle vier Felder der Tabelle tblVorgaengeTemp an, wobei der Benutzer das Feld InBackendUebertragen nicht bearbeiten können soll. Daher stellen wir seine Eigenschaft Aktiviert auf Nein, Gesperrt auf Ja und Rahmen auf Transparent ein.
Bild 6: Das Formular frmVorgaenge in der Entwurfsansicht
Außerdem fügen wir dem Formular eine Schaltfläche namens cmdInBackendUebertragen hinzu, mit der der Benutzer den Datensatz nach dem Bearbeiten zum Backend kopieren kann.
Damit das Formular direkt beim Start einen neuen, leeren Datensatz anzeigt, hinterlegen wir für die Ereigniseigenschaft Beim Laden die folgende Ereignisprozedur:
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo