Von: access-weekly-html-request@smarttools.de im Auftrag von SmartTools Publishing [access-weekly-html-reply@smarttools.de]
Gesendet: Freitag, 18. November 2005 00:03
An: Access Weekly Abonnenten
Betreff: SmartTools Access Weekly vom 18.11.2005

Ausgabe vom 18. November 2005

 In dieser Ausgabe

Access-News & Downloads
Access-Tipp der Woche
Access-Helpline
Newsletter-Tipp
 Access-News & Downloads

Spotlight: Komfortable Urlaubsverwaltung mit Access

Mit dieser Datenbank haben Sie die Fehlzeiten in Ihrer Firma oder Abteilung optimal im Griff: Urlaub, Krankheit, Sonderurlaub und sonstige Abwesenheiten lassen sich für jeden Mitarbeiter komfortabel mit wenigen Mausklicks erfassen.

Wenn Sie mit dem einen oder anderen Detail nicht zufrieden sind, ändern Sie es einfach ab, denn Sie erhalten die Datenbank ungeschützt mit dem kompletten Sourcecode!

Die aktuelle Version 2.11 der beliebten Urlaubsdatenbank bietet unter anderem:

  • Voll Netzwerkfähigkeit durch Front- und Backend-Lösung. Im Mehrplatzbetrieb fallen keine weiteren Kosten an!
  • Unterstützung von halben Abwesenheitstagen
  • Druckfunktionen für übersichtliche Berichte
  • Ausführliches deutsches Handbuch
Die Urlaubs-Datenbank für Access 2003, 2002/XP, 2000 und 97 hat sich bereits hundertfach in der Praxis bewährt und ist nach der voll automatischen Installation sofort einsatzbereit:

Urlaubs-Datenbank für Access

Download-Tipp: Formular-Positionen sichern und abrufen

Formulare öffnet Access entweder immer zentriert oder an der letzten, im Entwurfsmodus mehr oder weniger zufällig gewählten Position. Oftmals sollen die Formulare einer Datenbank aber beim Starten genauso positioniert werden, wie sie beim Verlassen der Datenbank angeordnet waren.

Gleiches gilt für die Größe: Auch hier wäre es extrem arbeitssparend, wenn einmal eingestellte Formulargrößen wiederhergestellt werden könnten. Mit unserer kostenlosen VBA-Bibliothek stellen wir Ihnen eine Lösung zur Verfügung, mit der Sie eine solche Funktion universell in beliebige Datenbanken einbinden und nach geringen Anpassungen mit all Ihren Formularen verwenden können:

 VBA-Bibliothek kostenlos herunterladen!

News: Ereignis- und Fehlermeldungen entschlüsseln

Bei der Arbeit mit Access oder der Entwicklung von VBA-Lösungen werden Ihnen oftmals nur lapidare Fehlermeldungen mit mehrstelligen Fehlernummern angezeigt, die wenig Auskunft über die Ursache des Problems Auskunft geschweige denn Hinweise zur Lösung geben. Ähnlich verhält es mit vielen Einträgen in der Ereignisanzeige von Windows. Auf einer speziellen Website bietet Microsoft nun die Möglichkeit, gezielt weitere Informationen über eine Fehler- oder Ereignisnummer Details abrufen zu können:

Ereignis- und Fehlermeldungen entschlüsseln

 Access-Tipp der Woche

Symbole und Schaltflächen mit mehreren Funktionen belegen
Versionen: Access 2003, 2002/XP, 2000 und 97

Platz in den Symbolleisten von Access kann man erfahrungsgemäß nie genug haben. Die "Mehrfachbelegung" von Symbolen bietet daher eine interessante und Platz sparende Alternative: Über ein Symbol können themenverwandte Funktionen oder Makros abgerufen werden, wobei eine eventuell gedrückte Sondertaste wie Umschalt oder Strg bestimmt, welche Funktion ausgeführt werden soll.

