Tipps und Tricks 4/2009

Die Tipps-und-Tricks-Sammlung von Access im Unternehmen wird diesmal um das Verknüpfen von Tabellen per Code erweitert. Außerdem zeigen wir Ihnen, wie Sie Ereignisprozeduren vom Eigenschaftsfenster aus ganz schnell anlegen. Wer gern gelegentlich mit instabilen Datenbanken arbeitet, muss diese hin und wieder mal dekompilieren – das geht mit unserer Decompile-Datenbank per Doppelklick und lässt sich ganz schnell einrichten. Schließlich kümmern wir uns um das Verhalten von Textfeldern beim Erhalt des Fokus: Komplett markieren, zum Start oder ans Ende

Tabellen verknüpfen per Code

Eine Tabellenverknüpfung legen Sie normalerweise über den entsprechenden Menübefehl von Access an (unter Access 2007 zum Beispiel über den Ribbon-Eintrag Externe Daten|Access). Wenn Sie diese Aufgabe etwa beim Start der Frontenddatenbank automatisch ausführen lassen möchten, brauchen Sie ein paar Zeilen Code.

Am einfachsten geht dies mit dem VBA-Pendant zum Menübefehl, und zwar mit der TransferDatabase-Methode des DoCmd-Objekts:

DoCmd.TransferDatabase acLink, "Microsoft Access", "<Quelldatenbank>", acTable, "<Name der Verküpfung>", "<Name der Quelltabelle>"

Dies klappt in der Regel ganz gut, führt aber in Einzelfällen zu Unannehmlichkeiten, zum Beispiel beim Einsatz unter der Access 2007-Runtime und dort speziell bei Verwendung von Backenddatenbanken, die nicht auf dem gleichen Rechner wie das Frontend liegen. Dort erscheint nämlich die gleiche Hinweismeldung, die auch beim Öffnen von Datenbankdateien aus nicht vertrauenswürdigen Ordnern erscheint – und zwar bei jedem Aufruf der TransferDatabase-Methode.

Um dies zu umgehen, brauchen Sie ein paar Zeilen Code mehr:

Dim db As DAO.Database
Dim tdf As DAO.TableDef
Set db = CurrentDb
Set tdf = db.CreateTableDef("tblVersion", 0,
"tbl_VersionFE", ";DATABASE=z:\\ShopSoft.accdb")
db.TableDefs.Append tdf
db.TableDefs.Refresh
Set tdf = Nothing
Set db = Nothing

Die CreateTableDef-Methode schafft es, eine Verknüpfung ohne nervende Hinweismeldungen herzustellen. Die folgende Append-Methode fügt die noch im leeren Raum stehende Verknüpfung zur Auflistung TableDefs hinzu und die Refresh-Methode sorgt schließlich dafür, dass die Verknüpfung auch gleich im Datenbankfenster erscheint.

Ereignisprozedur per Mausklick

Wenn Sie eine Ereignisprozedur anlegen, geschieht dies normalerweise durch die folgenden Schritte:

  • Sie markieren das betroffene Element.
  • Sie zeigen das Eigenschaftsfenster an, sofern dieses noch nicht aktiviert ist.
  • Sie wählen die Registerseite Ereignis aus.
  • Dann wählen Sie entweder aus dem Kombinationsfeld den Eintrag [Ereignisprozedur] aus und klicken auf die Schaltfläche mit den drei Punkten oder Sie klicken direkt auf diese Schaltfläche und wählen aus dem nun erscheinenden Dialog den Eintrag Codegenerator aus (s. Abb. 1).
  • pic001.png

    Abb. 1: Auswahl eines Werkzeugs zum Füllen einer Ereigniseigenschaft

  • Schließlich landen Sie im VBA-Editor und können den dort bereits angelegten Prozedurrumpf füllen.

Es gibt mindestens zwei Alternativen zu dieser Vorgehensweise, die schneller sein können:

  • Sie öffnen den VBA-Editor direkt, öffnen das Klassenmodul des jeweiligen Formulars oder Berichts, wählen im Kombinationsfeld links oben im Codefenster den Namen des betroffenen Steuerelements und im rechten Kombinationsfeld die benötigte Ereignisprozedur aus.
  • Sie aktivieren eine spezielle Option von Access und brauchen dann beim Anlegen der Ereignisprozedur über das Eigenschaftsfenster nur noch auf die Schaltfläche mit den drei Punkten für die gewünschte Eigenschaft zu klicken.

Letztere Version dürfte die schnellste sein. Die Option, die Sie dazu einstellen müssen, heißt Immer Ereignisprozeduren verwenden.

Sie finden diese unter Access 2003 und älter im Optionen-Dialog (Extras|Optionen) im Bereich Formulare/Berichte und unter Access 2007 in den Access-Optionen im Bereich Objekt-Designer|Formulare/Berichte.

Folgende Nullen statt führender Nullen

Ein Kunde wollte mal IDs mit Nullen bis auf fünf Stellen aufgefüllt haben. Die Zahlen 1, 27, 392 und 4433 sollten also so aussehen: 10000, 27000, 39200, 44330. Falls Sie auch mal so etwas brauchen, können Sie dies natürlich per VBA lösen – im vorliegenden Fall sollte dieses Format aber einfach in einer Abfrage untergebracht werden. Natürlich kann man dort auch eine VBA-Funktion integrieren, aber das muss ja nicht sein.

Stattdessen verwenden wir die ganz selten genutzte StrReverse-Funktion, die eine Zeichenkette umdreht. Dies führt zwar nicht direkt zum Ziel, aber auf folgendem Umweg schon.

Sie drehen also zunächst die Zahlen mit folgender Funktion um:

StrReverse(Zahl)

Für die Zahl 392 ergibt dies 293. Jetzt kommt die üblicherweise zum Anfügen führender Nullen verwendete Format-Funktion ins Spiel. Wenn Sie einer Zahl so viele Nullen voranstellen möchten, bis diese fünf Stellen aufweist, geht dies etwa so:

Format(Zahl, "00000")

Sie haben das Ende des frei verfügbaren Textes erreicht. Möchten Sie ...

Workplace

Jahresabonnement TestzugangOder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:

Schreibe einen Kommentar