Access-Tipps

 

Home
Nach oben
Access-Tipps
Excel-Tipps
Internet-Tipps
Office-Tipps
Outlook-Tipps
Word-Tipps

 

 


Access-Downloads, News, Tipps & Tricks

Access-Hilfe Hilfe mit genauen Lösungsschemata
Access-Home Für Programmierer, auch Anfänger mit Beispieldatenbanken, Infos, Lösungen
Entwicklertools, Downloads und Meldungen

Access-Suchmaschine, Forum, FAQ, Downloads

Tipps, Bücher, Software etc.

Aenderungen per Schaltflaeche verwerfen

Versionen: Access 97, 2000 und 2002

Nach Aenderungen in Formularen geht Access einen vor allem fuer weniger erfahrene Anwender recht eigenwilligen Weg: Beim Wechsel des Datensatzes werden Aenderungen ohne Rueckfrage automatisch gespeichert, eine augenfaellige Moeglichkeit, begonnene Aenderungen abzubrechen, gibt es anscheinend nicht. Zwar lassen sich Aenderungen im Formular ueber die Esc-Taste oder mehrmaligen Aufruf von BEARBEITEN-RUECKGAENGIG zuruecknehmen,Anwender mit wenig Erfahrung werden diese Funktionen kaum nutzen koennen. Sinnvoller waere hier eine auffaellige ABBRECHEN-Schaltflaeche, die dem Anwender als "Notausstieg" dient, alle Aenderungen zuruecknimmt und das Formular schliesst:

* Oeffnen Sie zunaechst das betreffende Formular im Entwurfsmodus.

* Legen Sie im Formularfuss eine Schaltflaeche mit der Bezeichnung ABBRECHEN (Name= btnAbbrechen) an und setzen Sie deren Textfarbe auf "Rot" und die Schriftbreite auf "Fett".

* Stellen Sie die Eigenschaft "Beim Klicken" auf "[Ereignisprozedur]" ein und klicken Sie auf die Schaltflaeche mit den drei Punkten, um den VBA-Editor zu oeffnen.

* Geben Sie im VBA-Editor folgende Anweisungen ein:

Private Sub btnAbbrechen_Click()

      On Error Resume Next
      DoCmd.SetWarnings False
      DoCmd.RunCommand acCmdUndo
      DoCmd.SetWarnings True
      DoCmd.Close acForm, Me.Name, acSavePrompt

End Sub

* Schliessen Sie den VBA-Editor und lassen Sie das Formular einmal anzeigen, um die Schaltflaeche zu testen. Aendern Sie beliebige Feldinhalte und klicken Sie dann auf ABBRECHEN. Wenn Sie das Formular anschliessend noch einmal oeffnen und den betreffenden Datensatz pruefen, sehen Sie, dass die Aenderungen wie erwartet verworfen wurden.

Import von Excel-Daten nach Access optimieren

Versionen: Access/Excel 97, 2000 und 2002

In Makros koennen Sie bekanntlich die Aktion "TransferDatenblatt" verwenden, um Daten aus einer Excel-Arbeitsmappe in eine Access-Tabelle zu importieren. Analog dazu stellt VBA die Anweisung "DoCmd.TransferSpreadsheet" zur Verfuegung. In der Praxis ist beim Einsatz dieser Aktion oder Funktion immer wieder zu beobachten, dass dabei komplette Excel-Tabellen importiert und anschliessend die davon nicht benoetigten Spalten beziehungsweise Felder in der Access-Tabelle muehsam wieder geloescht oder die in der Excel-Tabelle vorhandenen Zeilen gezaehlt werden, um eine Bereichsangabe der Form "A1:C1745" angeben zu koennen. Wenig bekannt ist die Tatsache, dass bei "TransferDatenblatt" beziehungsweise "DoCmd.TransferSpreadsheet" neben Bereichen einzelner Zellen im Format "A1:C1745" auch komplette Spalten direkt adressiert werden koennen. Beispiel: Aus einer Excel-Tabelle mit Bestelldaten interessieren fuer eine Statistik nur die Spalten "P" und "Q" mit dem Artikelpreis und der Anzahl bestellter Artikel. Gehen Sie fuer einen solchen Import wie folgt vor:

  • Oeffnen Sie das Makro, ueber das Sie Excel-Daten importieren, im Entwurfsmodus und aktivieren Sie die Zeile mit der Aktion "TransferDatenblatt".
  • Ueber den letzten Parameter "Bereich" koennen Sie den zu importierenden Bereich spezifizieren. Geben Sie hier beispielsweise "P:Q" ein, um nur diese beiden Spalten in eine Access-Tabelle zu importieren.
    Analog dazu spezifizieren Sie die gewuenschten Spalten in VBA beim Einsatz von "DoCmd.TransferSpreadsheet" wie folgt:

    DoCmd.TransferSpreadsheet acImport, _
    acSpreadsheetTypeExcel97, _
    "ImportTest", _
    "Z:1996.xls", _
    True, _
    "P:Q"

In der daraus resultierenden Tabelle sind jetzt nur die beiden im Makro beziehungsweise in der VBA-Routine spezifizierten Spalten "P" (Einzelpreis) und "Q" (Anzahl) vorhanden, die Sie nun direkt weiterverarbeiten koennen.

Sortierung automatisch aufheben

VERSIONEN: Access 97, 2000 und 2002/XP

Access bietet die Moeglichkeit, Sortierkriterien in einem Formular festzulegen. Allerdings wird das zuletzt angewendete Sortierkriterium immer zusammen mit dem Formular gespeichert und beim naechsten Aufruf automatisch angewendet (uebrigens ohne, dass Sie nach einer Bestaetigung fuer die Aenderung gefragt werden). Da Sie die Sortierung in vielen Faellen aber nur temporaer anwenden moechten, sollten Sie einen kleinen Trick kennen, um die Speicherung der Sortierung zu verhindern:

  1. Oeffnen Sie das gewuenschte Formular im Entwurfsmodus, waehlen Sie das Menue BEARBEITEN-FORMULAR AUSWAEHLEN an und blenden Sie das Eigenschaftenfenster ein.
  2. Weisen Sie dem Ereignis "Beim Oeffnen" die folgende Prozedur zu:

    Private Sub Form_Open(Cancel As Integer)
    Me.OrderBy=""
    End Sub
  3. Speichern und schliessen Sie das Formular. In Zukunft koennen Sie die Sortierung in Formularen bestimmen und sicher sein, dass diese Einstellungen nicht gespeichert werden.

Datenbank-Objekte einfacher uebertragen

Versionen: Access 97, 2000 und 2002

Wenn die Entwicklung einer Datenbank abgeschlossen ist, empfiehlt es sich, alle Objekte und Daten in eine neu erstellte Datenbank zu importieren, um der Gefahr einer durch haeufiges Aendern und Loeschen bedingten Inkonsistenz der Objekte und Daten vorzubeugen. Normalerweise legen Sie dazu ueber das Menue DATEI-NEU eine leere Datenbank an und importieren dann die einzelnen Objekte ueber das Menue DATEI-EXTERNE DATEN IMPORTIEREN in die neue Datenbank. Wenig bekannt ist die Tatsache, dass Objekte anstatt ueber das Menue DATEI-EXTERNE DATEN IMPORTIEREN auch schnell und einfach per Drag & Drop zwischen Datenbanken uebertragen werden koennen. Gehen Sie dazu wie folgt vor:

  • Oeffnen Sie zunaechst die Datenbank, aus der Objekte uebertragen werden sollen.
  • Starten Sie eine zweite Instanz von Access und legen Sie eine neue Datenbank an oder oeffnen Sie die Datenbank, in die Objekte uebertragen werden sollen.
  • Markieren Sie die Symbole beider Datenbanken in der Task-Leiste von Windows mit gedrueckter Strg- Taste, klicken Sie mit der rechten Maustaste auf die Markierung und waehlen Sie das Kontextmenue NEBENEINANDER an.

Nun koennen Sie bequem und uebersichtlich die gewuenschten Objekte mit der Maus von einem Datenbank-Fenster in das andere ziehen. Wenn Sie beim Uebertragen der Objekte ins Datenbank-Fenster der Ziel-Datenbank die Umschalt-Taste gedrueckt halten, kopiert Access das Objekt in die Ziel- Datenbank und loescht es anschliessend nach einer Sicherheitsabfrage in der Quell-Datenbank.

Unerwünschte Leerzeichen unterdrücken

Versionen: Access 97, 2000 und 2002

In Berichten setzen Sie regelmaessig Inhalte mehrerer Felder mit dem Operator "&" zusammen und trennen die Zeichenketten durch ein Leerzeichen.
Das sieht dann beispielsweise so aus:

[Titel] & " " & [Vorname] & " " & [Nachname]

Wenn nun jedoch eines der vorderen Felder leer ist, wird das Leerzeichen trotzdem eingefuegt und wirkt dann besonders am Zeilenanfang stoerend. Um diese unerwuenschten Leerzeichen bei zusammengesetzten Feldinhalten zu vermeiden, verwenden Sie den Operator "+" anstelle von "&" und klammern die Felder, die eventuell leer sein koennen, wie folgt:

([Titel]+ " ") & ([Vorname]+ " ") & [Nachname]

Durch die Klammerung und das "+"-Zeichen wird das Leerzeichen nur dann ausgegeben, wenn das Textfeld auch tatsaechlich einen Inhalt hat. Ist das Feld hingegen leer, waere der Ausdruck "Null + Leerzeichen" aufzuloesen, was Access jedoch wegen des Inhalts "Null" abbricht.
 

Nachschlagefelder einrichten

Versionen: Access 97, 2000 und 2002

Nicht nur in Formularen, sondern auch in der Datenblattansicht von Tabellen kann die Auswahl einzugebender Werte ueber Kombinationsfelder erfolgen. So ist es beispielsweise hilfreich, Kunden anhand ihres Namens anstatt ueber eine Kundennummer auswaehlen zu koennen. Das Stichwort lautet an dieser Stelle: "Nachschlagefeld"; ueber diesen Mechanismus koennen Sie auch in der Datenblattansicht Werte mit Hilfe von Kombinationsfeldern auswaehlen. Um Ihre Datenblattansichten um Kombinationsfelder zu erweitern, gehen Sie wie folgt vor:

* Erstellen Sie zunaechst eine normale Auswahl-Abfrage, die zum Beispiel die Felder "KundenNr" und "KundenName" oder "Artikelnummer" und "Artikelbezeichnung" selektiert.

* Stellen Sie die Sortierung fuer das Feld "KundenName" oder "Artikelbezeichnung" auf "Aufsteigend" ein.

* Speichern Sie die Abfrage zum Beispiel unter dem Namen "Kundenauswahl" oder "Artikelauswahl" und verlassen Sie den Abfrageentwurf.

* Oeffnen Sie die Tabelle, in der die Auswahl eingesetzt werden soll, im Entwurfsmodus.

* Markieren Sie das Feld fuer die Auswahl, also beispielsweise "KundenNr" oder "Artikelnummer" .

* Wechseln Sie im unteren Fensterbereich auf die Registerkarte "Nachschlagen".

* Nehmen Sie hier folgende Einstellungen vor:

Anzeigen: Kombinationsfeld
Herkunftstyp: Tabelle/Abfrage
Datensatzherkunft: "Kundenauswahl"
  beziehungsweise die eben erstellte Abfrage
Gebundene Spalte: 1
Anzahl Spalten: 2
Spaltenbreiten: 0 cm

Diese Einstellungen sorgen dafuer, dass fuer das betreffende Feld, also beispielsweise "KundenNr" oder "Artikelnummer", ein Kombinationsfeld angezeigt wird, das alle verfuegbaren Kunden oder Artikel nach Namen sortiert auflistet.
 

