|
|
|
|

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:
- Oeffnen Sie das gewuenschte
Formular im Entwurfsmodus, waehlen Sie das Menue
BEARBEITEN-FORMULAR AUSWAEHLEN an und blenden Sie das
Eigenschaftenfenster ein.
- Weisen Sie dem Ereignis
"Beim Oeffnen" die folgende Prozedur zu:
Private Sub Form_Open(Cancel As Integer)
Me.OrderBy=""
End Sub
- 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:
- Benennen Sie die
Ursprungstabelle (hier "Kunden") in der 1. Kopie der Datenbank
in "Kunden/Alt" um.
- 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".
- 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).
- 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.
- 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.
- Wenn Sie die Abfrage
ausführen lassen, werden genau die Datensätze aufgelistet, die
noch nicht in der Tabelle "Kunden/Alt" vorhanden sind.
- 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:
- Erstellen Sie zunächst
eine normale Auswahl-Abfrage, die zum Beispiel das Feld "KundenNr"
und das Feld "KundenName" oder "Artikelnummer" und
"Artikelbezeichnung" selektiert.
- Stellen Sie die Sortierung
für 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.
- Öffnen Sie die Tabelle, in
der die Auswahl eingesetzt werden soll, im Entwurfsmodus.
- Markieren Sie das Feld für
die Auswahl, also beispielsweise "KundenNr" oder
"Artikelnummer".
- 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:
- Wählen Sie das Menü
DATEI-EXTERNE DATEN-TABELLEN VERKNÜPFEN an.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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:
- Lassen Sie die Feldliste
über F8 anzeigen. Access markiert daraufhin automatisch den
ersten Eintrag in der Liste.
- Mit den Cursortasten
können Sie nun in der Liste navigieren.
- 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:
- Ö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.
- 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:
- Klicken Sie mit der rechten Maustaste auf eine Symbolleiste
und wählen Sie das Kontextmenü ANPASSEN an.
- Wechseln Sie auf die Registerkarte "Symbolleisten".
- Markieren Sie in der Liste SYMBOLLEISTEN die gewünschte
Symbolleiste (z.B. "Formularansicht").
- Klicken Sie auf die Schaltfläche EIGENSCHAFTEN.
- Deaktivieren Sie die Option VERSCHIEBEN ZULASSEN.
- Ü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:
- 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.
- Wechseln Sie hier in den Ordner "Startmenü\Programme\AutoStart"
jeweils per Doppelklick.
- Öffnen Sie ein weiteres Explorer-Fenster
und ordnen Sie es neben Explorer mit dem "AutoStart"-Verzeichnis an.
- Wechseln Sie in den Ordner der ersten Datenbank, die Sie automatisch
öffnen wollen.
- Markieren Sie die entsprechende Datei und drücken Sie Strg+C.
- 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:
- Öffnen Sie das Formular im Entwurfsmodus.
- Markieren Sie das betreffende Textfeld und wählen Sie das
Menü ANSICHT-EIGENSCHAFTEN an.
- Aktivieren Sie die Eigenschaften "Eingabeformat" durch einen
Klick in das Feld und klicken Sie auf die Schaltfläche mit den
drei Punkten.
- Im "Eingabeformat-Assistenten" markieren Sie dann den
Eintrag "Kennwort | *** " und klicken auf FERTIGSTELLEN.
- 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:
- Legen Sie zunächst an
passender Stelle, beispielsweise in einem Formular
"Auswertungen", eine Schaltfläche AN EXCEL (Name= "btnAnExcel")
an.
- 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.
- 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.
- 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:
- Öffnen Sie den Bericht im Entwurfsmodus.
- Aktivieren Sie den Detailbereich, indem Sie auf den grauen
Balken mit der Bezeichnung "Detailbereich" klicken.
- Wählen Sie das Menü Ansicht-Eigenschaften an.
- 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:
-
Klicken Sie auf das Office-Symbol und wählen Sie das Menü
SPEICHERN UNTER-ADD-INS FÜR ANDERE DATEIFORMATE SUCHEN an.
-
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.
-
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.
-
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:
-
Klicken Sie mit der rechten Maustaste auf die Menüleiste oder
eine Symbolleiste und wählen Sie ANPASSEN im Kontextmenü an.
-
Klicken Sie auf NEU und legen Sie eine Symbolleiste "Mein
Kontextmenü" an.
-
Klicken Sie auf die Schaltfläche EIGENSCHAFTEN, ändern Sie die
Einstellung "Typ" auf "Popup" und beantworten Sie den
nachfolgenden Hinweis mit OK.
-
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.
-
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:
-
Öffnen Sie das betreffende Formular im
Entwurfsmodus.
-
Markieren Sie mit gedrückter
Umschalt-Taste
alle gewünschten Textfelder, Listen und Kombinationsfelder.
-
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.
-
Stellen Sie "Bedingung 1" auf den Eintrag "Feld
hat Fokus" ein.
-
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.
|
|
|
|
|
|
|
| |
|