Beispiel: In Formularen verwenden Sie regelmäßig formular- oder Auswahlbasierte Filter sowie Spezialfilter für komplexere Kriterien. Access hat dazu bereits zwei Symbole sowie einen "Ein-/Aus-Schalter" in der Symbolleiste "Formular" vorgesehen. Diese Funktionen können Sie auf ein Symbol reduzieren, über das die Filter mit gedrückten Sondertasten wie folgt gesteuert werden:

Normal-Klick: Formularbasierter Filter
Umschalt-Klick: Auswahlbasierter Filter
Strg-Klick: Spezialfilter
Umschalt+Strg-Klick: Filter Ein/Aus

Für die Erkennung einer gedrückten Sondertaste können Sie in VBA-Routinen eine API-Funktion nutzen: "GetKeyState(<WelcheTaste>)" gibt Auskunft darüber, ob eine bestimmte Taste, deren Index Sie als Parameter übergeben, gerade gedrückt ist oder nicht. Für die Sondertasten Umschalt und Strg verwenden Sie "16" oder "17" als Index, so dass eine Abfrage wie folgt aussieht:

'Umschalt+Strg?
If Abs(GetKeyState(16) < 0) And _
   Abs(GetKeyState(17) < 0) Then

  'Funktion 1

'Umschalt?
ElseIf Abs(GetKeyState(16) < 0) Then

  'Funktion 2

'Strg?
ElseIf Abs(GetKeyState(17) < 0) Then

  'Funktion 3

Keine Sondertaste gedrückt...

Else

  'Funktion 4

End If

Wie Sie sehen, können insgesamt vier Fälle unterschieden werden: Beide Sondertasten, nur die eine Sondertaste, nur die andere Sondertaste oder gar keine Sondertaste gedrückt. Die Alt-Taste können Sie übrigens nicht abfragen, da Office-Anwendungen bei einem Klick auf ein Symbol mit gedrückter Alt-Taste automatisch in den Modus "Symbolleiste anpassen" wechseln, um ein Verschieben/Kopiere des betreffenden Symbols zu vereinfachen.

Am eingangs erwähnten "Filter"-Beispiel möchten wir Ihnen im Folgenden zeigen, wie eine Mehrfachbelegung eingesetzt werden kann:

  1. Wechseln Sie im Datenbankfenster in den Bereich "Module".
  2. Klicken Sie auf die Schaltfläche Neu und speichern Sie das Modul unter dem Namen "modMehrfach" oder ähnlich.
  3. Geben Sie im allgemeinen Teil des Moduls unter "Deklarationen" folgende Zeile ein:
Declare Function GetKeyState Lib "user32"
(ByVal nVirtKey As Long) As Integer

Diese Anweisung bietet Ihnen die Möglichkeit, die API-Funktion wie eine "interne" VBA-Funktion einzusetzen.

  • Geben Sie nun die folgende Prozedur ein:
Function FilterMehrfach()

  'Umschalt+Strg?
  If Abs(GetKeyState(16) < 0) And _
     Abs(GetKeyState(17) < 0) Then
    DoCmd.RunCommand acCmdToggleFilter

  'Umschalt?
  ElseIf Abs(GetKeyState(16) < 0) Then
    DoCmd.RunCommand acCmdFilterBySelection

  'Strg?
  ElseIf Abs(GetKeyState(17) < 0) Then
    DoCmd.RunCommand acCmdAdvancedFilterSort

  'Keine Sondertaste gedrückt...
  Else
    DoCmd.RunCommand acCmdFilterByForm

  End If

End Function