Aktuelles Eingabefeld in Access-Formularen hervorheben

Versionen: Access 2000 und 2002

Access-Anwender beschweren sich immer wieder, dass sie beispielsweise nach einem Telefonat Muehe haben, das aktuelle Eingabefeld im Formular zu finden. Abhilfe wuerde ein Mechanismus schaffen, der das aktuelle Feld besonders auffaellig hervorheben oder kenntlich macht. Dazu setzen Sie die bedingte Formatierung wie folgt ein:

* Oeffnen Sie das Formular im Entwurfsmodus.

* Markieren Sie mit gedrueckter Umschalt-Taste alle Eingabe-Felder, die bei Aktivierung hervorgehoben werden sollen.

* Waehlen Sie das Menue FORMAT-BEDINGTE FORMATIERUNG an.

* Stellen Sie "Bedingung 1" auf den Eintrag "Feld hat Fokus" ein.

* Legen Sie ueber die Formatierungs-Symbole hinter dem Vorschau-Textfeld die gewuenschte Formatierung vor, stellen Sie also beispielsweise einen roten Hintergrund und gelbe Schrift ein.

* Uebernehmen Sie die Aenderungen mit einem Klick auf OK.

In Zukunft wird nun das aktuelle Eingabefeld durch den roten Hintergrund mit gelber Schrift unuebersehbar hervorgehoben.
 

Unterformulare einfacher bearbeiten

Version: Access 2002

Bekanntlich zeigt Access 2002 Unterformulare nur zur direkten Bearbeitung ("In-place"-Bearbeitung) im Hauptformular an. Viele Entwickler finden diese Loesung etwas ungluecklich: Haeufig sind, weil das Unterformular recht klein ist, ausser dem Lineal und den Markierern fuer "Detailbereich" und eventuell noch "Formularkopf" keine weiteren Steuerelemente zu sehen. Entweder muessen Sie dann muehsam ueber die Rollbalken den im Unterformular zu bearbeitenden Bereich ins Bild scrollen oder die Bearbeitung in einem eigenen Fenster ueber das Menue ANSICHT-UNTERFORMULAR IN NEUEM FENSTER vornehmen. Die Bearbeitungsmethode von Unterformularen aelterer Access-Versionen, Anzeige des Unterformulars als "leeres" Steuerelement, Doppelklick startet Bearbeitung in eigenem Fenster, finden viele Entwickler praktischer. Leider laesst sich dieser Modus aber nicht mehr reaktivieren, sondern wird nur kurzzeitig nach Anwahl des Menues ANSICHT- UNTERFORMULAR IN NEUEM FENSTER bis zur naechsten Anzeige des Formulars in der Formularansicht benutzt. Immerhin laesst sich die Bearbeitung eines Unterformulars im eigenen Fenster etwas einfacher aufrufen:

* Klicken Sie mit der rechten Maustaste in die Toolbox und waehlen Sie das Kontextmenue ANPASSEN an.

* Wechseln Sie auf die Registerkarte "Befehle".

* Klicken Sie in der Liste KATEGORIEN auf den Eintrag "Ansicht" und ziehen Sie dann aus der Liste BEFEHLE den Eintrag "Unterformular in neuem Fenster" an die gewuenschte Position in der Toolbox.

* Klicken Sie mit der rechten Maustaste auf die eben eingefuegte Schaltflaeche und aktivieren Sie im Eigenschaften-Fenster die Option STANDARD, damit statt der langen Bezeichnung nur ein Symbol angezeigt wird.

* Klicken Sie mit der rechten Maustaste nochmals auf die eben eingefuegte Schaltflaeche und ordnen Sie ueber SCHALTFLAECHENSYMBOL AENDERN das gewuenschte Symbol zu oder erstellen Sie ueber SCHALTFLAECHENSYMBOL BEARBEITEN ein eigenes Symbol.

* Klicken Sie im Anpassen-Dialog auf SCHLIESSEN.

In Zukunft koennen Sie nun das jeweils markierte Unterformular per Mausklick in die Toolbox in einem eigenen Fenster bearbeiten.

Kleiner Tipp am Rande: Access kennt zwar auch einen Menueeintrag UNTERBERICHT IN NEUEM FENSTER, den man eventuell zur Vereinfachung der Bearbeitung von Berichten mit Unterberichten ebenfalls als Symbol in die Toolbox aufzunehmen plant, das ist aber nicht notwendig: Wenn Sie in einem Bericht einen Unterbericht markieren und auf das eben angelegte Symbol in der Toolbox klicken, setzt Access 2002 von sich aus die Funktion "Unterformular in neuem Fenster" in "Unterbericht in neuem Fenster" um.

Summen spaltenweise in Abfragen anzeigen

Versionen: Access 97, 2000 und 2002

Wenn Sie beispielsweise die Gesamtumsaetze von Artikeln basierend auf Bestelldaten summieren und nach bestimmten Kriterien wie Quartal oder Verkaufsregion gruppiert anzeigen moechten, wird das Ergebnis ueber eine entsprechende Gruppierungsabfrage immer zeilenweise ausgegeben. Das Ergebnis einer solchen Abfrage, die zum Beispiel die Felder "Region", "Artikelname" und "Umsatz" selektiert, nach Region und Artikelname gruppiert und das Feld "Umsatz" summiert, sind dann zum Beispiel Zeilen folgenden Aufbaus:

Name der Region – Name des Artikels – Summe(Umsatz)

Da es in der Regel mehr Artikel als Regionen gibt, ist eine solche Auswertung extrem unuebersichtlich. Ausserdem fehlen die Gesamtsummen pro Artikel. Wesentlich uebersichtlicher waere ein Ergebnis, das in den einzelnen Zeilen hinter dem jeweiligen Artikel den Gesamtumsatz sowie die Umsaetze der einzelnen Regionen spaltenweise anzeigt und die Regionen dabei als Spaltenueberschriften verwendet. Eine solche Auswertung liesse sich ueber eine Kreuztabellenabfrage realisieren, deren Einrichtung aber aufgrund der Umstaendlichkeit nicht jedermanns Sache ist. Wenn Sie allerdings im Abfrageentwurf das Menue "Ansicht-SQL" anwaehlen, koennen Sie direkt eine SQL-Abfrage wie die folgende eingeben und sich so umstaendliche Einstellungen ersparen:

TRANSFORM Sum(Umsatz) AS Gesamtumsatz
SELECT Artikelname
FROM Bestelldaten
GROUP BY Artikelname
PIVOT Region;

Ueber "TRANSFORM" wird die auszufuehrende Funktion spezifiziert, "SELECT" waehlt das Basisfeld fuer die Zeilen und "PIVOT" legt das Basisfeld fuer die Spaltenueberschriften fest. Das Ergebnis ist eine uebersichtliche Auflistung, der Sie zeilenweise fuer jeden Artikel den Gesamtumsatz sowie den Einzelumsatz pro Region entnehmen koennen.

Spalten in der Datenblattansicht fixieren

Versionen: Access 97, 2000 und 2002

Nehmen wir an, Sie setzen eine Adress-Verwaltung ein, die neben den eigentlichen Basisdaten (Name, Anschrift, Telefon etc.) viele weitere Informationen (Geburtstag, Hobby, Beruf etc.) enthaelt. In der Datenblattansicht muessen Sie nun haeufig den unteren Rollbalken benutzen, um die weiter rechts befindlichen Felder/Spalten einsehen zu koennen. Dann ist aber nicht mehr festzustellen, zu welchem Namen die gerade angezeigten Daten gehoeren, weil die ersten Spalten mittlerweile aus dem Blickfeld verschwunden sind.

Das fuehrt haeufig dazu, dass Sie beispielsweise Informationen falsch zuordnen oder bei Aenderungen die Daten womoeglich in die falschen Zeilen eingeben. Die Loesung:

* Markieren Sie in der Datenblattansicht die Spalte, die zur Orientierung notwendig ist, also zum Beispiel "Nachname" (und eventuell "Ort" zur besseren Unterscheidung, falls Namen doppelt vorkommen). Klicken Sie dazu mit der Maus einfach auf die Spaltenueberschrift; die betreffende Spalte wird nun invertiert dargestellt. Wenn Sie mehrere Spalten fixieren moechten, muss jede Spalte einzeln markiert und fixiert werden, es sei denn, sie liegen direkt nebeneinander und koennen gemeinsam durch Ziehen des Mauszeigers markiert werden. Eine Markierung nicht zusammenhaengender Bereiche mit gedrueckter Strg-Taste funktioniert nicht!

* Waehlen Sie das Menue FORMAT-SPALTEN FIXIEREN an. Dadurch wird die jeweils markierte Spalte ganz nach links geschoben und dort wie gewuenscht "fixiert".

Wenn Sie jetzt den horizontalen Rollbalken betaetigen, bleiben die fixierten Spalten am linken Rand stehen und die verbleibenden Spalten werden gescrollt. Fixierte Spalten erkennen Sie daran, dass zwischen den fixierten und den nicht fixierten Spalten ein etwas breiterer vertikaler Trennstrich angezeigt wird. Beim Verlassen der Datenblattansicht fragt Access, ob die Layoutaenderungen gespeichert werden sollen. Klicken Sie hier auf JA, wenn die Fixierung dauerhaft festgehalten und beim naechsten Oeffnen der Datenblattansicht wieder zum Tragen kommen soll. Die Fixierung fuer alle fixierten Spalten nehmen Sie bei Bedarf ueber das Menue FORMAT-SPALTENFIXIERUNG AUFHEBEN wieder zurueck. Einzelne Spalten koennen nicht separat aus der Fixierung geloest werden! Die ehemals fixierten Spalten bleiben ausserdem an ihrer alten Position stehen und muessen ggf. an ihre urspruengliche Position zurueckgeschoben werden.

Ausdruck "#Div/0!" in Feldern vermeiden

Versionen: Access 97, 2000 und 2002

In Formularen verwenden Sie oftmals gebundene Felder wie beispielsweise "Menge" und "Preis", aus denen der Inhalt fuer ein ungebundenes Textfeld "Gesamtwert" ueber die Formel "=[Preis]*[Menge]" berechnet wird. Das Feld "Gesamtwert" wird wiederum fuer andere Berechnungen herangezogen.

Nun kann es vorkommen, dass das Feld "Preis" den Inhalt "0" hat, sodass sich ein "Gesamtwert" von "0" ergibt. Wenn jetzt auf diesen "Gesamtwert" zum Beispiel ueber eine Formel "=[AnzPos] \ [Gesamtwert]" Bezug genommen wird und "[AnzPos]" ebenfalls "0" ist, erscheint als Ergebnis "#Div/0!". Als Ergebnis soll in einem solchen Fall einfach nur "0" ausgegeben werden. Dazu setzen Sie anstelle der direkten Formel "=[AnzPos] \ [Gesamtwert]" eine Wenn-Abfrage mit Formel wie folgt ein:

=Wenn([Gesamtwert]=0; 0; [AnzPos] \ [Gesamtwert])

Diese Formel prueft zunaechst, ob das Feld "Gesamtwert" den Wert "0" hat. Wenn ja, wird eine "0", andernfalls das Ergebnis der Formel "[AnzPos] \ [Gesamtwert]" als Ergebnis gesetzt und so die Ausgabe von "#Div/0!" vermieden.

Schneller Zugriff auf Outlook-Objekte per Schaltfläche

Versionen: Access 97, 2000, 2002, 2003

