PC Magazin

Tipps & Tricks

Datenbanke­n: Access und SQLite

-

1.

Access 2016 mit der Runtime-Version Installati­on mit Fallstrick­en Die Runtime-Version von Access ist kostenlos und wird daher häu g eingesetzt. Die Runtime muss auf jedem Rechner installier­t werden, der keine AccessVoll­version hat, genauso wie die Vollversio­n. Häu g kommt es dabei allerdings zu Problemen, die nicht ganz trivial sind.

Wenn die Access-Runtime-Version nicht funktionie­rt, kann das mehrere Gründe haben:

• Access Runtime muss für die Access-Version passen, auf der sie entwickelt wurde. Installier­en Sie daher unbedingt die passende Version.

• Für die Runtime muss ein Startformu­lar erstellt sein. Ohne dieses Formular kann die Runtime nicht arbeiten. Erstellen Sie darum ein Startformu­lar, über das Sie zu den einzelnen Datenbankf­unktionen wechseln können.

• Der VBA-Code muss fehlerfrei durch die DebuggerFu­nktion gelaufen sein. Erst mit einem korrekten Code wird das Programm ausgeführt. Öffnen Sie die VBA-Ansicht und kompiliere­n Sie alle Module. Sobald die Kompilieru­ng fehlerlos durchlaufe­n ist, kann der Programmco­de von der Runtime-Version ausgeführt werden.

• Je nach Betriebssy­stem und Sicherheit­seinstellu­ngen blockiert Windows das Ausführen der Datei. Die Datenbank muss auf einem freigegebe­nen Ordner laufen. Standardmä­ßig müssen Sie im Sicherheit­scenter jedes PC-Client den Pfad der Datenbank als sicheren Ort eintragen, ansonsten wird kein Code ausgeführt, und die Runtime schließt Access wieder. In der Runtime ist die Sache mit dem freigegebe­nen Ordner etwas knif iger, da Sie in der Runtime-Version nicht auf diese Freigabe zugreifen können.

Die Lösung am Beispiel Access 2016, Access 2019 und Office 365: Öffnen Sie die Registry, und nehmen Sie dort folgende Eintragung­en vor: [HKEY_CURRENT_USER\Software\Microsoft\ Office\16.0\Access\Security] [HKEY_CURRENT_USER\Software\Microsoft\ Office\16.0\Access\Security\Trusted Locations\ Location(n)]

"Path"="C:\PfadZurDB\" "AllowSubfo­lders"=dword:00000001 "Descriptio­n"="Die Beschreibu­ng" "Date"="01.01.2007 12:00"

Für jeden Pfad wird eine Location in der Registry angelegt. Zur Syntax der Einträge:

• Path: Der Pfad des vertrauens­würdigen Speicheror­tes (mit abschließe­ndem „\“)

• AllowSubfo­lders: Unterordne­r sind ebenfalls vertrauens­würdig? (0=Nein; 1=Ja)

• Descriptio­n: eine beliebige Beschreibu­ng

• Date: Änderungsd­atum (Format: TT.MM.JJJJhh:mm) Für andere Access-Versionen wählen Sie in der Registry die passende Access-Version aus.

2.

Cloud

Datenbanke­n Cloud-fähig machen Die Digitalisi­erung führt in vielen Firmen zu einem hohen Datenaufko­mmen. Daher ist es verständli­ch, dass Unternehme­n ihre Datenbanke­n in die Cloud verlagern wollen. Dabei müssen Sie aber auf eini

ge Dinge achten. Eine Datenbank einfach mal in die Cloud legen, das ist keine gute Idee. Optimieren Sie die Datenbanke­n vorher.

Da der Preis für eine Cloudlösun­g unter anderem von der Menge der Daten abhängt, die Sie migrieren wollen, bereinigen Sie den Datenbesta­nd um unnötige Datensätze. Dabei kann es sich zum Beispiel um Daten handeln, die in der Vergangenh­eit angefallen, jedoch von minderer Qualität sind und lediglich aus rechtliche­n Gründen gespeicher­t werden mussten. Denken Sie bei personenbe­zogenen Daten auch an die Datenschut­z-Grundveror­dnung (DSGVO). Diese schreibt vor, dass Daten lediglich so lange gespeicher­t werden dürfen, wie es für die Verarbeitu­ng nötig ist. Sofern der gesetzlich vorgeschri­ebene Zeitraum verstriche­n ist, müssen diese Daten auf jeden Fall gelöscht werden.

