Von: access-weekly-html-request@cgn.smarttools.de im Auftrag von SmartTools Publishing [access-weekly-html-reply@smarttools.de]
Gesendet: Freitag, 17. Juni 2005 04:42
An: Access Weekly Abonnenten
Betreff: SmartTools Access Weekly vom 17.6.2005

Ausgabe vom 17. Juni 2005

 In dieser Ausgabe

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

Spotlight: Über 350 MB offene Datenbanken und mehr als 3.000 Seiten Access-Tipps auf 3 CD-ROM's

Mit dem großen Access-Berater-Gesamtarchiv können Sie die drei erfolgreichsten Archiv-CD-ROM's jetzt zu einem besonders günstigen Sonderpreis mit 30% Rabatt erwerben. Sie erhalten:

  • Über 3.000 Seiten mit neuen Tipps, Praxisinformationen, fertigen Lösungen und VBA-Routinen zu Access 2003, 2002/XP, 2000 und 97
  • Mehr als 350 MB mit fertigen Access-Datenbanken, Beispielen und Access-Tools
  • Alle Themen im Volltext mit Abbildungen und Beispieldatenbanken unter einer einzigen Oberfläche
  • Schneller Zugriff auf alle drei Archive per Mausklick direkt aus Microsoft Access
  • Durchsuchen Sie alle drei Archive gemeinsam im Volltext oder nach einem Index
Nutzen Sie den günstigen Paketpreis mit über 30% Rabatt auf die Einzelverkaufspreise:

Access-Berater-Gesamtarchiv

Download-Tipp: Die wichtigsten Tipps rund um DAO- und ADO-Recordsets

Beim Schreiben von VBA-Prozeduren für Ihre Access-Datenbanken, werden Sie immer auf das "Recordset"-Objekt stoßen. Ein Recordset ist das wichtigste Hilfsmittel für Sie, um Datensätze per VBA hinzuzufügen, zu suchen, zu ändern und zu löschen. In unserem kostenlosen Download Beitrag finden Sie alle wichtigen Informationen, um Recordsets sofort in Ihren eigenen Datenbanken zu nutzen. Besonders interessant dabei: Die praxisnahen Beispiele werden für beide aktuellen Datenzugriffsmethoden DAO (bis Access 97) und ADO (Access 2000, 2002/XP und 2003) präsentiert, so dass Ihnen die Informationen auch beim Umschreiben Ihrer vorhandenen Prozeduren eine wichtige Hilfe sein werden:

 Tipps rund um DAO- und ADO-Recordsets

Techinfo: Berichte mit Word und HTML aufwerten
Versionen: Access 2003, 2002/XP und 2000

Häufig möchten Sie Berichte aufwendiger gestalten, als es mit den Standard-Funktionen von Access möglich ist. Eine mögliche Lösung ist die Ausgabe des Berichtes über eigene VBA-Routine nach Word, wobei individuelle Formatierungen per CSS (Cascading Style Sheets) zugeordnet werden können. Wie das im Einzelnen funktioniert, verrät die Techinfo unter der folgenden Adresse:

Berichte mit Word und HTML aufwerten

Der Autor zeigt nicht nur die Umsetzung in HTML/CSS, gleichzeitig kann das Ergebnis als RTF-Dokument ausgegeben und so plattformunabhängig auch an Empfänger ohne Windows/Office weitergegeben werden.

 Access-Tipp der Woche

Mausrad in Formularen unterdrücken
Versionen: Access 2003, 2002/XP, 2000 und 97

Wird bei der Arbeit in Formularen aus Versehen das Mausrad betätigen, führt Access unkontrollierbare Datensatzwechsel aus. Neue oder geänderte Datensätze können dadurch unvollständig gespeichert werden oder Ihre Eingaben und Änderungen erfolgen in falschen Datensätzen. Leider lässt sich die Abfrage des Mausrades in Access weder ausschalten noch mit den vorhandenen Funktionen oder über Ereignisprozeduren unterdrücken, so dass viele Entwickler und Datenbank-Administratoren die Mausrad-Funktion in letzter Konsequenz entnervt über die Systemsteuerung ausschalten und es somit in Windows und allen Windows-Anwendungen deaktivieren.

Die Alternative besteht darin, die für ein Access-Formular ausgelösten Ereignisse auf Systemebene zu filtern und das Ereignis "Mausrad" nur für das betreffende Formular zu eliminieren. In Windows, anderen Anwendungen oder auch anderen Access-Fenstern kann das Mausrad dann trotzdem wie gewohnt genutzt werden. Dazu ist eine Funktion notwendig, die quasi zwischen das Formular und das Betriebssystem geschaltet wird. Dieser Funktion werden zunächst alle von Windows an das Formular gesendeten Ereignisse übergeben; sie prüft sie und reagiert entsprechend, indem sie das Ereignis "Mausrad" nicht an das Formular weitergibt, während alle anderen Ereignisse den Filter unverändert passieren.