Bei der Arbeit mit Access-Datenbanken ist haeufig der Zugriff auf Outlook notwendig, um zum Beispiel eine Telefonnummer in den Kontakten fuer eine Rueckfrage nachzuschlagen, eine Aufgabe fuer eine vorzunehmende Aenderung anzulegen oder um einen Termin fuer Abstimmungsgespraeche mit Kollegen einzutragen. Normalerweise starten Sie dann Outlook, wechseln in den benoetigten Ordner und suchen die entsprechenden Informationen heraus bzw. legen neue Elemente an. Einen Teil dieses Aufwandes koennen Sie sich sparen, indem Sie Schaltflaechen fuer den Aufruf von Outlook mit dem jeweils benoetigten Ordner anlegen:

* Oeffnen Sie das Formular, aus dem der direkte Aufruf von Outlook gewuenscht ist, im Entwurfsmodus.

* Legen Sie im Formularfuss eine neue Schaltflaeche an und weisen Sie ihr den Namen "cmdOutlookKontakte" zu.

* Die Eigenschaft "Beschriftung" setzen Sie auf "Outlook-Kontakte".

* Fuer die Eigenschaft "Hyperlink" der Schaltflaeche geben Sie die folgende Formel ein:

Outlook:Kontakte

* Speichern Sie die Aenderungen und lassen Sie das Formular ueber das Menue ANSICHT-FORMULARANSICHT anzeigen.

In Zukunft wird bei einem Klick auf diese Schaltflaeche Outlook gestartet und der Kontakte- Ordner direkt angezeigt. Um andere Ordner wie oben gezeigt ueber eine Schaltflaeche direkt in Outlook zu oeffnen, verwenden Sie zum Beispiel eine Schaltflaeche "cmdOutlookKalender" oder "cmdOutlookAufgaben" und fuer den Hyperlink die Formel "Outlook:Kalender" oder "Outlook:Aufgabe

Kombinationsfelder automatisch öffnen

Versionen: Access 97, 2000, 2002/XP und 2003

Wenn Sie ein Kombinationsfeld in einem Formular auswaehlen, muessen Sie immer in einem zusaetzlichen Arbeitsschritt die Dropdown-Liste per Mausklick auf den kleinen schwarzen Pfeil oeffnen. Mit Hilfe einer kleinen VBA-Anweisung in der Ereignisprozedur "Bei Fokuserhalt" koennen Sie die Dropdown-Liste wie folgt automatisch herunterklappen lassen:

1. Oeffnen Sie das gewuenschte Formular im Entwurfsmodus, markieren Sie das Kombinationsfeld und waehlen Sie das Menue ANSICHT-EIGENSCHAFTEN an

2. Stellen Sie die Eigenschaft "Bei Fokuserhalt" auf den Eintrag "[Ereignisprozedur]" und klicken Sie auf die Schaltflaeche mit den drei Punkten.

3. Geben Sie im VBA-Editor die folgende Anweisung ein:

  Me.<Kombinationsfeld>.Dropdown

4. Ersetzen Sie dabei <Kombinationsfeld> durch den Namen des Kombinationsfeldes, dessen Dropdown- Liste automatisch geoeffnet werden soll.

5. Sichern Sie die Aenderungen, verlassen Sie den VBA-Editor und wechseln Sie wieder in die Formularansicht.

Wenn Sie nun das Kombinationsfeld anwaehlen oder anspringen, wird das Dropdown-Liste automatisch aufgeklappt, so dass Sie sofort einen Listeneintrag auswaehlen koennen.

 

Access-Datenbanken schneller mit Word verbinden

Versionen: Word/Access 97 und 2000

Beim Erstellen von Serienbriefen mit Word wird mit den Standardeinstellungen eine DDE-Verbindung (DDE= "Dynamic Data Exchange") von Word zu Access aufgebaut. Diese Art der Verbindung basiert auf einer aelteren Technologie, die sehr langsam ist und mit der oftmals die Verbindung zur Datenquelle einbricht. Alternativ dazu koennen Sie eine ODBC- Verbindung nutzen, die nicht nur schneller, sondern sicherer ist. Sie werden feststellen, dass Word damit vor allem umfangreichere Datenbestaende um ein Vielfaches schneller fuer den Seriendruck einlesen kann. Um den Zugriff auf die Datenbank von DDE auf ODBC umzuschalten, gehen Sie folgendermassen vor:

* Oeffnen Sie das Seriendruck-Dokument.

* Waehlen Sie das Menue EXTRAS-SERIENDRUCK an, um den Seriendruck-Manager anzuzeigen.

* Klicken Sie auf die Schaltflaeche DATEN IMPORTIEREN-DATENQUELLE OEFFNEN. Sie koennen nun wie gewohnt die gewuenschte Access-Datenbank auswaehlen. Bevor Sie allerdings mit OEFFNEN bestaetigen, aktivieren Sie noch das Kontrollkaestchen IMPORTWEISE AUSWAEHLEN (Word 97) beziehungsweise IMPORT WAEHLEN (Word 2000).

* Waehrend die Verbindung zu Access bisher nach einem Klick auf OEFFNEN automatisch hergestellt wurde, erscheint nun zunaechst ein Dialogfeld, in dem Ihnen verschiedene Importmodi zur Auswahl angeboten werden. Markieren Sie hier den Eintrag "MS Access-Datenbank ueber ODBC".

* Word zeigt nach wenigen Augenblicken die verfuegbaren Tabellen in der Datenbank an. Markieren Sie den gewuenschten Eintrag und bestaetigen Sie mit OK. Moechten Sie statt einer Tabelle eine Abfrage einsetzen, klicken Sie auf die Schaltflaeche OPTIONEN, aktivieren Sie das Kontrollkaestchen ANSICHTEN und klicken Sie auf OK. Nun werden neben den Tabellen auch die in der Datenbank vorhandenen Abfragen zur Auswahl angezeigt.

Die Verbindung von Word zu Access ueber ODBC ist damit hergestellt. Die Einstellungen werden mit dem Dokument gespeichert und muessen nicht nochmals beim naechsten Oeffnen vorgenommen werden. Ab Word 2002 ist diese Umstellung uebrigens nicht mehr notwendig, dort wird Dialog zur Auswahl des Importmodus automatisch angezeigt.

 

Datenbankobjekte ganz einfach verstecken

Versionen: Access 97, 2000, 2002/XP und 2003

Wenn Ihre Datenbanken von weniger erfahrenen Anwendern benutzt werden kommt es oft genug vor, dass die Anwender aus Versehen Objekte loeschen oder aendern und so den reibungslosen Einsatz der Datenbank gefaehrden. Gemaess dem Motto "Aus den Augen, aus dem Sinn" koennen Sie jedoch einfach alle schuetzenswerten Objekte verstecken und so vor unbeabsichtigten Zugriffen in Sicherheit bringen. Sichtbar lassen Sie lediglich Formulare mit Menues, die der Anwender fuer die Arbeit mit der Datenbank benoetigt.

Um die betreffenden Objekte zu verstecken, gehen Sie wie folgt vor:

* Klicken Sie mit der rechten Maustaste auf das betreffende Objekt (Tabelle, Abfrage, Formular, Makro, Modul) und waehlen Sie den Eintrag EIGENSCHAFTEN aus dem Kontextmenue.

* Aktivieren Sie das Kontrollkaestchen "Ausblenden".

* Uebernehmen Sie die Aenderung mit einem Klick auf die Schaltflaeche OK.

Wiederholen Sie diese Schritte fuer alle Objekte, die Sie verstecken moechten. Im naechsten Schritt muss sichergestellt werden, dass Access die ausgeblendeten Objekte auch tatsaechlich versteckt:

* Waehlen Sie das Menue EXTRAS-OPTIONEN an.

* Wechseln Sie auf die Registerkarte "Ansicht"

* Pruefen Sie, ob im Bereich "Einblenden" die Option AUSGEBLENDETE OBJEKTE deaktiviert ist. Wenn nicht, entfernen Sie das Haekchen im Kontrollkaestchen.

* Uebernehmen Sie die Aenderungen mit OK.

In der Datenbank sind nun bis auf die Objekte, die fuer die Arbeit mit der Datenbank unbedingt notwendig sind, alle Tabellen, Abfragen, Formulare, Berichte, Makros und Module nicht mehr zu sehen und so "experimentierfreudigen" Anwendern entzogen. Access kann aber trotzdem wie gewohnt beispielsweise ueber "DoCmd.OpenForm" auf alle Objekte zugreifen.

Wenn Sie Ihre Datenbank komplett ueber Menueformulare steuern, koennen Sie zusaetzlich noch das Datenbankfenster ausblenden und so die Datenbank zusaetzlich etwas sicherer machen. Zu diesem Zweck waehlen Sie einfach das Dialogfeld EXTRAS-START an und schalten das Kontrollkaestchen DATENBANKFENSTER ANZEIGEN aus.

 

Keine Probleme durch neue Objektnamen in Access

Versionen: Access 2000, 2002/XP und 2003

Eine Access-Datenbank besteht häufig aus einer Fülle von Tabellen, Abfragen, Formularen, Berichten und Modulen, die alle in irgendeiner Art miteinander verknüpft sind. Selbst eine auf den ersten Blick kleine Änderung kann daher schwere Auswirkungen haben und im Extremfall zu Fehlermeldungen und Datenverlusten führen. Ein einfaches Beispiel: Sie entschließen sich, ein neues Feld für die Speicherung des Europreises in Ihren Artikel-Stammdaten anzulegen. Das bisherige Feld "Einzelpreis" soll außerdem zur besseren Unterscheidung in "EinzelpreisDM" umbenannt werden. Nehmen Sie diese Änderung vor und zeigen dann das zugehörige Formular an, erscheint in dem Textfeld, in dem bisher der Einzelpreis zu sehen war die Meldung "#Name?", denn die Verbindung zwischen Steuerelement und Tabellenfeld ist verloren gegangen. Auch Abfragen und Berichte, die auf der Stammdaten-Tabelle basieren und das Einzelpreis-Feld verwenden, werden nicht mehr funktionieren, weil Access bisher keine automatische Anpassung vorgenommen hat.

Ab Access 2000 steht Ihnen nun eine neue Funktion zur Verfügung, die dieses Problem behebt. Die "Objeknamen-Autokorrektur" kann Namensänderungen automatisch erkennen und die davon betroffenen abhängigen Objekte anpassen. Um diese Möglichkeiten optimal zu nutzen, müssen Sie allerdings einige wichtige Tipps beachten:

Grundsätzlich ist die Objektnamen-Autokorrektur bei jeder Datenbank aktiviert, die Sie in Access 2000 anlegen. Zur Überprüfung oder Änderung der aktuellen Einstellungen wählen Sie das Menü EXTRAS-OPTIONEN an und wechseln auf die Registerkarte "Allgemein". Unter "Objektnamen-Autokorrektur" werden die Optionen INFORMATIONEN AUFZEICHNEN und AUSFÜHREN aktiviert sein. Die erste Option sorgt dafür, dass Access alle notwendigen Informationen speichern, um Namensänderungen erkennen zu können. Nur wenn zusätzlich die Option AUSFÜHREN eingeschaltet ist, führt Access allerdings auch die notwendigen Anpassungen aus. Sollten Sie sich für den Einsatz der Objektnamen-Autokorrektur entscheiden, ist in jedem Fall das Einschalten der Option ÄNDERUNGEN PROTOKOLLIEREN empfehlenswert. Access legt daraufhin eine Tabelle mit dem Namen "Objektnamen-Autokorrektur-Protokoll" an, in der jede automatisch ausgeführte Änderung genau aufgeführt ist.

