Access-News & Downloads
Access-Helpline
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:
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:
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.
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:
Um diese DLL beziehungsweise die darauf basierende Lösung zur Unterdrückung des Mausrades in Ihren Datenbanken zu nutzen, gehen Sie wie folgt vor:
Private Sub clsMouseWheel_MouseWheel(Cancel As Integer) Beep Cancel = True End Sub
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.
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.
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:
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.
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.
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:
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.
|