Diese Funktion prüft beim Aufruf die Sondertasten: Sind Umschalt+Strg gedrückt, wird der aktuelle Filterstatus umgeschaltet. Bei gedrückter Umschalt-Taste setzen wir den Auswahlbasierten Filter, bei gedrückter Strg-Taste den Spezialfilter und bei einem Klick ohne Sondertaste den Formularbasierte Filter.

  • Schließen Sie nun das Modul und öffnen Sie ein beliebiges Formular.
  • Klicken Sie mit der rechten Maustaste auf die Symbolleiste "Formular", wählen Sie Anpassen im Kontextmenü an und wechseln Sie im dann folgenden "Anpassen"-Dialog auf die Registerkarte "Befehle".
  • Stellen Sie die Liste "Kategorien" auf "Datei" ein und ziehen Sie den Eintrag "Benutzerdefiniert" aus der Liste "Befehle" in die Symbolleiste "Formular" an die gewünschte Position.
  • Klicken Sie mit der rechten Maustaste auf das neue Symbol und nehmen Sie im Eigenschaften-Menü die gewünschten Einstellungen vor, indem Sie zum Beispiel "Name" auf "Filter" oder ähnlich setzen.
  • Klicken Sie mit der rechten Maustaste auf das neue Symbol, wählen Sie Eigenschaften im Kontextmenü an und setzen Sie die Eigenschaft "Bei Aktion" auf "=FilterMehrfach()".
  • Klicken Sie im "Anpassen"-Dialog auf Schliessen.
In Zukunft können Sie nun die verschiedenen Filter wie eingangs erläutert über ein einziges Symbol abrufen oder den Status umschalten. Nach einem Test können Sie die drei "Standardsymbole" von Access aus der Symbolleiste löschen und gewinnen so Platz für neue, eigene Symbole.

Dieselbe Technik können Sie natürlich nicht nur für Symbole, sondern auch für Schaltflächen in Formularen einsetzen. Tatsächlich handelt es sich ja nicht um eine echte Mehrfachbelegung, sondern um eine Prozedur, die beim Aufruf prüft, welche Sondertaste zurzeit gedrückt ist. Dementsprechend könnten Sie derartige Prozeduren auch Schaltflächen zuweisen und damit mehrere Funktionen Platz sparend in Formulare integrieren.

ANZEIGE 
Blitzschneller Zugriff auf Mustertexte und Textbausteine für Ihre Word-Dokumente und Outlook-Mails

Noch nie war es so einfach E-Mails, Briefe, Berichte, Angebote und beliebige andere Dokumente mit wenigen Mausklicks zu erstellen: Mit SmartTools QuickText Pro 2.0 können Sie auf immer wieder benötigte Musterbriefe, Vorlagen und Textbausteine jetzt noch schneller und flexibler zugreifen.

SmartTools QuickText Pro wird voll automatisch in Word integriert und steht Ihnen daher auch zum schnellen Verfassen Ihrer Outlook-Mails zur Verfügung, wenn Sie Word als E-Mail-Editor eingestellt haben.

Das genial einfache und innovative Konzept hat sich bereits bei vielen tausend Anwendern in der Praxis bewährt:

  • Jeder Mustertext ist ein eigenes Dokument mit allen Formatierungen, Grafiken und Tabellen, die Word zu bieten hat. Öffnen, ändern, speichern - einfacher kann die Bearbeitung von Textbausteinen auch für unerfahrene Anwender nicht sein.
  • Sie haben auch größere Mengen von Mustertexten perfekt im Griff, denn Sie legen die Dateien einfach in verschiedenen Unterverzeichnissen ab, die SmartTools QuickText Pro Ihnen dann voll automatisch als Kategorien im Menü anbietet (auch über mehrere Ebenen!).
  • Nutzen Sie Ihre Mustertexte ganz einfach über das Netzwerk auch mit mehreren Anwendern. Alle Dokumente werden an einer Stelle zentral abgelegt.
Nutzen Sie unseren Aktionspreis für Access Weekly-Abonnenten mit zurzeit über 25% Rabatt:

SmartTools QuickText Pro


 Access-Helpline