Bedenken Sie die Einschränkungen der Autokorrektur: Namensänderungen in Tabellen, Formularen, Abfragen und Berichten werden automatisch erkannt und durchgeführt, aber VBA-Module bleiben unberücksichtigt. Hier müssen Sie die Änderungen nach wie vor manuell vornehmen. Die Autokorrektur lässt sich außerdem nicht in replizierten Datenbanken, Access-Projekten und verknüpften Tabellen einsetzen.

Problematisch wird es auch bei Formularen und Berichten, bei denen Sie als Datenherkunft ein SQL-Statement angegeben haben. Die Autokorrektur passt das Statement entsprechend an, lässt die Steuerelemente aber unberücksichtigt. Behelfen Sie sich mit einem Trick: Sichern Sie das SQL-Statement als Auswahlabfrage und verwenden Sie diese dann als Datenherkunft für das Formular oder den Bericht. Die Autokorrektur kann Änderungen dann zunächst in der Abfrage und anschließend im Formular ausführen.

Zum effektiven Einsatz der Autokorrektur sollte man die grundsätzliche Funktionsweise kennen, denn in einigen Fällen bleibt eine Namensänderung aus auf den ersten Blick unerfindlichen Gründen ohne Folgen. Tatsächlich kann Access eine Autokorrektur nur dann ausführen, wenn vorher für alle beteiligten Objekte eine so genannte "Name Map" angelegt wurde. Nur wenn eine solche Name Map existiert, kann Access Nameänderungen erkennen und Ihre Datenbank entsprechend anpassen. Der wichtige Punkt dabei: Eine Name Map existiert nur dann, wenn die Option INFORMATIONEN AUFZEICHNEN zu dem Zeitpunkt aktiviert war, zu dem das Objekt erstellt wurde. Hatten Sie die Objektnamen-Autokorrektur also zwischenzeitlich deaktiviert und in dieser Zeit neue Tabellen, Abfragen usw. angelegt, werden Änderungen in diesen Objekten nicht berücksichtigt. Eine Name Map fehlt ebenfalls in konvertierten Datenbanken sowie für importierte Objekte.

Es gibt allerdings einen kleinen Trick, mit dem Sie auch nachträglich eine Name Map für Objekte anlegen können:

Wählen Sie das Menü EXTRAS-OPTIONEN an, wechseln Sie auf die Registerkarte "Allgemein" und aktivieren Sie gegebenenfalls das Kontrollkästchen INFORMATIONEN AUFZEICHNEN. Öffnen Sie das gewünschte Objekt im Entwurfsmodus und sichern Sie es mit einem Mausklick auf das Diskettensymbol. Nachdem Sie das Objekt geschlossen haben, ist eine Name Map angelegt und Access erkennt Namensänderungen in Zukunft automatisch. Wiederholen Sie den Vorgang für jedes weitere Objekt, für das noch keine Name Map existiert.

 

Access-Tabellen komfortabel abgleichen

Versionen: Access 97, 2000, 2002/XP und 2003

Wenn Sie aus Versehen mit zwei Versionen derselben Datenbanken gearbeitet haben oder das aus praktischen Gründen notwendig war (eine Datenbank in der Firma, eine beim Außendienstmitarbeiter ...), stehen Sie vor dem Problem, dass Sie die neuen Datensätze möglichst einfach ermitteln müssen. Zum Beispiel: Sie möchten Änderungen die beiden Tabellen "Kunden" (Alt) in der 1. Version und "Kunden" (Neu) in der 2. Version vergleichen und die neu hinzugekommenen Adressen aus "Kunden/Neu" in "Kunden/Alt" übertragen. Die folgende Technik hilft weiter:

  1. Benennen Sie die Ursprungstabelle (hier "Kunden") in der 1. Kopie der Datenbank in "Kunden/Alt" um.
  2. Importieren Sie die Tabelle mit den neuen Datensätzen (hier ebenfalls "Kunden") über DATEI-EXTERNE DATEN-IMPORTIEREN aus der 2. Version der Datenbank in die 1. Version und benennen Sie sie um in "Kunden/Neu".
  3. Erstellen Sie eine neue Abfrage "Tabellen abgleichen", in der Sie als erstes die Tabelle mit den neuen Datensätzen (hier "Kunden/Neu") und als dann die Ursprungstabelle (hier "Kunden/Alt") zugrunde legen. Verknüpfen Sie die Tabellen über ihren Primärschlüssel (zum Beispiel die Kundennummer).
  4. Doppelklicken Sie auf die Verknüpfungslinie zwischen den Feldern und stellen Sie die Option "2: Beinhaltet ALLE Datensätze aus 'Kunden/Neu' und nur die Datensätze aus 'Kunden/Alt', bei denen die Inhalte der verknüpften Felder beider Tabellen gleich sind." ein.
  5. Fügen Sie das Sternchen (*) aus der 1. Tabelle (hier "Kunden/Neu") und das Primärschlüsselfeld aus der 2. Tabelle (hier "Kunden-Code" aus "Kunden/Alt") dem Abfrageentwurf hinzu, deaktivieren Sie das Kontrollkästchen "Anzeigen" für das Primärschlüsselfeld (hier "Kunden-Code") und geben Sie als Kriterium "Ist Null" ein. Bei der Selektion der Datensätze berücksichtigt Access dann nur die Datensätze aus der 1. Tabelle, für die es in der 2. Tabelle keine Entsprechung gibt, deren Primärschlüsselfeld also "Null" ist.
  6. Wenn Sie die Abfrage ausführen lassen, werden genau die Datensätze aufgelistet, die noch nicht in der Tabelle "Kunden/Alt" vorhanden sind.
  7. Um die Datensätze in die Ursprungstabelle zu übertragen, erstellen Sie am besten eine separate Anfüge-Abfrage – Access verweigert teilweise das Anfügen von Datensätzen zu einer Tabelle, die selbst direkt einer Abfrage zugrunde liegt – auch der Umweg über BEARBEITEN-KOPIEREN und BEARBEITEN-AM ENDE ANFÜGEN ist dann nicht möglich. Benennen Sie diese Anfüge-Abfrage "Abgleich anfügen", legen Sie die oben erstellte Abfrage zugrunde, geben Sie als Zieltabelle die ursprüngliche Tabelle (hier "Kunden/Alt") an und lassen Sie die Abfrage ausführen.

Abschließend können Sie die importierte Tabelle (hier "Kunden/Neu") und die verwendeten Abfragen löschen und die Ursprungstabelle wieder umbenennen (hier "Kunden/Alt" in "Kunden").

Individueller Startbildschirm für Ihre Datenbanken

Versionen: Access 97, 2000, 2002/XP und 2003

Um beim Öffnen einer Datenbanken für einige Sekunden einen individuellen Startbildschirm anzeigen zu lassen, können Sie ein normales Formular nutzen. Legen Sie dieses Formular zunächst wie gewünscht an. Platzieren Sie also eine Grafik und notwendige Texte darin. Legen Sie dann die folgenden Eigenschaften für das Formular fest:

  • Rahmenart: Dünn
  • Popup: Ja
  • Gebunden: Ja
  • Systemmenüfeld: Nein
  • MinMax-Schaltflächen: Nein
  • Schließen-Schaltfläche: Nein
  • Automatisch zentrieren: Ja
  • Größe anpassen: Ja
  • Timerintervall: 3000

In der Ereignisprozedur "Beim Öffnen" geben Sie folgende Anweisung ein:

Me.Caption = " "

Diese Anweisung sorgt für eine leere Titelleiste. Alternativ können Sie hier auch den Anwendungsnamen anzeigen lassen, indem Sie ihn über die Eigenschaft "Beschriftung" festlegen und die Ereignisprozedur "Beim Öffnen" nicht benutzen.

In der Ereignisprozedur "Bei Zeitgeber" geben Sie folgende Anweisung ein:

DoCmd.Close acForm, Me.Name, acSavePrompt

Diese Anweisung schließt das Formular nach Ablauf der über "Timerintervall" eingestellten Zeit in Millisekunden – hier also nach 3 Sekunden. Speichern Sie das Formular als "frmStartup" oder ähnlich ab. Damit es beim Öffnen der Datenbank automatisch angezeigt wird, definieren Sie es entweder über EXTRAS-START als Startformular oder legen ein AutoExec-Makro an, das als erstes eine "ÖffnenFormular"-Aktion mit "frmStartup" ausführt.

Datenverlust beim Schließen von Formularen vermeiden

Versionen: 2003, 2002/XP, 2000 und 97

In Ihren Formularen setzen Sie häufig eine Schaltfläche SCHLIEßEN ein, um dem Anwender das Verlassen des Formulars und die Rückkehr zu einem Hauptmenü zu erleichtern. Als Anweisung in der Ereignisprozedur "Bei Klicken" ist dann meist nur "DoCmd.Close" angegeben, mit der Access standardmäßig das aktuelle Objekt schließt. Dabei kann es jedoch passieren, dass aufgrund einer kleinen Ungereimtheit von Access Änderungen am Formular oder am aktuellen Datensatz ohne weitere Rückmeldung nicht gespeichert werden. Um sicher zu gehen, sollten Sie die Ereignisprozedur "Beim Klicken" immer wie folgt aufbauen:

Sub btnClose_Click()
On Error Resume Next
DoCmd.RunCommand acCmdSaveRecord
DoCmd.Close acForm, Me.Name, acSavePrompt
End Sub

Diese Anweisungen sorgen dafür, dass zunächst der aktuelle Datensatz gespeichert und dann explizit das aktuelle Formular geschlossen wird. Durch die Angabe der Parameter "acForm", "Me.Name" und "acSavePrompt" prüft Access zuverlässig, ob Änderungen an genau diesem Formular vorliegen und zeigt eine entsprechende Abfrage an

Text- und Memofeldern optimal konfigurieren

Versionen: Access 97, 2000, 2002/XP und 2003

Um den Cursor in einem Text- oder Memofeld nach der Aktivierung sofort an das Textende zu setzen und so Eingaben direkt starten zu können, gibt es zwei Möglichkeiten: Zunächst können Sie über das Menü EXTRAS-OPTIONEN auf der Registerkarte "Tastatur" im Bereich "Cursorverhalten bei Eintritt in Feld" die Option ZUM ENDE DES FELDES GEHEN aktivieren. Diese Einstellung hat aber den Nachteil, dass bei allen Feldern bei Aktivierung das Ende angesprungen wird – meist sollen Textfelder aber immer komplett markiert werden (Option GANZES FELD MARKIEREN), damit der Inhalt sofort durch Eintippen überschrieben werden kann – und außerdem wirkt diese Einstellung nur bei einem "normalen" Feldwechsel beispielsweise per Tab-Taste – beim direkten Klicken in das Memofeld bleibt der Cursor jedoch dort stehen, wo Sie geklickt haben.

Es empfiehlt sich daher, nicht diese Optionen zu ändern, sondern dem Text-/Memofeld über dessen Ereignisprozedur "Beim Hingehen" die folgenden VBA-Anweisungen zuzuordnen:

Private Sub Besuchsberichte_Enter()

Me.Besuchsberichte.SelStart = Len(.Text)

Me.Besuchsberichte.SelLength = 0

End Sub

Über die Eigenschaft "SelStart" kann der Cursor an eine beliebige Position im Text-/Memofeld gesetzt werden. Hier weisen wir dieser Eigenschaft die Anzahl vorhandener Zeichen über "Len(.Text)" zu, wodurch der Cursor hinter dem letzten Zeichen platziert wird. Die Zuweisung "SelStart = 0" sorgt schließlich dafür, dass nichts markiert ist, so dass sofort mit neuen Eingaben begonnen werden kann. Dabei spielt es keine Rolle, ob das Memofeld zum Beispiel über die Tab-Taste angesprungen oder durch Hineinklicken aktiviert wurde.

 