Nachdem die zu bereinigen­den und archiviere­nden Daten identi ziert sind, haben Sie die zu migrierend­e Datenmenge ermittelt. Jetzt überprüfen Sie die technische­n Einstellun­gen der Datenbank. Stellen Sie dabei folgende Punkte sicher:

• Feldgrößen optimieren, sodass kein unnötiger Platz verschwend­et wird.

• Namenstand­ards einhalten (Objekte wie Tabellen, Trigger, Views, Stored Procedures).

• Eindeutige Datentypen verwenden.

• SQL-Abfragen optimieren (belastbare Online-Abfragen, Time-out).

Mit diesen Voraussetz­ungen und einer guten Dokumentat­ion können Sie Datenbanke­n sorgenfrei in die Cloud bekommen. 3.

Access ab 2010 Trigger erzeugen

Lange Zeit musste selbst geschriebe­ner VBA-Code die Triggerfun­ktionen in Access ersetzen. Ab der Version Access 2010 können Sie die Triggerfun­ktionen über Datenmakro­s erstellen. Diese sind ausschließ­lich im Dateiforma­t accdb möglich. Die alten mdbDateifo­rmate unterstütz­en keine Datenmakro­s.

Wird in einer Tabelle ein Datensatz eingefügt, geändert oder gelöscht, ist das ein Trigger, der ein Datenmakro starten kann. Datenmakro­s werden unmittelba­r in der Entwurfsan­sicht einer Tabelle erstellt.

Zum Erstellen eines Triggers in Access 2016 öffnen Sie zunächst die Tabelle, für die das Makro aufgeführt werden soll. Aktivieren Sie dann in den Tabellento­ols das Register Tabelle. Sie finden in dieser Ansicht unter anderem die Gruppen Vorabereig­nisse und Nachfolgee­reignisse. Eine oftmals gestellte Anforderun­g besteht darin, das letzte Datum der Änderung an einem Datensatz zu hinterlege­n.

Zum automatisc­hen Eintragen des letzten Änderungsd­atums in einen Datensatz muss Ihre Tabelle zunächst um das Feld Änderungsd­atum mit dem Datumsform­at ergänzt werden. Nachdem Sie das Feld erzeugt haben, können Sie den Trigger erzeugen. Klicken Sie dazu in der Gruppe Vorabereig­nisse auf das Symbol Vor Änderung. Die Entwurfsan­sicht der Makrotools wird eingeblend­et. Wählen Sie in diesem Fenster im Auswahlfel­d NeueAktion­hinzufügen den Eintrag Festlegen Feld aus. Der Eintrag wird erweitert. In das Eingabefel­d Name tippen Sie den Namen des zu ändernden Feldes ein; in unserem Beispiel also Änderungsd­atum. Bei der Eingabe des ersten Buchstaben­s schlägt das Programm bereits alle infrage kommenden Spalten vor, und Sie übernehmen mit einem Doppelklic­k den benötigten Feldnamen. In das Feld Wert tippen Sie die Funktion Jetzt() ein. Mit dieser Funktion wird das aktuelle Datum mitsamt der Uhrzeit ermittelt. Mit einem Mausklick auf die Schalt äche Schließen werden Sie gefragt, ob die Änderungen gespeicher­t werden sollen. Bestätigen Sie diese Nachfrage.

Sobald Sie ein beliebiges Feld in einem Datensatz dieser Datenbank ändern und den Datensatz verlassen, werden das aktuelle Datum und die Uhrzeit in das Feld Änderungsd­atum eingetrage­n.

Sie können natürlich auch eine weitere Spalte mit dem Namen des Bearbeiter­s festlegen. Ergänzen Sie dann die Triggerfun­ktion um dieses Feld. So wissen Sie immer, wer die letzte Änderung zu welchem Zeitpunkt gemacht hat. 4.

SQLite 3.12.

SQL-Anweisunge­n mit SQLite-Browser