Haben Sie Fragen zu Access 2003, 2002/XP, 2000 oder 97? Dann wenden Sie sich mit einer genauen Problembeschreibung (bitte keine Datenbanken schicken!) an:

access-helpline@smarttools.de

Unser Redaktionsteam wählt in jeder Ausgabe eine oder mehrere Fragen aus und beantwortet Sie an dieser Stelle im Newsletter.

DoCmd.Hourglass-Problem lösen
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Ich habe ein Problem mit der Sanduhr. Ich arbeite mit einem Access-Projekt (.adp) das zu einer SQL-Datenbank verbunden ist. In einem Formular löse ich per Schaltfläche über das Ereignis "Beim Klicken" eine Ereignisprozedur aus. In der Prozedur werden dann per cmd.Execute "Gespeicherte Prozeduren" ausgeführt. Da sich dieser Befehl in einer Schleife befindet, kann die Ausführung je nach dem ziemlich lange dauern. Darum möchte ich während der Ausführung die Sanduhr einblenden. Die Anweisung "DoCmd.Hourglass True" funktioniert aber in diesem Fall nicht. Interessant ist, dass es im Entwurfsmodus (schrittweise Ausführung) funktioniert. Können Sie mir weiterhelfen?
F. Renier

 ANTWORT:  Zunächst eine generelle Anmerkung: Werden "DoCmd.Hourglass True" oder "DoCmd.Hourglass False" eingesetzt, muss die nächste Anweisung ein "DoEvents" sein, damit Access bzw. das System die Gelegenheit haben, den Mauszeiger umzustellen und die Anzeige zu aktualisieren. Es kann dann aber trotzdem noch passieren, dass der Mauszeiger wieder als normaler Pfeil erscheint: Der Mauszeiger wird vom System im Kontext eines Fensters verwaltet und nur innerhalb des jeweiligen Fensters als Sanduhr angezeigt. Andernfalls würde der Mauszeiger bei einer Verschiebung vor das Fenster einer anderen Anwendung ebenfalls als Sanduhr angezeigt werden und somit einen falschen Status widerspiegeln - die andere Anwendung befindet sich ja nicht in einem "Warten"-Modus. Darüber hinaus ist es möglich, den Mauszeiger systemweit zu setzen oder zurückzusetzen - dies könnte durchaus im Rahmen der Ausführung von "cmd.Excecute" passieren. Sie können versuchen, hier "dazwischenzufunken", indem Sie den Mauszeiger per API-Calls global setzen. Geben Sie dazu in einem neuen oder einem vorhandenen Modul die folgenden Deklarationen ein:

Public prevCursor As Long
Public myCursor As Long

Public Const IDC_HOURGLASS = 32514&

Public Declare Function LoadCursor Lib "user32" _
       Alias "LoadCursorA" _
       (ByVal hInstance As Long, _
       ByVal lpCursorName As Any) As Long
Public Declare Function SetCursor Lib "user32" _
       (ByVal hCursor As Long) As Long

Fügen Sie dann am Anfang Ihrer Ereignisprozedur folgende Anweisung ein:

myCursor = LoadCursor(0, IDC_HOURGLASS)
prevCursor = SetCursor(myCursor)

Diese Anweisungen speichern den aktuellen Mauszeiger und setzen die Sanduhr als neuen Mauszeiger. Am Ende der Ereignisprozedur geben Sie folgende Anweisung ein:

SetCursor prevCursor

Dadurch wird der Mauszeiger wieder auf den vorherigen Zustand zurückgesetzt.

Steuerung externer Programme für Access 2003
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Ich habe Ihr kostenloses Tool "VBA-Bibliothek: Externe Programme" heruntergeladen und mit Access 2002 im Einsatz. Können Sie mir bitte mitteilen ob "ExecProg für Access 2002" auch unter Access 2003 läuft oder ob es dafür ein eine spezielle Lösung gibt?
Diverse Anfragen

 ANTWORT:  Sie können die Funktionen dieser VBA-Bibliothek unverändert auch in Access 2003 verwenden, es werden keine versionsspezifischen Features oder ähnliches genutzt. Für alle, die den Download noch nicht kennen: Sie finden die kostenlose Lösung samt ausführlicher Dokumentation unter