Mehr Komfort mit Nachschlagefeldern in Access

Versionen: Access 2003, 2002/XP, 2000 und 97

Nicht nur in Formularen, auch in der Datenblattansicht von Tabellen kann die Auswahl einzugebender Werte über Kombinationsfelder erfolgen. So ist es beispielsweise recht hilfreich, Kunden anhand ihres Namens anstatt über eine Kundennummer auswählen zu können. Das Stichwort lautet "Nachschlagefeld": Über diesen Mechanismus stellt Access die oben beschriebene Möglichkeit zur Verfügung, in der Datenblattansicht einzugebende Werte über Kombinationsfelder auswählen zu können. Um Ihre Datenblattansichten um Kombinationsfelder zur Auswahl einzugebender Werte zu erweitern, gehen Sie wie folgt vor:

  1. Erstellen Sie zunächst eine normale Auswahl-Abfrage, die zum Beispiel das Feld "KundenNr" und das Feld "KundenName" oder "Artikelnummer" und "Artikelbezeichnung" selektiert.
  2. Stellen Sie die Sortierung für das Feld "KundenName" oder "Artikelbezeichnung" auf "Aufsteigend" ein.
  3. Speichern Sie die Abfrage zum Beispiel unter dem Namen "Kundenauswahl" oder "Artikelauswahl" und verlassen Sie den Abfrageentwurf.
  4. Öffnen Sie die Tabelle, in der die Auswahl eingesetzt werden soll, im Entwurfsmodus.
  5. Markieren Sie das Feld für die Auswahl, also beispielsweise "KundenNr" oder "Artikelnummer".
  6. Wechseln Sie im Bereich darunter auf die Registerkarte "Nachschlagen".

In diesem Dialog nehmen Sie nun die folgenden Einstellungen vor:

  • Anzeigen: Kombinationsfeld
  • Herkunftstyp: Tabelle/Abfrage
  • Datensatzherkunft: Kundenauswahl bzw. die eben erstellte Abfrage
  • Gebundene Spalte: 1
  • Anzahl Spalten: 2
  • Spaltenbreiten: 0 cm

Diese Einstellungen sorgen nun dafür, dass für das betreffende Feld, also beispielsweise "KundenNr" oder "Artikelnummer", ein Kombinationsfeld angezeigt wird, das alle verfügbaren Kunden oder Artikel nach Namen sortiert auflistet. Nach Auswahl eines Kunden wird dessen Kundenummer gemäß gebundener Spalte "1", die somit dem von der Abfrage als erstem Feld "KundenNr" oder "Artikelnummer" gelieferten Wert entspricht, in der Tabelle gespeichert. Damit nur der Name und nicht zum Beispiel "KundenNr | KundenName" im Kombinationsfeld angezeigt wird, ist die Eigenschaft "Spaltenbreite" auf "0 cm" zu setzen. Access unterdrückt dann die erste Spalte, also beispielsweise "KundenNr" oder "Artikelnummer" und zeigt nur die Namen gemäß Feld "KundenName" oder "Artikelbezeichnung" an.

 

Excel-Tabelle um Access-Datensätze erweitern

Versionen: Access 2003, 2002/XP, 2000 und 97

Wenn Sie Access-Daten regelmäßig nach Excel übertragen und dort auswerten, setzen Sie zur Automatisierung in der Regel die Anweisung "DoCmd.TransferSpreadsheet" ein. Allerdings wird dabei immer eine neue Arbeitsmappe angelegt, die dann mühsam mit einer vorhandenen Arbeitsmappe für die Auswertungen zusammengeführt werden muss. Sie können eine Excel-Tabelle aber auch in eine Access-Datenbank einbinden und Datensätze dann über eine Anfügeabfrage ergänzen. Das mühsame Zusammenführen der vorhandenen Auswertungs-Mappen und der exportierten Tabellen entfällt dann. Gehen Sie dazu wie folgt vor:

  1. Wählen Sie das Menü DATEI-EXTERNE DATEN-TABELLEN VERKNÜPFEN an.
  2. Im nachfolgenden Dialog stellen Sie zunächst in der Liste DATEITYP den Eintrag "Microsoft Excel" ein. Lokalisieren Sie dann die betreffende Arbeitsmappe, klicken Sie auf die Schaltfläche VERKNÜPFEN und folgen Sie den weiteren Anweisungen des Verknüpfungsassistenten. Anschließend finden Sie im Datenbankfenster ein Excel-Symbol mit einem kleinen schwarzen Pfeil, um die Arbeitsmappe als verknüpfte Tabelle kenntlich zu machen. Wenn Sie diese Tabelle einmal öffnen, werden Sie sehen, dass sie wie eine "normale" Access-Tabelle angezeigt wird und auch genauso damit gearbeitet werden kann.
  3. Wechseln Sie im Datenbankfenster in den Bereich "Abfragen", klicken Sie auf die Schaltfläche NEU und wählen Sie den Eintrag "Entwurfsmodus" per Doppelklick aus.
  4. Im folgenden Dialog wählen Sie die gewünschten Tabellen, also beispielsweise "Bestellungen", "Bestelldetails" und "Kunden", per Doppelklick aus und klicken abschließend auf SCHLIEßEN.
  5. Nehmen Sie die für den Export notwendigen Verknüpfungen der Tabellen/Felder vor und definieren Sie gegebenenfalls Kriterien für die Auswahl bestimmter Datensätze.
  6. Wählen Sie das Menü ABFRAGE-ANFÜGEABFRAGE an, stellen Sie im folgenden Dialog die eingebundene Tabelle als Ziel ein und klicken Sie auf OK.
  7. Fügen Sie die zu exportierenden Felder per Doppelklick dem Abfrageentwurf hinzu und stellen Sie in den einzelnen Spalten in der Zeile "Anfügen an" die Spalten der Excel-Tabelle ein, in die die Daten übertragen werden sollen.
  8. Wählen Sie das Menü ABFRAGE-AUSFÜHREN an, um die Daten in die Excel-Tabelle zu übertragen.

Access ergänzt die Daten daraufhin am Ende der Excel-Tabelle.

 

Access-Formulare und -Berichte schneller anlegen

Versionen: Access 2003, 2002/XP und 2000

Im Formular-/Berichtsentwurf fügen Sie Felder normalerweise zum Detailbereich hinzu, indem Sie das oder die gewünschten Felder markieren und mit der Maus in den Detailbereich des Formulars/Berichtes ziehen. Alternativ dazu können Sie auch die folgende Methode verwenden und je nach Formular-/Berichtsaufbau schneller ans Ziel gelangen:

  1. Lassen Sie die Feldliste über F8 anzeigen. Access markiert daraufhin automatisch den ersten Eintrag in der Liste.
  2. Mit den Cursortasten können Sie nun in der Liste navigieren.
  3. Drücken Sie Return für Felder, die in den Detailbereich des Formulars oder Berichtes aufgenommen werden sollen.

Bei dieser Methode setzt Access automatisch alle per Return-Taste ausgewählten Felder sauber ausgerichtet untereinander in das Formular bzw. in den Bericht. Im Idealfall können Sie so mit F8, einigen Cursorbewegungen und der Return-Taste das Formular oder einen Bericht innerhalb von Sekunden aufbauen.

 

Sortierung in Access-Formularen automatisch aufheben

Versionen: Access 2003, 2002/XP, 2000 und 97

Access bietet bekanntlich die Möglichkeit, Sortierkriterien in einem Formular festzulegen. Allerdings wird das zuletzt angewendete Sortierkriterium immer zusammen mit dem Formular gespeichert und beim nächsten Aufruf automatisch angewendet (übrigens ohne, dass Sie nach einer Bestätigung für die Änderung gefragt werden). Da Sie die Sortierung in vielen Fällen aber nur temporär anwenden möchten, sollten Sie einen kleinen Trick kennen, um die Speicherung der Sortierung zu verhindern:

  1. Öffnen Sie das gewünschte Formular im Entwurfsmodus, wählen Sie das Menü BEARBEITEN-FORMULAR AUSWÄHLEN an und blenden Sie das Eigenschaften-Fenster ein.
  2. Weisen Sie dem Ereignis "Beim Öffnen" die folgende Prozedur zu:

Private Sub Form_Open(Cancel As Integer)

Me.OrderBy=""

End Sub

Speichern und schließen Sie das Formular. In Zukunft können Sie die Sortierung in Formularen bestimmen und sicher sein, dass diese Einstellungen nicht gespeichert werden.

 

So nutzen Sie die Access-Funktion "BuildCriteria"

Versionen: Access 2003, 2002/XP, 2000 und 97

Nehmen wir an Sie möchten in einer Artikelverwaltung alle Artikel anzeigen, die Sie von einem bestimmten Lieferanten beziehen, wissen aber nur noch, dass der Name des Lieferanten einen bestimmten Begriff (zum Beispiel "Liquids") enthält. Normalerweise müssten Sie dazu über DATENSÄTZE-FILTER-FORMULARBASIERTER FILTER das Feld "Lieferant" mit dem Suchbegriff ausfüllen und den Filter einschalten. Wesentlich einfacher geht das mit Hilfe einer Schaltfläche, einen kleinen Eingabedialog und der wenig bekannten Access-Funktion "BuildCriteria()".

Diese Funktion setzt anhand einer Suchmaske wie "*liquids*" eine Zeichenkette zusammen, die direkt der Eigenschaft "Filter" zugewiesen werden kann. Statt also aufwendig über das Menü und das Formular zu filtern, klicken Sie auf eine Schaltfläche, geben den Suchbegriff ein und drücken Return:

1. Öffnen Sie das Formular, für das Sie eine schnelle Filterung einsetzen möchten, im Entwurfsmodus. 2. Legen Sie im Formularfuß oder an anderer passender Stelle eine Schaltfläche mit einer Beschriftung wie "Lieferant suchen" und dem Namen "btnSuchen" an. 3. Stellen Sie die Eigenschaft "Beim Klicken" der Schaltfläche auf "[Ereignisprozedur]". 4. Klicken Sie auf die Schaltfläche mit den drei Punkten, um den VBA-Editor zu öffnen. 5. Geben Sie die folgenden Anweisungen ein:

Private Sub btnSuch_Click()
Dim strEingabe As String
Dim strFilter As String
strEingabe = InputBox$("Suchbegriff eingeben:", _
"Suchen:", "") If strEingabe = "" Then
Me.Filter = ""
Me.FilterOn = False
Exit Sub
End If strFilter = BuildCriteria("Lieferant", _
dbText, strEingabe)
Me.Filter = strFilter
Me.FilterOn = True
End Sub

"Lieferant" ersetzen Sie dabei durch den Namen des Feldes, das durchsucht werden soll. Handelt es sich dabei um ein numerischen Feld, eine Fließkommazahl, eine Währung, ein Memo oder ein Datum, ersetzen Sie den zweiten Parameter durch eine der Konstanten "dbLong", "dbDouble", "dbCurrency", "dbMemo" oder "dbDate". Diese Anweisungen nehmen den Suchbegriff über "InputBox$()" entgegen, lassen dann über "BuildCriteria()" den Ausdruck für den Filter zusammensetzen und weisen ihn abschließend zu.

Speichern Sie die Änderungen, lassen Sie das Formular einmal über das Menü ANSICHT-FORMULARANSICHT anzeigen und testen Sie die Funktion. Um einen auf diese Art gesetzten Filter wieder aufzuheben, klicken Sie einfach in der Symbolleiste auf das Symbol FILTER ENTFERNEN. Das Formular zeigt dann wieder alle Datensätze an.
 

Access-Symbolleisten fest positionieren

Versionen: Access 2003, 2002/XP, 2000 und 97