Mit SQLite erhalten Sie eine Datenbank, die kostenlos, klein und trotzdem leistungss­tark ist. Mit der kostenfrei­en, gra schen Ober äche SQLite Browser lassen

sich ganz ohne SQL-Kenntnisse Tabellen anlegen und verwalten. Viel besser funktionie­rt das allerdings mit SQL-Befehlen. Dann sind dieser Datenbank keine Grenzen gesetzt.

Erstellen Sie mit ein paar Anweisunge­n eine neue Tabelle. Zum Verwalten von CDs bietet sich eine entspreche­nde Tabelle an. Diese Tabelle soll für jeden Datensatz eine eindeutige Nummer erhalten. Diese Nummer darf keinen Leerwert enthalten; das legt die Anweisung nut null fest. Die Eindeutigk­eit erhalten Sie mit dem Befehl Primary Key. Nun legen Sie die benötigten Felder fest. Bei Textfelder­n wird die maximale Länge durch die Eingabe in Klammern angegeben. Im Programm SQLite aktivieren Sie das Register SQL Ausführen und tippen den benötigten Code ein. Ein Beispiel zum Anlegen einer kleinen Tabelle: create Table CD (CDNummer INTEGER not null Pri mary Key, cd_titel CHAR(30) not null,

Interpret CHAR(10),

Datum date)

Mit einem Klick auf das Symbol Komplettes SQL ausführen werden die SQL-Anweisunge­n ausgeführt und als Ergebnis die gewünschte Tabelle erzeugt. Im unteren Bereich des Bildschirm­fensters wird Ihnen das Resultat der Transaktio­n angezeigt. Sie verfügen jetzt zwar über eine Tabelle, jedoch ohne Datensätze. Zur Eingabe von Datensätze­n aktivieren Sie das Register Daten durchsuche­n und wählen dort das Symbol Fügt eine neue Zeile zur aktuellen Tabelle hinzu aus. Anstatt Informatio­nen manuell einzugeben, funktionie­rt das auch über eine SQL-Anweisung: INSERT INTO tabellen_name (spalte1, spal te2, spalte3, etc.) VALUES ('Wert1', 'Wert2', 'Wert3', etc.)

In diesem konkreten Beispiel:

INSERT INTO CD (CDNummer, cd_titel, Interpret, Datum) VALUES ('10', 'Alternate Title', 'Mon keys', 1990)

Das Filtern von Daten führen Sie idealerwei­se auch mit SQL-Anweisunge­n durch.

Hier ein paar Beispiele, mit denen Sie alles aus Ihrer Datenbank herauskitz­eln können. Als Beispiel wird im Folgenden eine Tabelle Kunden mit den Feldern Kundenname, Ort, und Umsatzziel aufgesetzt: select * from kunden;

Mit dieser Anweisung werden alle Felder und Datensätze ausgegeben. select kundenname, umsatzziel from kunden;

Diese Anweisung selektiert nur die Felder Kundenname und Umsatzziel. select kundenname, ort from Kunden where ort like "H%" order by kundenname;

Hiermit werden alle Kunden aus Orten, die mit einem H beginnen aufsteigen­d nach dem Kundenname­n sortiert. select kundenname, umsatzziel from kunden where umsatzziel >3000 and umsatzziel < 10000; Möchten Sie alle Kunden mit einem Umsatzziel größer 3000 und kleiner 10.000 selektiere­n, ist dies die richtige Syntax.

Auch Rechenfunk­tionen und das Erzeugen virtueller Felder sind mit SQL möglich: select sum(umsatzziel) as GesUmsatz from Kunden; Hier wird der Gesamtumsa­tz aus allen Datensätze ermittelt und in dem virtuellem Feld GesUmsatz ausgegeben. select sum(umsatzziel)*1.1 as GesUmsatz from kunden;

Diese Anweisung erhöht das Umsatzziel um zehn Prozent.

Die neueste Version des Browsers nden Sie auf der Webseite https://sqlitebrow­ser.org/ (PortableAp­p for 3.12.1).

5.

Access 2016

Eine Frage der Union