Grundsätzlich könnte eine solche Filter-Funktion in VBA geschrieben und über eine API-Funktion initialisiert werden. Da diese Filter-Funktion aber kontinuierlich von Windows beispielsweise bei Mausbewegungen oder Tastendrücken aufgerufen wird, muss sie sich immer an der gleichen Speicheradresse befinden. Das ist im VBA-Speichermodell erst ab VBA 6.0/Access 2000 einigermaßen zuverlässig der Fall. In früheren VBA-Versionen können Funktionen im Speicher zum Beispiel durch Aufräumaktionen im Zeichenkettenbereich ("Garbage Collection") wandern, so dass unter Umständen mit einem Absturz von Access zu rechnen ist. Außerdem steht eine Funktion "AddressOf" zur Ermittlung der Adresse einer Variablen, Prozedur oder Funktion erst ab VBA 6.0 zur Verfügung. Aber auch mit VBA 6.0 beziehungsweise Access 2003/2002/2000 ist der Einsatz einer Filter-Funktion für Ereignisse nicht ganz unproblematisch: Wenn die VBA-Entwicklungsumgebung geöffnet wird, läuft eine rein in VBA realisierte Lösung nicht mehr verlässlich und kann schlimmstenfalls auch zum Absturz von Access führen.

Um sicherzustellen, dass die Filter-Funktion sich immer an einer festen Adresse befindet und korrekt aufgerufen werden kann, empfiehlt sich daher die Auslagerung als Klasse in eine externe DLL, die dann über das Menü Extras-Verweise referenziert wird. Diese DLL wird unabhängig von Access in einen geschützten Speicherbereich geladen und verbleibt unberührt von den Aktionen in Access immer an einer festen Speicheradresse. Microsoft beschreibt eine solche Lösung im Knowledge Base-Artikel "Q278379". Da aber die wenigstens Access-Anwender in der Lage sind, eine solche DLL zu erstellen, haben wir sie für Sie vorbereitet. Sie können Sie unter der folgenden Adresse herunterladen:

 Kostenlose DLL zum Abfangen von MouseWheel-Aktionen

Um diese DLL beziehungsweise die darauf basierende Lösung zur Unterdrückung des Mausrades in Ihren Datenbanken zu nutzen, gehen Sie wie folgt vor:

  1. Kopieren Sie die Datei "STP_MouseWheel.dll" nach dem Download und der anschließenden Installation in Ihr Windows-Systemverzeichnis.
  2. Starten Sie Access und öffnen Sie die Datenbank mit den Formularen, in denen das Mausrad unterdrückt werden soll.
  3. Öffnen Sie das gewünschte Formular im Entwurfsmodus und wählen Sie das Menü Ansicht-Code an, um den VBA-Editor zu starten.
  4. Wählen Sie das Menü Extras-Verweise an, klicken Sie auf die Schaltfläche Durchsuchen, stellen Sie als "Dateityp" den Eintrag "Ausführbare Dateien (*.EXE, .DLL)" bzw. "Klassenbibliotheken (*.OLB, *.TLB, *.DLL)" ein, lokalisieren Sie die Datei "STP_MouseWheel.dll" im Windows-Systemverzeichnis und übernehmen Sie sie per Doppelklick.
  5. In der Liste "Verfügbare Referenzen" finden Sie nun einen aktivierten Eintrag "SmartTools MouseWheel DLL". Übernehmen Sie die Einbindung mit einem Klick auf die Schaltfläche Ok.
  6. Geben Sie im allgemeinen Teil des Formularmoduls die folgende Deklaration und die folgende Prozedur ein:
Private WithEvents clsMouseWheel As MouseWheel.CMouseWheel

Private Sub clsMouseWheel_MouseWheel(Cancel As Integer)
  Beep
  Cancel = True
End Sub

  • Verlassen Sie nun zunächst die VBA-Entwicklungsumgebung wieder und wählen Sie im Formularentwurf das Menü Ansicht-Eigenschaften an, um das Eigenschaftenfenster für das Formular anzeigen zu lassen.
  • Stellen Sie die Eigenschaft "Bei Laden" auf den Eintrag "[Ereignisprozedur]", klicken Sie auf die Schaltfläche mit den drei Punkten und geben Sie die folgenden Anweisungen im VBA-Editor ein:
Private Sub Form_Load()

  Set clsMouseWheel = New MouseWheel.CMouseWheel
  Set clsMouseWheel.Form = Me
  clsMouseWheel.SubClassHookForm

End Sub