Sicherlich haben Sie sich auch schon einmal darüber geärgert, dass die Symbolleisten von Access bei jedem Programmstart an anderen Positionen erscheinen, wenn Sie eigene Symbolleisten einsetzen. Diese eigenmächtige Verhalten können Sie Access ganz einfach abgewöhnen:

  1. Klicken Sie mit der rechten Maustaste auf eine Symbolleiste und wählen Sie das Kontextmenü ANPASSEN an.
  2. Wechseln Sie auf die Registerkarte "Symbolleisten".
  3. Markieren Sie in der Liste SYMBOLLEISTEN die gewünschte Symbolleiste (z.B. "Formularansicht").
  4. Klicken Sie auf die Schaltfläche EIGENSCHAFTEN.
  5. Deaktivieren Sie die Option VERSCHIEBEN ZULASSEN.
  6. Übernehmen Sie die Änderungen mit OK.

Mehrere Datenbanken gleichzeitig öffnen

Versionen: Access 2003, 2002/XP, 2000 und 97

In vielen Fällen wäre es nützlich, bestimmte Datenbanken bereits beim Starten des Rechners automatisch zu öffnen. Nutzen Sie dazu ganz einfach das Verzeichnis "AutoStart" von Windows:

  1. Wählen Sie das Menü START-AUSFÜHREN an und geben Sie die folgende Anweisung ein: %USERPROFILE%. Diese Anweisung öffnet den Windows-Explorer mit dem persönlichen Stammverzeichnis des aktuellen Benutzers.
  2. Wechseln Sie hier in den Ordner "Startmenü\Programme\AutoStart" jeweils per Doppelklick.
  3. Öffnen Sie ein weiteres Explorer-Fenster und ordnen Sie es neben Explorer mit dem "AutoStart"-Verzeichnis an.
  4. Wechseln Sie in den Ordner der ersten Datenbank, die Sie automatisch öffnen wollen.
  5. Markieren Sie die entsprechende Datei und drücken Sie Strg+C.
  6. Klicken Sie mit der rechten Maustaste in das "AutoStart"-Verzeichnis, und wählen Sie das Kontextmenü VERKNÜPFUNG EINFÜGEN an. Alternativ können Sie die Datenbank-Datei auch bei gedrückter rechter Maustaste in das "AutoStart"-Verzeichnis ziehen und beim Loslassen der Maustaste VERKNÜPFUNG HIER ERSTELLEN anwählen.

In Zukunft werden alle Datenbanken, für die Sie Verknüpfungen in "AutoStart" abgelegt haben, automatisch beim Start des Rechners geöffnet. Wenn Sie mit der rechten Maustaste auf eine Verknüpfung klicken, können Sie noch verschiedene EIGENSCHAFTEN verändern und beispielsweise festlegen, ob Ihre Datenbanken "Minimiert" oder "Maximiert" angezeigt werden sollen.

'Ungültige Verwendung von Null' vermeiden

Versionen: Access 2003, 2002/XP, 2000 und 97

Beim Auslesen von leeren Feldern per VBA wird bekanntlich ein Laufzeitfehler "Ungültige Verwendung von Null" ausgelöst. Wenn Ihnen stattdessen für Ihre weitere Verarbeitung eine "0" bei Zahlenfeldern oder eine leere Zeichenkette "" bei Textfeldern lieber ist, lesen Sie Felder einfach wie folgt aus:

strText = Me.Feldname & ""

intZahl = NZ(Me.Feldname)

Die erste Anweisung für Text-/Memofelder "addiert" zum Feldinhalt einfach eine leere Zeichenkette hinzu. Dabei nimmt Access keine Überprüfung auf "Null" vor, sondern liefert das Ergebnis des Ausdrucks, eine leere Zeichenkette, zurück. Die zweite Anweisung für Felder vom Datentyp "Zahl" nutzt die Access-Funktion "NZ()", die bei Feldern mit "Null"-Inhalten eine numerische "0" als Ergebnis liefert. Beide Anweisungen unterdrücken den erwähnten Laufzeitfehler und können aufwendigere Prüfungen der Art "If Not IsNull(Me.Feldname) Then ..." ersetzen.

 

Kennwort als Sternchen anzeigen

Versionen: Access 2003, 2002/XP, 2000 und 97

In Formularen verwenden Sie häufig Textfelder zur Kennworteingabe. Anstelle des Kennwortes im Klartext sollten die Felder jedoch aus Sicherheitsgründen Sternchen "*" anzeigen. Dazu können Sie ein spezielles Eingabeformat zuordnen:

  1. Öffnen Sie das Formular im Entwurfsmodus.
  2. Markieren Sie das betreffende Textfeld und wählen Sie das Menü ANSICHT-EIGENSCHAFTEN an.
  3. Aktivieren Sie die Eigenschaften "Eingabeformat" durch einen Klick in das Feld und klicken Sie auf die Schaltfläche mit den drei Punkten.
  4. Im "Eingabeformat-Assistenten" markieren Sie dann den Eintrag "Kennwort | *** " und klicken auf FERTIGSTELLEN.
  5. Speichern Sie die Änderungen und rufen Sie das Formular einmal auf. Sie werden feststellen, dass Kennwörter nun wie gewünscht als Sternchen angezeigt werden.

 

Daten von Access an Excel übergeben und verarbeiten

Versionen: Access/Excel 2003, 2002/XP, 2000 und 97

Von Access aus müssen Sie häufig Daten an Excel übergeben und dort anschließend automatisiert per Makro verarbeiten. Normalerweise exportieren Sie dazu eine Tabelle oder das Ergebnis einer Abfrage in eine Arbeitsmappe, öffnen sie und starten das Makro manuell. Dieser Aufwand lässt sich mit ein paar Zeilen VBA auf einen einzigen Mausklick reduzieren:

  1. Legen Sie zunächst an passender Stelle, beispielsweise in einem Formular "Auswertungen", eine Schaltfläche AN EXCEL (Name= "btnAnExcel") an.
  2. Stellen Sie die Eigenschaft "Beim Klicken" der Schaltfläche auf den Eintrag "[Ereignisprozedur]" und klicken Sie auf die Schaltfläche mit den drei Punkten, um die VBA-Entwicklungsumgebung zu öffnen.
  3. Wählen Sie das Menü EXTRAS-VERWEISE an und setzen Sie einen Verweis auf "Microsoft Excel x.0 Object Library", wobei "x" für "5" (Excel 97), "9" (Excel 2000), "10" (Excel 2002) oder "11" (Excel 2003) steht.
  4. Geben Sie im VBA-Editor die folgende Prozedur ein:

Private Sub btnAnExcel_Click()

Dim objXL As Excel.Application

Dim objXLWorkbook As Excel.Workbook

Dim R As Variant DoCmd.TransferSpreadsheet acExport, _

acSpreadsheetTypeExcel97, _

"Artikel", _

"Z:\Test\XLExport.xls", _

True

Set objXLWorkbook = _

GetObject("Z:\Test\XLExport.xls")

Set objXL = objXLWorkbook.Parent

objXL.Visible = True

objXLWorkbook.Windows(1).Activate

objXL.Run ("Main.xla!ExportTest1")

R = objXL.Run("Main.xla!ExportTest2", _

"Test1", "Test2")

MsgBox CStr(R)

objXLWorkbook.Save

objXL.Quit

End Sub

Speichern Sie die Änderungen und verlassen Sie die VBA-Entwicklungsumgebung wieder.

Über "DoCmd.TransferSpreadsheet" wird zunächst die gewünschte Tabelle oder Abfrage in eine Excel-Arbeitsmappe exportiert. Den Namen der Tabelle oder Abfrage definieren Sie über den 3. Parameter, Pfad und Dateiname der Excel-Arbeitsmappe über den 4. Parameter – diese Angaben müssen Sie in der gezeigten Ereignisprozedur entsprechend anpassen. Anschließend wird die Excel-Arbeitsmappe mit "GetObject" über Office Automation geöffnet, wobei Sie hier Pfad und Dateinamen der zu öffnenden Arbeitsmappe anpassen. Normalerweise erfolgt der Zugriff über Office Automation "unsichtbar", so dass für die Anzeige eventueller Excel-Meldungen weitere Anweisungen dafür sorgen müssen, dass Excel sichtbar wird (Visible = True) und die Arbeitsmappe aktiviert in den Vordergrund geholt wird (Windows(1).Activate). Über die "Run"-Methode von Excel wird dann beispielsweise eine Prozedur "ExportTest1" ohne Parameter und eine Funktion "ExportTest2" mit Parametern aufgerufen und die Rückmeldung der Funktion angezeigt. Anstelle dieser Aufrufe würden Sie die Makros mit oder ohne Parameter angeben, die für Ihren Export zur Weiterverarbeitung in Excel ausgeführt werden sollen. Die Anzeige der Rückmeldung der Funktion ist nur zu Demonstrationszwecken eingebaut und kann auf Wunsch auch entfallen. Der 1. Parameter der "Run"-Methode definiert das Projekt und den Namen der Prozedur bzw. der Funktion. In unserem Beispiel ist ein globales Add-In "Main.xla" vorhanden, das die Makros für solche Aufgaben enthält. Im Anschluss an den Namen können Sie bis zu 30 Parameter definieren, die von Access an die Funktion in Excel übergeben werden. Nachdem die Makros ihre Aufgabe erledigt haben, wird die Arbeitsmappe gespeichert (objXLWorkbook.Save) und Excel beendet (objXL.Quit).

 

So erhöhen Sie die Lesbarkeit Ihrer Access-Berichte

Versionen: Access 2003, 2002/XP, 2000 und 97

Viele Berichte geben die Datensätze zeilenweise als Liste aus und sind schwer zu lesen. Häufig müssen Sie sich mit einem Lineal oder einer ähnlichen "Lesehilfe" behelfen. Abhilfe schaffen Sie zum Beispiel mit einer Trennlinie, die Sie unter die Felder setzen, aber die benötigt Platz und bläht die Liste entsprechend auf.

Effizienter können Sie die Lesbarkeit von Listen erhöhen, indem Sie den Hintergrund der einzelnen Zeilen abwechselnd in Weiß/Grau oder Dunkelgrau/Hellgrau ausgeben. Und so wird's gemacht:

  1. Öffnen Sie den Bericht im Entwurfsmodus.
  2. Aktivieren Sie den Detailbereich, indem Sie auf den grauen Balken mit der Bezeichnung "Detailbereich" klicken.
  3. Wählen Sie das Menü Ansicht-Eigenschaften an.
  4. Stellen Sie die Eigenschaft "Beim Formatieren" auf "[Ereignisprozedur]" und klicken Sie auf die Schaltfläche mit den drei kleinen Punkten, um den VBA-Editor zu öffnen. Hier geben Sie folgende Anweisungen ein:

 

Private Sub Detail_Format(Cancel As Integer,

FormatCount As Integer)

  '      Weiß: 16777215
  '  Hellgrau: 12632256

  'Dunkelgrau: 8421504

   Const clngCol1 = 16777215 'Weiß

   Const clngCol2 = 12632256 'Hellgrau

   If Me.Detail.BackColor = clngCol1 Then 'Von Weiß auf Grau

      Me.Detail.BackColor = clngCol2

   Else 'Von Grau auf Weiß

       Me.Detail.BackColor = clngCol1

   End If

 End Sub
 

Diese Anweisungen sorgen dafür, dass die Hintergrundfarbe des Detailbereichs wechselweise auf Weiß oder Grau gesetzt wird. Wahlweise können Sie auch einen Wechsel von Hell- auf Dunkelgrau verwenden, indem Sie die Anweisungen für die Konstanten wie folgt ändern:

 

  Const clngCol1 = 8421504  'Dunkelgrau

  Const clngCol2 = 12632256 'Hellgrau

 

