MS Access und weitere Tipps (... SAP, Excel, VBA ...)

Praxis – SQL-Server Migration für Automobilzulieferer

Ich hatte Frau W. in einem SAP-Personalwirtschaft-Seminar kennengelernt.

Sie rief ca. 1 1/2 Jahre danach an, und hatte ein Access-Problem besonderer Art. Die selbstenwickelte ACCESS-Anwendung aus dem Personalbereich führte bei gleichzeitigem Öffnen durch mehrere Benutzer zum Absturz. Da das Filesystem speziell gesichert war, konnten wir die Ursache leider nich recherchieren.

Frau W. gab uns den Auftrag: Eine Migration von Access zum SQL-Server druchzuführen. Zur Vorbereitung hatten wir sämtliche Tabellen mit Schlüssel-Felder versehen. Erfolgreich eingesetzt haben wir das Microsoft-Tool SSMA „SQL Server Migrations Assistenten“ für Access. Nach der Beseitigung dieser und auch anderer Schwierigkeiten funktioniert die Lösung nun problemlos und sehr stabil.

Unsere wichtigsten Tipps

  1. Machen Sie regelmäßig Sicherungen Ihrer Datenbanken; am besten täglich und automatisch.
  2. Auch immer wieder wichtig ist das „Komprimieren und Reparieren„.
  3. Vor dem Update ist nach dem Update: „Debuggen“, damit entdecken Sie Code-Probleme.
  4. Unerklärliches Teil 1: Manchmal ist es in der Tat „magic“. Jahrelang lief die Anwendung und plötzlich tauchen merkwürdige Laufzeitfehler auf, dann hilft „decompile„.
  5. Unerklärliches Teil 2: Nix geht mehr? Dann hilft das vielleicht: Neue DB anlegen. Alle Elemente wie Tabellen, Formulare etc, in die neuen DB importieren.

VBA Optionen richtig einstellen

Manchmal reagieren VBA-Anwendungen etwas „merkwürdig“ und machen nicht das was sie sollen, zum Beispiel: Änderungen am Quellcode führt Access nicht direkt aus.
Oder: KEINE Fehlermeldung, obwohl ein Fehler da ist.

Ursachen: Das liegt meistens an „falschen“ Einstellungen in der VBA-Entwicklungsumgebung. Shortcut: Nutze Alt+F11 und rufe damit in allen Office-Anwendungen die VBA-Entwicklungsumgebung auf.

Hier ein paar wichtige Tipps dazu:

Im Menü Extras -> Optionen wählen Sie die Registerkarte „Editor“ aus. Kreuzen Sie das Häckchen „Variablendeklaration erforderlich“ an. Hierdurch wird sichergestellt, dass eine Variable vor deren Verwendung auch deklariert werden muss.

Im Menü Extras -> Optionen die Registerkarte „Allgemein“ auswählen, und die Häkchen im Abschnitt „Kompilieren“ (Haken bei „Im Hintergrund“ und „bei Bedarf“) unbedingt rausnehmen. Hierdurch wird sichergestellt, dass beim Kompilieren definitiv auch wirklich alles kompiliert wird, und so alle Änderungen am Code berücksichtigt werden.

Nicht genügend Systemressourcen

Ist ein Primärschlüssel vorhanden?

Manchmal läuft der Speicher voll, manchmal liegt es in der Tat am fehlenden Speicher und die Lösung liegt in der Umgebung. Dann sehen Sie die Meldung „Nicht genügend Systemressourcen vorhanden“.

Bitte prüfen Sie das Tabellendesign:

  • Ist ein Primärschlüssel definiert?
  • Wieviele Datensätze befinden sich in der Tabelle?

Aus unserer Erfahrung zeigt sich häufig, dass keine Primärschlüssel und keine Indizes definiert sind. Bei kleineren Datenmengen fällt das kaum ins Gewicht. Je größer jedoch die Tabellen werden desto langsamer wird das Access. Ohne Primärschlüssel wird es noch schwieriger. Es fehlt das organisierende Merkmal völlig.

Access selbst ist nicht für mehrere Millionen Datensätze ausgelegt, dafür wird es dann einfach zu langsam. Hier empfiehlt sich der MS SQL-Server in der Express-Edition.

TIPP: Bitte auch für temporäre Tabellen Primärschlüssel vergeben.

VBA Variablen richtig deklarieren

Selbst bei so trivialen Dingen wie z.B. die Deklaration der Variablen kann man doch einiges falsch machen, und manchmal „böse“ Überaschungen erleben.