Wenn Sie in "Form_Load" bereits eigene Anweisungen untergebracht haben, setzen Sie die drei oben gezeigten Zeilen an den Anfang der Ereignisprozedur.

  • Stellen Sie die Eigenschaft "Bei Schließen" auf den Eintrag "[Ereignisprozedur]" ein, klicken Sie auf die Schaltfläche mit den drei Punkten und geben Sie die folgenden Anweisungen im VBA-Editor ein:
Private Sub Form_Close()

  clsMouseWheel.SubClassUnHookForm
  Set clsMouseWheel.Form = Nothing
  Set clsMouseWheel = Nothing

End Sub

Wenn Sie in "Form_Close" bereits eigene Anweisungen untergebracht haben, setzen Sie die drei oben gezeigten Zeilen an das Ende der Ereignisprozedur.

Wenn Sie nun das Formular über Ansicht-Formularmodus anzeigen lassen und das Mausrad betätigen, hören Sie lediglich einen akustischen Hinweis, aber es werden keine Datensatzwechsel mehr ausgeführt.

Und so funktioniert es: In der DLL befindet sich die Funktion "WindowProc", die für die Filterung zuständig ist. Zwei weitere Funktionen "SubClassHookForm" und "SubClassUnHookForm" aktivieren die Filter-Funktion beim Laden des Formulars bzw. heben diesen Zustand wieder auf. Ist die Funktion aktiviert, schickt das Betriebssystem alle Ereignisse für das Formular zunächst an die Funktion "WindowProc" in der DLL. Diese prüft auf das Ereignis "WM_MouseWheel". Tritt es auf, wird die benutzerdefinierte Ereignisprozedur "clsMouseWheel.MouseWheel" im Formular aufgerufen. Über den Parameter "Cancel" beziehungsweise die Zuweisung "= True" veranlassen wir dort nach einem akustischen Hinweis, dass das Ereignis unterdrückt wird. Alternativ können Sie hier auch eine Meldung wie "Mausrad wird nicht unterstützt..." anzeigen lassen oder "Beep" weglassen, um das Ereignis stillschweigend unter den Tisch fallen zu lassen.

ANZEIGE 
Musterbriefe und Textbausteine jetzt endlich komfortabel verwalten

SmartTools QuickText Pro bietet eine innovative und genial einfache Lösung, damit Sie auf immer wieder benötigte Musterbriefe, Vorlagen und Textabschnitte in Zukunft schnell und ohne Umwege zugreifen können:

  • Sie speichern alle Texte, die Sie immer wieder benötigen, in einem beliebigen Verzeichnis auf Ihrer Festplatte oder auf einem im Team genutzten Netzwerk-Server.
  • Wenn Sie bei der Arbeit an einem Dokument auf einen der Mustertexte zugreifen möchten, klicken Sie die gewünschte Stelle mit der rechten Maustaste an und rufen das neue Kontextmenü von SmartTools QuickText Pro auf.
  • An der Cursorposition erscheint daraufhin eine Liste Ihrer Mustertexte, die automatisch aus den Dateien in dem von Ihnen festgelegten QuickText-Verzeichnis zusammengestellt wird. Sie markieren nur noch einen der Einträge und schon erscheint der entsprechende Text an der aktuellen Cursorposition.
Nutzen Sie noch den günstigen Aktionspreis:

SmartTools QuickText Pro für Word


 Access-Helpline

Haben Sie Fragen zu Access 2003, 2002/XP, 2000 und 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 Fragen aus und beantwortet Sie an dieser Stelle im Newsletter.

Leere Datenbank per VBA anlegen
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Ich möchte per VBA aus einer Access 2000-Datenbank heraus eine neue, leere Datenbank anlegen, um darin Tabellen zu speichern. Können Sie mir die Befehlszeile in VBA mitteilen? Danke!
T. Schöll

 ANTWORT:  Um per VBA eine neue, leere Datenbank anzulegen, setzen Sie die Funktion "CreateDatabase()" wie folgt ein:

  1. Wechseln Sie mit Alt+F11 in die VBA-Entwicklungsumgebung.
  2. Wählen Sie das Menü Extras-Verweise an.
  3. Setzen Sie eine Referenz auf "Microsoft DAO Object Library 3.6x" (Access 2003, 2002/XP und 2000) bzw. "Microsoft DAO Object Library 3.5x" (Access 97).
  4. Nehmen Sie in Ihrer VBA-Routine die folgende Deklaration bzw. die folgenden Anweisungen auf:
Dim db As DAO.Database

Set db = DAO.CreateDatabase("X:\Testdatenbank.mdb", _
                           dbLangGeneral)
  '.....
'Hier Ihre Anweisungen...
'.....
db.Close