Lassen Sie am Ende den Bericht einmal anzeigen, um das Ergebnis zu prüfen.

 

Feldname gemäß Bezeichnungsfeld auslesen

Versionen: Access 2003, 2002/XP, 2000 und 97

Wenn einem Textfeld oder einem anderen Steuerelement (Liste, Kombinationsfeld, Kontrollkästchen und so weiter) automatisch ein Bezeichnungsfeld zugeordnet ist, wird es über die Auflistung "Controls" an das jeweilige Steuerelement gebunden. Sie können also mit wenig Aufwand über "Controls(0).Caption" die Bezeichnung für ein Textfeld oder jedes andere Steuerelement auslesen, das automatisch mit einem Bezeichnungsfeld angelegt wird:

strLabelCaption = Me.Textfeld.Controls(0).Caption

Der umgekehrte Weg, also das Ermitteln des Steurelementes zu einem Bezeichnungsfeld ist ebenfalls möglich:

strTextfeld= Me.Bezeichnungsfeld.Parent.Name

 

Statusberichte in Access komfortabel ausdrucken

Versionen: Access 2003, 2002/XP, 2000 und 97

Mit Access-Datenbanken verwalten Sie beispielsweise Aufgaben und Termine und können dort Aufgaben per Ja/Nein-Feld als "Erledigt" kennzeichnen. In Berichten soll der Status der Aufgaben jedoch nicht wie üblich als Kontrollkästchen, sondern mit einem grünen Häkchen für "Erledigt" oder einem roten Ausrufezeichen für "Offen" dargestellt werden. Dazu nutzen Sie ein zusätzliches Bezeichnungsfeld, das per VBA abhängig vom Status "Erledigt" eingestellt wird, um das gewünschte Zeichen in der entsprechenden Farbe darzustellen:

  • Stellen Sie die Eigenschaft "Sichtbar" für das Kontrollkästchen auf "Nein" und verschieben Sie es im Detailbereich an eine unauffällige Stelle.
  • Legen Sie an der Stelle des Kontrollkästchens ein Bezeichnungsfeld "lblStatus" an, für dessen Bezeichnung Sie ein Ausrufezeichen "!" eingeben und dessen Größe Sie auf "12 Punkt" einstellen.
  • Stellen Sie die Eigenschaft "Beim Formatieren" auf "[Ereignisprozedur]" ein und klicken Sie auf die Schaltfläche mit den drei Punkten, um den VBA-Editor zu öffnen.
  • Geben Sie die folgenden Anweisungen ein:

  With Me.lblStatus

  If Me.Erledigt = True Then 'Aufgabe erledigt

  .FontName = "Wingdings"

  .Caption = "ü"

  .ForeColor = QBColor(2)

   Else 'Aufgabe offen

  .FontName = "Arial"

  .Caption = "!"

  .ForeColor = QBColor(12)

  End If

  End With

  • "Erledigt" ersetzen Sie dabei durch den Namen des Ja/Nein-Feldes Ihres Berichtes.
  • Speichern Sie die Änderungen und lassen Sie den Bericht in der Seitenansicht anzeigen.

Für jeden Datensatz wird nun die Ereignisprozedur "Beim Formatieren" aufgerufen. Trifft die Bedingung "Me.Erledigt = True" zu, ist die Aufgabe erledigt und das Bezeichnungsfeld wird so eingestellt, dass es ein grünes Häkchen aus dem Zeichensatz "Wingdings" anzeigt. Andernfalls wird es so eingestellt, dass es ein rotes Ausrufezeichen aus dem Zeichensatz "Arial" anzeigt.

 

Spezielle Datensätze besonders auffällig darstellen

Versionen: Access 2003, 2002/XP und 2000

In einem Formular beispielsweise zur Artikelverwaltung machen Sie Artikel, die zukünftig nicht mehr gehandelt werden, mit einem Kontrollkästchen "Auslaufartikel" kenntlich. Trotzdem übersehen Sachbearbeiter dieses Kontrollkästchen gelegentlich und nehmen trotzdem Bestellungen auf, die dann nicht mehr ausgeliefert werden können. Um unmissverständlich auf solche Besonderheiten aufmerksam zu machen, gehen Sie wie folgt vor:

  • Öffnen Sie das betreffende Formular im Entwurfsmodus.
  • Markieren Sie alle Felder mit gedrückter Umschalt-Taste.
  • Wählen Sie das Menü Format-Bedingte Formatierung an.
  • Stellen Sie "Bedingung 1" auf "Ausdruck ist" und geben Sie daneben die folgende Formel ein:

[Auslaufartikel]=-1

Statt "Auslaufartikel" geben Sie den Namen des Kontrollkästchen in Ihrem Formular an, das die Kennzeichnung speichert.

  • Wählen Sie darunter als Textfarbe beispielsweise "Rot" und aktivieren Sie die Auszeichnung "Fett".
  • Klicken Sie auf Ok, um die Änderungen zu übernehmen.

In Zukunft werden alle Feldinhalte auffallend rot und fett dargestellt, wenn das Kontrollkästchen "Auslaufartikel" aktiviert ist.

Barcodes in Access per Steuerelement erzeugen

Versionen: Access 2003, 2002/XP, 2000 und 97

Barcodes lassen sich in Access jetzt auch ohne VBA-Programmierung erstellen. Das Barcode-OCX steht nach der automatischen Installation sofort als Steuerelement in Berichten und Formularen zur Verfügung. Sie benötigen nur drei Schritte und nach maximal 15 Minuten geben Sie bereits Ihre ersten Barcodes mit Access aus: Fügen Sie das Barcode-Steuerelement über das Menü EINFÜGEN-ACTIVEX-STEUERELEMENT in den Bericht ein und ziehen Sie es an die gewünschte Position.

Sie nehmen dann nur noch einige Einstellungen in den Eigenschaften vor und schon sind Sie fertig! Sie können nun den Bericht anzeigen und für jeden Datensatz erscheint der gewünschte individuell berechnete Barcode. Sie müssen zur Ausgabe des Barcodes nicht programmieren, aber natürlich lässt sich das Barcode-OCX auf Wunsch auch per VBA steuern, so dass Sie beispielsweise Position, Größe, Inhalt usw. noch flexibler steuern können. Weitere Informationen finden Sie unter:

Barcode-OCX für Access

Ausgabe von Nullwerten in Berichtsfeldern vermeiden

Versionen: Access 2003, 2002/XP, 2000 und 97

In Berichten wird bei numerischen Feldern, die keinen Inhalt haben, standardmäßig eine "0" ausgegeben. Sie möchten aber erreichen, dass diese Felder im Bericht einfach nur "leer" erscheinen, um die Übersicht zu erhöhen. Der Bericht "Rechnungen" in der Access-Datenbank "Nordwind" liefert dazu ein schönes Beispiel: Hier gibt es ein Feld "Rabatt", das bei Artikeln ohne Rabatt jeweils "0%" anzeigt. Durch den Einsatz benutzerdefinierter Formate lösen Sie das Problem. Benutzerdefinierte Formate umfassen vier jeweils durch Semikolon getrennte Abschnitte:

Abschnitt 1 für positive Zahlen

Abschnitt 2 für negative Zahlen

Abschnitt 3 für leere Werte

Abschnitt 4 für Null-Werte

Um nun beispielsweise die Ausgabe von "0%" im Bericht "Rechnungen" zu vermeiden, käme folgendes Format zum Einsatz:

#.###%;#.###%;"";""

Dieses Format sorgt bei positiven und negativen Werten für eine Ausgabe der Form "20%" oder "-45%". Bei Leer- oder Null-Werten wird hingegen eine leere Zeichenkette ausgegeben und "0%" somit vermieden. Analog dazu verwenden Sie nun in Ihren Berichten beispielsweise folgendes Format:

#.###,00;#.###,00;"";""

Mit diesem Format zeigen Sie positive und negative Werte mit Tausendertrenner und zwei Nachkommastellen an, Leer- und Null-Werte werden unterdrückt. Detaillierte Informationen zu benutzerdefinierten Formaten können Sie abrufen, indem Sie den Cursor in das Feld "Format" des Eigenschaftenfenster eines Textfeldes setzen und F1 drücken.

Access-Symbolleisten nach Neuinstallation wiederherstellen

Versionen: Access 2003, 2002/XP, 2000 und 97

Nach Systemproblemen oder einem Rechnerwechsel ist eine Neuinstallation von Access erforderlich. Dabei werden die Symbolleisten in Access auf den Standard zurückgesetzt. Es ist dann immer sehr mühsam, die Symbolleisten wieder in den gewohnten Zustand zu versetzen. Die Einstellungen für Symbolleistenanpassungen speichert Access in der Registry im folgenden Abschnitt:

HKEY_CURRENT_USER\

Software\

Microsoft\

Office\

X.x\

Access\

Settings\

CommandBars

"X.x" steht für die Access-Version: "11.0"= Access 2003, "10.0"= Access 2002/XP, "9.0"= Access 2000 und "8.0"= Access 97. Nach einer Neuinstallation ist dieser Abschnitt leer. Erst nach Anpassungen wird hier für jede geänderte Symbolleiste ein Eintrag angelegt, der Access Auskunft über den individuellen Aufbau gibt. Per Rechtsklick auf "CommandBars" und die Auswahl von EXPORTIEREN können Sie den kompletten Abschnitt in eine REG-Datei speichern. Nach einer Neuinstallation von Access öffnen Sie diese REG-Datei einfach per Doppelklick und beantworten die folgende Sicherheitsabfrage mit einem Klick auf JA. Die Einstellungen werden dann wieder in die Registry übertragen, die Symbolleistenanpassungen stehen ab dem nächsten Start von Access wieder zur Verfügung.

DOWNLOAD: PDF-Ausgabe für Access 2007

Versionen: Access 2007

Wenn Sie Ihre ersten "Gehversuche" mit Access 2007 machen, werden Sie früher oder später versuchen, einen Bericht im PDF-Format auszugeben. Entgegen den ersten Ankündigungen von Microsoft wird die entsprechende Funktion leider doch nicht standardmäßig mit Office 2007 ausgeliefert, aber sie ist glücklicherweise als kostenloser Download verfügbar:

  1. Klicken Sie auf das Office-Symbol und wählen Sie das Menü SPEICHERN UNTER-ADD-INS FÜR ANDERE DATEIFORMATE SUCHEN an.
  2. Nach wenigen Augenblicken öffnet sich die "Access-Hilfe", in der Sie auf den Link ADD-IN FÜR 2007 MICROSOFT OFFICE: "SPEICHERN UNTER - PDF ODER XPS" VON MICROSOFT klicken.
  3. Im Browser öffnet sich nun die Downloadseite der PDF-Erweiterung. Stellen Sie noch die Sprache auf "Deutsch" um und führen Sie die notwendige Gültigkeitsprüfung Ihrer Office-Installation durch. Anschließend können Sie den Download starten.
  4. Verlassen Sie Access sowie alle übrigen Office-Anwendungen, rufen Sie die heruntergeladene Datei auf und folgen Sie den Anweisungen des Assistenten.

Wurde die Installation erfolgreich abgeschlossen, steht Ihnen in Zukunft die Ausgabe von PDF-Dateien in allen Office 2007-Anwendungen zur Verfügung. Klicken Sie beispielsweise einen Bericht mit der rechten Maustaste an, rufen Sie das Kontetxmenü EXPORTIEREN auf und wählen Sie den Eintrag PDF ODER XPS aus.

 

Tipp: Parameter-Abfrage im Seriendruck mit Word und Access