Lassen Sie uns die einzelnen Stufen zusammen anschauen.

Die einfachste Art sieht so aus:

Dim xyz

Hierdurch erhält erhält die Variable xyz den Datetyp Variant. Der Vorteil ist, dass hier alle Arten von Daten (Strings, Zahlen, etc.) gespeichert werden können, ohne einen Typkonflikt zu generieren. Von Nachteil ist jedoch, dass er sehr langsam ist, da VBA anhand der internen Daten in den „richtigen“ Typ umwandelt. Dies kostet entsprechend Ressourcen und Zeit.

Die nächst bessere Methode ist folgende:

Dim Str1, Str2, Str3 as String

Viele meinen, dass hierdurch alle 3 Variablen den Typ String erhalten. Dem ist leider nicht so, nur die Variable Str3 hat den Datentyp String, die anderen beiden den Datentyp Variant.

Die beste Vorgehensweise ist wie folgt:

Dim Str1 as String

Dim Str2 as String

Dim lCount as Long

Dim dDate as Date

Hierdurch erhält jede Variable dediziert ihren Typ, die Zugriffe darauf sind entsprechend flott und sicher.

Komprimieren und Reparieren

In der Tat setzen wir dieses Tool „Komprimieren und Reparieren“  täglich ein, es reduziert die Dateigröße, was die Handhabbarkeit deutlich erhöht. Es werden gelöschte und andere temporäre Datensätze ins digitale Jenseits befördert.

Sie können in den Access-Optionen einstellen, dass beim Schließen der Datenbank automatisch komprimiert und repariert wird, das ist sinnvoll bei größeren Lösch- und Anfügeaktionen, die die Datenbank unnötig aufblähen.

Achtung: Das kann vor allem bei großen Datenmengen über 1 Million Datensätze lange dauern.

Bei unerklärlichen Problemen: „Decompile“

Manchmal gibt es auch unerklärliche Probleme, zum Beispiel werden Formulare nicht mehr geöffnet und keiner kann es sich wirklich erklären.

Komprimieren und reparieren“ hilft leider auch nicht immer, wir haben sehr gute Erfahrungen mit einem kleinen Befehlszusatz gemacht:

Bei Office 2010:
„C:\Program Files (x86)\Microsoft Office\Office14\msaccess.exe“ /decompile „C:\Daten\[DB-Name].accdb“

Tipp: Dafür nutzen Sie am besten eine kleine batch-Datei, dann brauchen Sie das nicht immer wieder neu zu tippen.

Fernsteuerung von SAP mit VBA/VBScript

Viele SAP-Daten landen in Excel oder in Access zur weiteren Auswertungen. Sie können SAP fernsteuern. Wussten Sie das?

Beispiel: Sie brauchen regelmäßig SAP-Daten im Access für eine bestimmte Auswertung.

Lösung:

1. Im SAP können Sie auch wie im Excel Makros aufzeichnen. Diese Makros sind in Wahrheit vb-Script-Anweisungen. Eine Anleitung finden Sie dort.

2. Im Excel- oder Access-VBA-Editor

Menü: Extras -> Verweise -> Durchsuchen

Windows (32 bit):
c:\Program Files\SAP\FrontEnd\SAPgui\sapfewse.ocx

Windows (64 bit):
c:\Program Files (X86)\SAP\FrontEnd\SAPgui\sapfewse.ocx

3. Bitte beachten: Am Anfang des Codes fügen Sie diese Zeile ein:

DIM SAPAuto, Application, Connection, Session, wscript

Technische Tabellen- und Feldnamen im SAP ermitteln

Manchmal braucht man die technischen Tabellen- und Feldnamen im SAP.

Das ist gerade für gewünschte Anpassungen, Support und Reports wichtig.

Wie gehen Sie vor?

  1. Stellen Sie den Cursor in das gewünschte Feld.
  2. Drücken Sie die Taste „F1“.
  3. In der Hilfe oben sehen Sie das Werkzeugsymbol (das vierte Symbol von links), das eingekreist ist, klicken Sie darauf: Sie lesen nun den Tabellen- und den Feldnamen.

So einfach können Sie die gewünschten Informationen ermitteln.

Wir benötigen diese Infos für die Entwicklung von Schnittstellen.

Quellcode / VBA Projekt mit Passwort schützen

Auf der Registerkarte Schutz im Menü Extras -> Eigenschaften von VBA Projekt kann der Quellcode / das Projekt vor Sichtbarkeit und Veänderungen geschützt werden.

ACHTUNG: Dieses Passwort gut merken, da es keinen Weg zum Auslesen gibt.