Der erste Parameter spezifiziert Laufwerk, Pfad und Dateiname der anzulegenden Datenbank. Über den zweiten Parameter legen Sie das Gebietsschema bzw. die Sprache fest: "dbLangGeneral" steht hier für den Einsatz im europäischen Bereich. Weitere mögliche Konstanten für den Einsatz in anderen Regionen können Sie in Erfahrung bringen, indem Sie den Cursor auf die Anweisung "CreateDatabase" setzen und F1 drücken. Ein dritter, optionaler Parameter erlaubt die Angabe einer Datenbank-/Jet Engine-Version. Wenn Sie beispielsweise aus Ihrem Access 2000 heraus eine Datenbank anlegen möchten, die auch mit Access 97 genutzt werden kann, geben Sie als dritten Parameter "dbVersion30" an. Dadurch wird dann eine zur Jet Engine 3.x kompatible Datenbank angelegt. Fehlt dieser Parameter, wird die neue Datenbank in der Version der aktuellen Datenbank, in Ihrem Fall also Jet Engine 4.x-kompatibel, erstellt.

Access-Datenbanken auf einem PDA nutzen
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Ich habe nun einen PDA (Windows Mobile 2003) und würde darauf gerne Teile meiner Access 97-Daten verwalten. Leider finde ich so gut wie keine Infos zu diesem Thema. Es gab wohl mal ein Pocket Access, aber auch dazu ist nichts mehr zu finden; auf dem PDA gibt es auch nur Miniversionen von Word und Excel. Wie könnte ich also Access-Forms auf einem PDA nutzen, die zum Beispiel auf ein Replikat zugreifen?
F. Weber

 ANTWORT:  Sämtliche Lösungen zu diesem Thema (Pocket Access, ActiveSync usw.) konvertieren beziehungsweise synchronisieren immer nur die Inhalte von Tabellen, keine kompletten Datenbanken und damit auch keine Formulare. An eine Replikation wie sie beispielsweise zwischen Laptop und Desktop-PC möglich ist, ist schon gar nicht zu denken. Eine solche Lösung setzt eine voll lauffähige Access-Installation auf allen beteiligten Geräten voraus. In der Regel geht es bei solchen Vorhaben wie dem Ihren darum, Adressen, Termine oder Aufgaben zu synchronisieren. Es empfiehlt sich, diese Aufgaben per Outlook zu erledigen, da es davon entsprechende Vollversionen für mobile Geräte gibt. Ihre Access-Daten können Sie zunächst über komfortable Import-Routinen oder notfalls per VBA in das "Desktop-Outlook" übernehmen und dann zukünftig mit dem "PDA-Outlook" synchronisieren. Denkbar wäre auch die Nutzung eines Webservices, der die Verwaltung von Adressen/Kontakten, Terminen und Aufgaben per Webinterface erlaubt und somit standort- und geräteunabhängig ist.

ANZEIGE 
Die komfortable Urlaubs-Datenbank für 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.

Ab sofort steht Ihnen die brandneue Version 2.11 der Urlaubsdatenbank zur Verfügung. Zu den wichtigsten Neuerungen zählen:

  • Voll netzwerkfähig durch Front- und Backend-Lösung. Im Mehrplatzbetrieb fallen keine weiteren Kosten an!
  • Unterstützung von halben Abwesenheitstagen
  • Balken- und Mitarbeiterzahl auf 25 pro Abteilung erweitert
  • Erweiterte 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


Datenbank effektiver komprimieren
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Wenn ich in Access Extras-Datenbank-Dienstprogramme-Reparieren und Komprimieren bzw. Extras-Datenbank-Dienstprogramme-Komprimieren anwähle, zeigt Access nach Abschluss der Komprimierung immer das eingestellte Startformular an. Das ist insbesondere während der Entwicklung, bei der man nach umfangreichen Änderungen zwischendurch häufiger einmal komprimiert, recht nervig, da das Formular vor weiteren Änderungen wieder weggeklickt werden muss. Kann man Access dieses Verhalten irgendwie abgewöhnen?
I. Backhaus

 ANTWORT:  Halten Sie bei Anwahl des Menüs Extras-Datenbank-Dienstprogramme-Reparieren und Komprimieren bzw. Extras-Datenbank-Dienstprogramme-Komprimieren einfach die Umschalt-Taste gedrückt. Nach Abschluss der Komprimierung aktiviert Access dann das Datenbankfenster und Sie können sofort mit Ihren Änderungen fortfahren.

 Newsletter-Tipp

Office 2003 und XP-Tipps kostenlos per E-Mail

Der SmartTools Office XP Insider ist ein kostenloser E-Mail-Newsletter, der sich ausschließlich mit Office 2003 und XP beschäftigt:

  • Praktische Tipps zur Installation
  • Tipps und Workshops zum optimalen Einsatz der erweiterten Funktionen von Office 2003 und XP
  • Wichtige Infos und Tipps für den Umstieg von anderen Office-Versionen
  • Download-Links zu aktuellen Erweiterungen und Service Releases für Office XP/2003
  • Helpline für Ihre individuellen Fragen zu Office 2003 und XP
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/