Versionen: Access/Word 2003 und 2002/XP

Wenn Sie in Word 2003 oder 2002/XP einen Serienbrief mit Daten aus Access schreiben wollen, können Sie als Datenquelle nur noch Tabellen auswählen, während bei der Wahl der Datenquelle in früheren Versionen sowohl Tabellen als auch Abfragen zur Auswahl angeboten wurden. Das ist vor allem bei der Nutzung von Parameterabfragen ärgerlich. Statt jedoch den Umweg über eine Tabellenerstellungsabfrage zu gehen, nutzen Sie folgenden Trick, um auch wieder Abfragen als Datenquelle nutzen zu können: Wählen Sie zunächst in Word das Menü EXTRAS-OPTIONEN an und aktivieren Sie auf der Registerkarte "Allgemein" die Option KONVERTIERUNGEN BESTÄTIGEN. Wenn Sie nun in Schritt 3 von 6 des Aufgabenbereiches "Seriendruck" über DURCHSUCHEN bzw. ANDERE LISTE WÄHLEN die Datenbank ausgewählt haben, wird ein zusätzlicher Dialog "Datenquelle bestätigen" angezeigt. Aktivieren Sie hier den Eintrag "MS Access Datenbanken über DDE" und klicken Sie auf OK.

Im nachfolgenden Dialog werden nun auf der Registerkarte "Abfragen" alle vorhandenen Abfragen und damit auch Ihre Parameterabfragen angezeigt. Bitte beachten Sie, dass Sie nach Auswahl der Abfrage für die Eingabe der Parameterwerte eventuell erst einmal das Access-Symbol in der Windows-Taskleiste aktivieren müssen, damit der Dialog im Vordergrund angezeigt wird!

 

Benutzerdefinierte Kontextmenüs in Formularen nutzen

Versionen: Access 2003, 2002/XP, 2000 und 97

Über die Eigenschaft "Kontextmenüleiste" eines Formulars können Sie bekanntlich ein eigenes Kontextmenü anzeigen lassen. Wie aber wird das Kontextmenü überhaupt aufgebaut? Die Funktionen dazu sind etwas versteckt untergebracht:

  1. Klicken Sie mit der rechten Maustaste auf die Menüleiste oder eine Symbolleiste und wählen Sie ANPASSEN im Kontextmenü an.
  2. Klicken Sie auf NEU und legen Sie eine Symbolleiste "Mein Kontextmenü" an.
  3. Klicken Sie auf die Schaltfläche EIGENSCHAFTEN, ändern Sie die Einstellung "Typ" auf "Popup" und beantworten Sie den nachfolgenden Hinweis mit OK.
  4. Aktivieren Sie auf der Registerkarte "Symbolleisten" den Eintrag "Kontextmenü". Access zeigt daraufhin ein Fenster "Kontextmenü" mit allen definierten Kontextmenüs an. Am Ende finden Sie ein Dropdown-Menü "Anpassen", in dem alle benutzerdefinierten Kontextmenüs abgelegt werden. In das dort vorhandene neue Menü "Mein Kontextmenü" können Sie jetzt Befehle oder Makros ziehen, die später im Formular über das Kontextmenü abrufbar sein sollen.
  5. Ist das Menü fertig aufgebaut, klicken Sie im Dialog "Anpassen" auf die Schaltfläche SCHLIEßEN.

Nun muss nur noch die Formulareigenschaft "Kontextmenüleiste" auf "Mein Kontextmenü" eingestellt werden - fertig ist das eigene Kontextmenü.

Aktuelles Feld hervorheben

Versionen: Access 2007, 2003, 2002/XP und 2000

Wenn Sie bei der Bearbeitung eines Datensatzes beispielsweise durch ein Telefonat oder einen Kollegen gestört werden, fällt es anschließend insbesondere in umfangreichen Formularen nicht leicht, das zuletzt bearbeitete Feld zu finden. Mit Hilfe der bedingten Formatierung können Sie dafür sorgen, dass das aktuelle Feld auffällig formatiert dargestellt wird und sich so schnell finden lässt:

  1. Öffnen Sie das betreffende Formular im Entwurfsmodus.
  2. Markieren Sie mit gedrückter Umschalt-Taste alle gewünschten Textfelder, Listen und Kombinationsfelder.
  3. Wählen Sie in Access 2003, 2002/XP und 2000 das Menü FORMAT-BEDINGTE FORMATIERUNG an. In Access 2007 klicken Sie auf der Multifunktionsleiste "Entwurf" auf das Symbol BEDINGT.
  4. Stellen Sie "Bedingung 1" auf den Eintrag "Feld hat Fokus" ein.
  5. Legen Sie im Bereich daneben die gewünschte Formatierung fest, also beispielsweise eine rote, fette Schrift auf weißem Hintergrund und übernehmen Sie die Änderungen mit OK.

In Zukunft können Sie nun auf einen Blick erkennen, welches das aktuelle Eingabefeld ist - und das sogar in einem Endlosformular, denn auch dort gelten die Einstellungen der bedingten Formatierung!

Maus in Formularen sperren

Versionen: Access 2007, 2003, 2002/XP und 2000

Frage: Ich habe ein Eingabeformular entworfen, in dem ich die Maus sperren möchte. Man soll also nicht in ein Feld klicken, sondern sich nur mit den Pfeiltasten, Return oder Tab von einem Feld zum anderen bewegen können, um Daten einzugeben.

Antwort: Das Problem lässt sich nur lösen, indem Sie für jedes Feld, in das nicht mit der Maus gewechselt werden darf, zwei Ereignisprozeduren zuordnen. Stellen Sie dazu jeweils die Eigenschaften "Beim Klicken" und "Beim Doppelklicken" auf den Eintrag "[Ereignisprozedur]" ein und geben Sie die folgenden Anweisungen ein:

On Error Resume Next

Screen.PreviousControl.SetFocus

Diese Anweisungen sorgen dann dafür, dass bei einem Klick oder Doppelklick in das jeweilige Feld das zuvor aktivierte Feld wieder den Fokus erhält und somit ein Wechsel des Feldes per Maus unterbunden wird.

AutoKorrektur für ein einzelnes Steuerelement ausschalten

Versionen: Access 2007, 2003, 2002/XP, 2000 und 97

In den meisten Fällen sind Sie für die kleinen Korrekturen dankbar, die Access über die AutoKorrektur bei der Dateneingabe vornimmt. Aus "dre" wird beispielsweise "der" und "Herrn MÜller" ändert Access automatisch wieder in "Herrn Müller". Bekanntlich können Sie diese Funktion generell ausschalten, aber wussten Sie schon, dass sich die AutoKorrektur bei Bedarf auch ganz gezielt für einzelne Felder deaktivieren lässt?

Wechseln Sie dazu in den Entwurfsmodus des entsprechenden Formulars, klicken Sie das gewünschte Feld an und blenden Sie das Eigenschaftenfenster ein. Setzen Sie dann die Eigenschaft "AutoKorrektur zulassen" auf "Nein" und in Zukunft wird die AutoKorrektur nicht mehr bei Eingaben in dieses Feld eingreifen.

Datensätze aus defekten Tabellen retten

Versionen: Access 2007, 2003, 2002/XP, 2000 und 97

Wenn keine regelmäßige Komprimierung erfolgt, neigen Access-Datenbanken schnell zu Inkonsistenzen: Einzelne Objekte können nicht mehr geöffnet oder bearbeitet werden, beim Zugriff auf Daten hagelt es Fehlermeldungen oder Access stürzt komplett ab.

Trotzdem sind damit nicht unbedingt alle Datensätze verloren: Access speichert neue oder geänderte Datensätze nicht an festen Positionen innerhalb der MDB-/ACCDB-Datei, sondern fügt sie beim Anlegen oder nach einer Bearbeitung am Ende der Datei an. Die genaue Position wird als "Pointer" in einer Art "Inhaltsverzeichnis" festgehalten. Über dieses Inhaltsverzeichnis mit seinen Pointern erfolgt dann später der Zugriff. Sind einzelne Datensätze nicht mehr lesbar, ist das Inhaltsverzeichnis beschädigt worden und einzelne Pointer verweisen auf ungültige Speicherorte. Andere Pointer verweisen nach wie vor auf den korrekten Speicherort, so dass sich diese Datensätze durchaus retten lassen. Wenn in solchen Fällen keine Datensicherung vorliegt oder Sie seit der letzten Sicherung sehr viele Daten neu erfasst oder vorhandene Daten geändert haben, können Sie versuchen, Datensatz für Datensatz per BEARBEITEN-KOPIEREN und BEARBEITEN-AM ENDE EINFÜGEN (bis Access 2003) bzw. START-ZWISCHENABLAGE-KOPIEREN und START-ZWISCHENABLAGE-EINFÜGEN-AM ENDE EINFÜGEN (Access 2007) in eine neu angelegte Tabelle gleicher Struktur zu übertragen.

Prüfen auf laufende Word- oder Excel-Instanzen

Versionen: Access 2007, 2003, 2002/XP, 2000 und 97

Frage: Aus einer Datenbank sollen unsere Anwender zum Beispiel eine Adresse oder Preise in ein Word-Dokument oder ein Excel-Tabellenblatt übernehmen. Voraussetzung soll sein, dass sie ein bestimmtes Dokument oder eine bestimmte Arbeitsmappe bereits geöffnet haben, damit wir dort die Daten an entsprechenden Textmarken oder in benannte Bereiche einfügen können. Wie lässt sich 1. prüfen, ob Word oder Excel überhaupt laufen und wie können wir 2. feststellen, ob die benötigten Textmarken und Bereiche vorhanden sind?

Antwort: Um festzustellen, ob Word oder Excel laufen, nutzen Sie folgenden Mechanismus:

Dim objWord As Word.Application

On Error Resume Next

Set objWord = GetObject(, "Word.Application")

If Err <> 0 Or objWord Is Nothing Then 'Word läuft nicht

Dim objExcel As Excel.Application

On Error Resume Next

Set objExcel = GetObject(, "Excel.Application")

If Err <> 0 Or objExcel Is Nothing Then 'Excel läuft nicht

Beides setzt voraus, dass eine Referenz auf "Microsoft Word x.x Object Library" bzw. "Microsoft Excel x.x Object Library" gesetzt ist. "x.x" steht für "12.0" bei Word/Excel 2007, "11.0" bei Word/Excel 2003, "10.0" für Word/Excel 2002/XP, "9.0" für Word/Excel 2000 oder "8.0" für Word/Excel 97. "GetObject()" liefert eine Referenz auf eine laufende Instanz einer Anwendung. Ist die betreffende Anwendung nicht gestartet, kommt es zu einem Laufzeitfehler, der sich entsprechend abfangen lässt.

Das Vorhandensein einer bestimmten Textmarke in einem Word-Dokument können Sie dann wie folgt prüfen:

With objWord

  If .ActiveDocument.Bookmarks.Exists("Name") Then

    'Textmarke vorhanden

  Else

    'Textmarke nicht vorhanden

  End If

End With 

"Name" ersetzen Sie durch den Namen der zu prüfenden Textmarke. Im Gegensatz zu Word stellt Excel keine "Exists"-Funktion für Bereiche zur Verfügung. Hier hilft folgende Abfrage:

  Dim n As Name

  On Error Resume Next

  Set n = ActiveWorkbook.Names("Name")

  If Err <> 0 Or n Is Nothing Then 'Nicht vorhanden

"Name" ersetzen Sie durch den Namen des zu prüfenden Bereiches.

 
 
 
 
 

Home | Nach oben | Interessen | Favoriten | Fotoalbum | Über mich

Stand: 02.11.08