VBA-Bibliothek: Externe Programme

ANZEIGE 
Das Komplettpaket: Praxistipps, fertige Lösungen und hunderte von ungeschützten Datenbanken auf 3 CD's

Mit dem großen Access-Berater-Gesamtarchiv können Sie alle drei bisher erschienenen Archiv-CD-ROM's jetzt zu einem besonders günstigen Sonderpreis erwerben. Sie erhalten:

  • Über 4.500 Seiten mit neuen Tipps, Praxisinformationen, fertigen Lösungen und VBA-Routinen für alle Access-Versionen
  • Mehr als 350 MB mit offenen Access-Datenbanken, Beispielen und Access-Tools
  • Alle Themen im Volltext mit Abbildungen und Beispieldatenbanken.
  • Schneller Zugriff per Mausklick direkt aus Access.
  • Komfortable Suche im Volltext, nach einem Index oder in der übersichtlichen Baumstruktur
Jetzt zum Sonderpreis auf 3 CD-ROM's bei SmartTools Publishing:

Access-Berater-Gesamtarchiv


Nachtrag: Anzeigen von Webseiten in einem Formular
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Ich habe Ihren Beitrag zum Anzeigen von Webseiten in einem Formular ausprobiert. Die Anzeige der ersten Website mit der Schaltfläche "Seite laden" funktioniert. Sobald ich jedoch eine der beiden Schaltflächen "Zurück" oder "Vorwärts" anklicke, wird folgender Fehler angezeigt: [...]
W. Burtscher

 ANTWORT:  Da Sie noch keine andere Seite ausgehend von der ersten Seite besucht haben, kann auch nicht zu irgendeiner Seite zurückgegangen und folglich auch zu keiner anderen Seite vorgegangen werden. Setzen Sie ein "On Error Resume Next" vor die Anweisungen der Ereignisprozeduren dieser Schaltflächen, dann werden bei einem irrtümlichen Anklicken keine Fehlermeldungen angezeigt:

Private Sub_btnBack_Click

  On Error Resume Next
  Me.WebCtrl.GoBack

End Sub

Private Sub_btnForward_Click

  On Error Resume Next
  Me.WebCtrl.GoForward

End Sub

 Newsletter-Tipp

Outlook-Tipps kostenlos per E-Mail

SmartTools Outlook Weekly bietet jede Woche Tipps, aktuelle Infos und Download-Links für Outlook 2003, 2002/XP, 2000 und 97/98:

  • Professionelle Tipps zum effektiveren Arbeiten
  • Undokumentierte Parameter
  • Fertige VBA-Prozeduren für neue Funktionen
  • Aktuelle Informationen über Sicherheitslücken, Bugs und Patches
  • Download-Links zu Outlook-Erweiterungen
  • Helpline für Ihre Fragen zu Outlook
Klicken Sie hier für Ihr kostenloses Abo!

 Abonnementverwaltung

Um SmartTools Access Weekly abzubestellen, senden Sie einfach das Kommando "unsubscribe" an die Adresse

access-weekly-html-request@smarttools.de

Bitte beachten Sie, daß das Kommando im Nachrichtentext stehen muß (nicht im Betreff) und Sie keine Mail im HTML-Format senden dürfen. Weitere Informationen zur Verwaltung der Liste erhalten Sie mit dem Kommando "help" an dieselbe Adresse.

Copyright © 2005 SmartTools Publishing Thomas Tai
Luisenstrasse 52, 49565 Bramsche
Telefon: 05461/91052, Fax: 05461/2609
E-Mail: access-weekly@smarttools.de
Internet: http://www.smarttools.de/