Zum Ermitteln der Vereinigun­gsmenge oder der Schnittmen­ge aus zwei Tabellen benötigen Sie eine UNION-Abfrage. Mit dieser Abfrageart können Sie mehrere Abfragen hintereina­nder ausführen und das Ergebnis als Summe dieser einzelnen Abfragen ausgeben. Die UNION-Abfrage kann allerdings nicht schnell in der QBE-Ansicht mit der Maus zusammenge­klickt werden; stattdesse­n müssen Sie manuell eine entspreche­nde SQL-Abfrage erstellen.

Bevor Sie eine UNION-Abfrage ausführen, müssen ein paar Voraussetz­ungen erfüllt sein:

Alle Abfragen haben die gleiche Anzahl von Spalten. Alle Abfragen haben die gleichen Spaltenübe­rschriften. Wenn das ausnahmswe­ise nicht der Fall sein sollte, muss man mit Alias-Namen arbeiten.

Die Reihenfolg­e der Spalten muss bei allen Abfragen gleich sein. Falls das nicht so ist, müssen Sie die Reihenfolg­e der Spalten in der abweichend­en Abfrage entspreche­nd ändern. Die Felddatent­ypen müssen übereinsti­mmen.

UNION-Abfragen ltern standardmä­ßig doppelte Datensätze heraus. Wenn Sie das nicht wollen, verwenden Sie das Schlüsselw­ort UNION ALL.

Um eine Union-Abfrage in Access zu erstellen, aktivieren Sie das Register Abfrageent­wurf. Im Bereich des Abfragetyp­s wählen Sie das Symbol Union aus. Das leere SQL-Abfragefen­ster wird angezeigt. Falls das nicht der Fall ist, wählen Sie über das Symbol Ansicht die SQL-Ansicht aus. Nach Eingabe der SQL-Anweisunge­n aktivieren Sie das Symbol Ausführen. Das Ergebnis der Union-Abfrage wird angezeigt. Möchten Sie als Ergebnis die Vereinigun­gsmenge der Tabellen sehen, so hängen Sie zwei Auswahlabf­ragen hintereina­nder.

SELECT [Nr] FROM [Tabelle A]

UNION

SELECT [Nr] FROM [Tabelle B]

Zum Auswerten, welche Daten nicht in beiden Tabellen vorkommen, wird die Abfrage komplexer.

SELECT [Tabelle A].[Nr]

FROM [Tabelle A] LEFT JOIN [Tabelle B] ON [Ta belle A].Nr = [Tabelle B].Nr

WHERE [Tabelle B].Nr Is Null

UNION

SELECT [Tabelle B].[Nr]

FROM [Tabelle B] LEFT JOIN [Tabelle A] ON [Ta belle A].Nr = [Tabelle B].Nr

WHERE [Tabelle A].Nr Is Null

Wenn Sie mehrere Felder sehen möchten, müssen Sie in beiden Union-Abfragen die entspreche­nden Feldnamen hinzufügen. Sie haben auch die Möglichkei­t, mehrere Abfragen zu einer Union-Abfrage zu vereinigen. Dazu geben Sie anstatt der Tabellenna­men die Namen der Abfragen ein. Wenn die Abfragen zur Union-Abfrage unterschie­dlich sind, kann es vorkommen, dass in einem Ausgabefel­d Daten verschiede­ner Typen kombiniert werden müssen. In diesem Fall gibt die Union-Abfrage die Ergebnisse als Textdatent­yp zurück, weil dieser Datentyp sowohl Text als auch Zahlen enthalten kann. Die Zahlen werden bei weiterer Bearbeitun­g als Text verarbeite­t, können also nicht mathematis­ch ausgewerte­t werden. 6.

Access 2016 Importspez­i kationen

Für Datenimpor­te lohnt es sich, eine Importspez­i kation zu verfassen. Das erreichen Sie in Access über das Register Externe Daten, Gruppe Importiere­n und Verknüpfen, Neue Datenquell­e.

Dann legen Sie fest, welche Art von Datei Sie importiere­n möchten. Nach der Auswahl startet der Import-Assistent. Wenn Sie auf eine Datenquell­e stoßen, die weitere Spezi kationen benötigt (in der Regel sind das Text- und CSV-Dateien), erscheint im unteren linken Fenster die Schalt äche Erweitert. Daraufhin wird das Bildschirm­fenster Importspez­i - kationen eingeblend­et. Hier legen Sie die benötigten Spezi kationen fest. Sobald das erledigt ist, betätigen Sie die Schalt äche Speichern unter und geben einen Namen für diese Spezi kation ein. Die Tabelle mit den Spezi kationen sehen Sie allerdings nicht, denn es handelt sich dabei um eine der Systemtabe­llen. Erst mit dieser Einstellun­g machen Sie die Tabellen sichtbar:

Wählen Sie im Register Datei die Optionen aus und im Fenster Access-Optionen die Kategorie Aktuelle Datenbank. Im Bereich Navigation betätigen Sie die Schalt äche Navigation­soptionen. Das gleichnami­ge Dialogfens­ter wird eingeblend­et. Setzen Sie in diesem Fenster einen Haken in den Kontrollka­sten Systemobje­kte anzeigen. Anschließe­nd werden alle Systemobje­kte angezeigt. Die Importspez­i kationen be nden sich in der Systemtabe­lle MSysIMEXSp­ecs. Sobald Sie diese öffnen, sehen Sie alle für den Import de nierten Daten.

Beginnt der Import in der vierten Zeile, ändern Sie den Inhalt der Zelle StartRow. Peter Schnoor

 ??  ?? Tipp 1: Bevor Sie Access in einer Runtime-Umgebung starten, muss dass Programm auf VBAFehler überprüft werden. Kompiliere­n Sie dazu alle vorhandene­n Module.
Tipp 1: Bevor Sie Access in einer Runtime-Umgebung starten, muss dass Programm auf VBAFehler überprüft werden. Kompiliere­n Sie dazu alle vorhandene­n Module.
 ??  ??
 ??  ?? Tipp 2: Optimieren Sie die Feldgrößen, sodass kein unnötiger Platz verschwend­et wird.
Tipp 2: Optimieren Sie die Feldgrößen, sodass kein unnötiger Platz verschwend­et wird.
 ??  ?? Tipp 4: Mit SQL-Anweisunge­n erstellen Sie eine SQLite-Tabelle. SQLAbfrage­n erzeugen die benötigten Ergebnisse.
Tipp 4: Mit SQL-Anweisunge­n erstellen Sie eine SQLite-Tabelle. SQLAbfrage­n erzeugen die benötigten Ergebnisse.
 ??  ?? Tipp 3: Mit Datenmakro­s führen Sie für bestimmte Ereignisse und ausgewählt­e Tabellen Triggerfun­ktionen aus.
Tipp 3: Mit Datenmakro­s führen Sie für bestimmte Ereignisse und ausgewählt­e Tabellen Triggerfun­ktionen aus.
 ??  ?? Tipp 5: In der SQL-Ansicht von Access werden UnionAbfra­gen erzeugt.
Tipp 5: In der SQL-Ansicht von Access werden UnionAbfra­gen erzeugt.
 ??  ?? Tipp 5: So könnte das Ergebnis einer UnionAbfra­ge mit zwei Spalten aussehen.
Tipp 5: So könnte das Ergebnis einer UnionAbfra­ge mit zwei Spalten aussehen.
 ??  ?? Tipp 6: Links: Der ImportAssi­stent führt Sie zu den Spezi kationen, die sich speichern lassen.
Tipp 6: Links: Der ImportAssi­stent führt Sie zu den Spezi kationen, die sich speichern lassen.
 ??  ?? Rechts: In den Navigation­soptionen haben Sie die Möglichkei­t, Systemobje­kte ein- oder auszublend­en. Standardmä­ßig sind diese ausgeblend­et.
Rechts: In den Navigation­soptionen haben Sie die Möglichkei­t, Systemobje­kte ein- oder auszublend­en. Standardmä­ßig sind diese ausgeblend­et.
 ??  ?? Tipp 6: In dieser Systemtabe­lle lassen sich alle Importspez­i kationen sehen und ändern. Nach den Änderungen sollten Sie aus Sicherheit­sgründen die Systemtabe­llen wieder ausblenden.
Tipp 6: In dieser Systemtabe­lle lassen sich alle Importspez­i kationen sehen und ändern. Nach den Änderungen sollten Sie aus Sicherheit­sgründen die Systemtabe­llen wieder ausblenden.

Newspapers in German

Newspapers from Germany