Access-News & Downloads
Access-Helpline Newsletter-Tipp
News: Komfortable Datensicherung für Outlook - Die neue Version 2.0 von SmartTools Outlook Backup Was würde passieren, wenn Ihre Outlook-Daten plötzlich und unerwartet verloren gehen? Wenn Sie regelmäßig mit Outlook arbeiten wäre das ein echtes Problem, denn Sie verlieren meistens nicht nur E-Mails, sondern auch wichtige Adressen, Termine aus dem Kalender, Aufgaben und Notizen. Hinzu kommt ein erheblicher Einrichtungsaufwand, um alle Filter und Regeln, Kategorien, Signaturen, Symbolleisten und E-Mail-Konten so einzurichten, dass Sie wieder wie gewohnt arbeiten können. Mit dem SmartTools Outlook Backup 2.0 haben Sie diese Probleme zuverlässig im Griff:
SmartTools Outlook Backup 2.0 kann zurzeit mit 10% Einführungsrabatt bestellt werden. Weitere Infos finden Sie unter: SmartTools Outlook Backup Download-Tipp: Kostenlose Techinfo und VBA-Lösung zu verknüpften Tabellen Haben Sie bisher Ihre Datenbanken so angelegt, dass sich Tabellen, Formulare, Abfragen und alle anderen Objekte in einer einzigen Datei befinden? In einer kostenlosen Techinfo erfahren Sie, warum Sie umdenken sollten. Nutzen Sie verknüpfte Tabellen, um Ihre Datenbanken in Zukunft noch einfacher zu pflegen oder um aus mehreren Anwendungen komfortabel auf einen gemeinsamen Datenbestand zuzugreifen. Eine fertige VBA-Lösung sorgt außerdem dafür, dass Sie auch Probleme mit verschobenen Dateien schnell in den Griff bekommen. Wählen Sie einfach den neuen Pfad aus und binden Sie alle Tabellen voll automatisch neu in Ihre Datenbank ein:
Download-Tipp: Notwendige Access- und Office-Updates automatisch ermitteln Wenn Sie als Administrator für mehr als drei Access-Installationen zuständig sind, haben Sie sich sicherlich auch schon einmal eine Funktion gewünscht, die per Mausklick über notwendige Updates oder Patches informiert. Microsoft stellt dazu im Rahmen des Office Ressource Kits ein "Update Inventory Tool" zur Verfügung, das genau diese Aufgabe wesentlich vereinfacht. Das Tool besteht aus zwei Programmen "Inventory" und "Convert". "Inventory" prüft die aktuelle Office- bzw. Access-Installation, stellt fest, welche Version vorhanden und welche Updates bereits installiert sind, prüft anhand einer Liste, welche Updates fehlen und erzeugt einen Bericht, der Auskunft über die noch einzuspielenden Updates gibt. Mit "Convert" können Sie das Ergebnis in verschiedene Formate - XML, CSV oder MOF - konvertieren und so beispielsweise als Basis für eine Verwaltung per Access-Datenbank oder für automatische Updates über einen System Management Server heranziehen. Den Download des "Update Inventory Tool" finden Sie unter der folgenden Adresse:
Starten Sie das Setup nach dem Download per Doppelklick und folgen Sie den weiteren Anweisungen des Installationsprogramms. In dem bei der Installation angegebenen Verzeichnis finden Sie anschließend die beiden Kommandozeilen-Tools INVENTORY.EXE und CONVERT.EXE, die mit verschiedenen Parametern gesteuert werden können. Unter der folgenden Adresse finden Sie als Dokumentation des "Update Inventory Tool" ein White Paper, das neben diesen Parametern das Konzept erläutert und den Einsatz detailliert beschreibt: White Paper zum Update Inventory Tool
Formulare, Berichte, Makros und VBA-Prozeduren per Kennwort schützen, Teil 2 Versionen: Access 2003, 2002/XP, 2000 und 97 Im ersten Teil dieses Tipps der Woche hatten wir zunächst die Tabelle für die Erfassung von Objektnamen und Kennwörtern und das Formular für die spätere Kennworteingabe aufgebaut. In dieser Woche geht es nun um die globale Funktion "KennwortEingabe()" und den Einbau der Kennwortabfrage in Formulare, Berichte, Makros und VBA-Routinen. Geben Sie zunächst die folgende Funktion in einem neuen oder einem vorhandenen Modul ein: Function KennwortEingabe(strObjekt As String, _ strTitle As String, strPrompt As String) _ As Boolean Dim strOpenArgs As String Dim strTag As String Dim varPW As Variant Const cstrFormName = "frmKennwort" On Error Resume Next KennwortEingabe = False 'Default: Kein/falsches Kennwort varPW = DLookup("[Kennwort]", _ "tblKennwort", _ "[ObjektName]= '" & strObjekt & "'") If IsNull(varPW) Or IsEmpty(varPW) Then KennwortEingabe = True Exit Function End If strOpenArgs = strTitle & "|" & strPrompt DoCmd.OpenForm cstrFormName, , , , , _ acDialog, strOpenArgs If Err <> 0 Then Beep MsgBox "KennwortEingabe: Formular '" & _ cstrFormName & "' nicht gefunden!", _ vbOKOnly + vbCritical, "!!! Problem !!!" Exit Function End If strTag = Forms(cstrFormName).Tag DoCmd.Close acForm, cstrFormName, acSaveYes KennwortEingabe = (strTag = varPW) End Function Im ersten Schritt wird hier das Funktionsergebnis als Vorgabe auf "False" gesetzt, um die Rückmeldung "Kein oder ungültiges Kennwort" zu signalisieren. Im Anschluss wird anhand des Parameters "strObjekt" in der Tabelle "tblKennwort" nachgeschlagen, ob dafür ein Kennwort notwendig ist und dieses gegebenenfalls in "strPW" festgehalten. Ist kein Kennwort nötig, setzen wir das Funktionsergebnis auf "True", signalisieren so "Kein Kennwort nötig" bzw. "Korrektes Kennwort eingegeben" und verlassen die Funktion anschließend. Ist aber ein Kennwort nötig, werden die Parameter "strTitle" und "strPrompt" als Öffnungsargumente zusammengesetzt und im dann folgenden Aufruf "DoCmd.OpenForm" als Parameter an das Formular "frmKennwort" übergeben. Dieses Formular überträgt diese Daten wie im ersten Teil erläutert, in seine Titelleiste bzw. in das Bezeichnungsfeld "lblKennwort". Sie können somit je nach Erfordernis individuelle Texte für die Abfrage des Kennwortes angeben. Das Formular "frmKennwort" nimmt nun das Kennwort entgegen und meldet es über seine Eigenschaft "Tag" zurück. Daraus übertragen wir die Rückmeldung in eine Variable "strTag", die anschließend in einem Vergleich "strTag = varPW" herangezogen wird. Dieser Vergleich ergibt den Wert "True" oder "False" als Funktionsergebnis. Um nun mit Hilfe dieser Funktion ein Formular zu schützen, erfassen Sie zunächst Formularname und Kennwort in der Tabelle "tblKennwort". Gehen Sie dann wie folgt vor:
Cancel = Not KennwortEingabe(Me.Name, "Kennwort:", _ "Bitte Kennwort eingeben:") End Sub Die Ereignisprozedur "Form_Open" verfügt über den Parameter "Cancel", über den man gegebenenfalls die Anzeige des Formulars verhindern kann. Dazu ist normalerweise "Cancel = True" zu setzen, aber wir kürzen das ab, indem wir das Funktionsergebnis von "KennwortEingabe()" mit "Not" umdrehen und dem Parameter "Cancel" zuweisen. Liefert "KennwortEingabe()" also "False/Kennwort nicht korrekt", wird daraus "Cancel = True", so dass das Formular nicht angezeigt wird. Andernfalls, also wenn "KennwortEingabe()" das Ergebnis "True/Korrektes Kennwort" liefert, wir daraus "Cancel = False", das Formular wird also angezeigt. Genauso gehen Sie bei Berichten vor, die per Kennwort geschützt werden sollen: Eintragen des Berichtsnamens und des Kennwortes in die Tabelle "tblKennwort". Den Aufruf/die Prüfung legen Sie dort ebenfalls wie oben erläutert in die Ereignisprozedur "Beim Öffnen", denn auch Berichte verfügen in "Report_Open" über den Parameter "Cancel". Das könnte dann beispielsweise so aussehen: Private Sub Report_Open(Cancel As Integer) Cancel = _ Not (KennwortEingabe(Me.Name, _ "Kennwortgeschützter Bericht:", _ "Dieser Bericht ist per Kennwort geschützt. " & _ "Bitte für die Anzeige/den Aussdruck das " & _ "Kennwort eingeben:")) End Sub Etwas aufwendiger wird es, wenn ein Makro per Kennwort gegen Ausführung geschützt werden soll. Nach dem Eintragen des Namens des Makros und des geforderten Kennworts in die Tabelle "tblKennwort" gehen Sie wie folgt vor:
"Bitte Kennwort eingeben:")=Falsch "KennwortTest" ersetzen Sie dabei durch den Namen Ihres Makros, "Kennwort:" und "Bitte Kennwort eingeben:" passen Sie gemäß Ihren Erfordernissen entsprechend an.
Um schließlich VBA-Funktionen oder -Prozeduren per Kennwort zu schützen, reicht der Aufruf von "KennwortEingabe()" zu Beginn der Funktion oder Prozedur beispielsweise wie folgt: Function DatenExport() As Boolean If Not (KennwortEingabe(Me.Name, _ "Kennwortgeschützte Funktion:", _ "Diese Funktion ist geschützt. " & _ "Bitte das die Ausführung notwendige " & _ "Kennwort eingeben:")) Then Exit Function .... End Function "Not" dreht das Funktionsergebnis wieder um, so dass bei falschem Kennwort die Routine direkt per "Exit Function" verlassen wird. Bei Prozeduren geben Sie statt "Exit Function" entsprechend "Exit Sub" ein.
HHaben 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. Datensätze auffällig hervorheben Versionen: Access 2003, 2002/XP und 2000 FRAGE: In unserem Kundenstamm machen wir Kunden, mit denen wir in einem Rechtstreit liegen, über ein Kontrollkästchen "Rechtstreit" kenntlich. Unsere Sachbearbeiter übersehen dieses Kontrollkästchen gelegentlich und nehmen trotzdem Bestellungen auf, die nicht mehr ausgeliefert werden können oder leisten technischen Support, der nicht abgedeckt ist. Wir suchen nun nach einer Möglichkeit, derartige Datensätze besonders auffällig darzustellen. R. Thesdorf ANTWORT: Öffnen Sie das Formular im Entwurfsmodus und markieren Sie alle Felder mit gedrückter Umschalt-Taste. Wählen Sie dann das Menü Format-Bedingte Formatierung an. Stellen Sie "Bedingung 1" auf "Ausdruck ist" ein und geben Sie daneben die folgende Formel ein: [Rechtstreit]=-1 Wählen Sie darunter als Textfarbe beispielsweise "Rot" und aktivieren Sie die Auszeichnung "Fett". Klicken Sie dann auf Ok. In Zukunft werden alle Feldinhalte auffallend rot/fett dargestellt, wenn das Kontrollkästchen "Rechtstreit" aktiviert ist. CSV-Daten automatisch importieren Versionen: Access 2003, 2002/XP und 2000 FRAGE: Ich soll CSV-Daten (CSV=Comma separated values), die mehrmals täglich von unserem Großrechner bereitgestellt werden, in Access 2002/XP importieren. Die Import-Funktion von Access kann ich nicht nutzen, da einzelne Felder vor dem Speichern in der Tabelle abhängig von verschiedenen Kriterien modifiziert werden müssen. Also habe ich mir eine Import-Routine per VBA erstellt. Das Einlesen der Zeilen über "Open Datei for Input" und "Line Input" klappt schon, aber wie extrahiere ich die einzelnen Feldinhalte, die in Anführungszeichen und getrennt durch ein Komma gespeichert sind. Außerdem suche ich nach einer Möglichkeit, diese Import-Routine automatisch auszuführen, sobald der Großrechner eine Datei "AccExport.txt" in ein Verzeichnis "F:\AS400\Exports" abgelegt hat. F. Jungklaus ANTWORT: Um die Feldinhalte zu extrahieren, nutzen Sie die "Split()"-Funktion von Access: Dim arrFelder As Variant Dim I As Long Dim strValue As String ..... Line Input #FNum, strZeile arrFelder = Split(strZeile, ",") ..... Das Array "arrFelder" enthält anschließend für jedes Feld ein Element wie zum Beispiel '"Schmidt"', '"Am Bahnhof 12"' oder '"089-123 456"', also den jeweiligen Feldinhalt in Anführungszeichen. Um die Anführungszeichen beim Schreiben in die Tabelle zu eliminieren, nutzen Sie die "Mid()"-Funktion beispielsweise wie folgt: For I = LBound(arrFelder) To UBound(arrFelder) strValue = Mid(arrFelder(I), 2, Len(arrFelder(I)-2)) Next I Dadurch wird der Feldinhalt ab dem zweiten Zeichen in die Variable "strValue" übertragen, wobei sich die Anzahl zu übernehmender Zeichen aus "Länge der Zeichenkette Minus 2" ergibt, weil zwei Anführungszeichen eliminiert werden. Um die Import-Funktion automatisch zu starten, sobald die betreffende Datei vom Großrechner gespeichert wurde, nutzen Sie ein Formular, dessen Eigenschaft "Zeitgeberintervall" Sie auf zum Beispiel "6000" einstellen. Dadurch wird die Ereignisprozedur "Bei Zeitgeber" alle 60 Sekunden aufgerufen. In dieser Ereignisprozedur führen Sie folgende Anweisungen aus: If Dir("F:\AS400\Exports\AccExport.txt") <> "" Then If DatenImportieren() then Kill "F:\AS400\Exports\AccExport.txt" End If End If "Dir()" prüft zunächst, ob die betreffende Datei im angegeben Verzeichnis vorhanden ist. Wenn ja, wird die Import-Funktion aufgerufen. Es sollte als Funktionsergebnis "True" melden, wenn der Import erfolgreich durchgeführt wurde. In diesem Fall wird die Import-Datei gelöscht, weil sonst der nächste Aufruf von "Bei Zeitgeber" sie nochmals entdecken und den Import erneut starten würde. Das Formular öffnen Sie über das Makro "AutoExec" automatisch beim Start von Access per Aktion "ÖffnenFormular". Den Parameter "Fenstermodus" stellen Sie auf "Ausgeblendet" ein. Das Formular wird dann geladen und versteckt und führt seine Aufgabe unsichtbar im Hintergrund aus.
Aktives Formular hervorheben Versionen: Access 2003, 2002/XP, 2000 und 97 FRAGE: Ich habe immer drei, vier Formulare gleichzeitig geöffnet. Wenn ich bei der Bearbeitung von Datensätzen durch ein Telefonat oder Kollegen gestört werde, ist es anschließend immer recht mühsam, in der Flut der grauen Formulare, das jeweils aktive Formular wiederzufinden. Kann man das aktive Formular nicht irgendwie mit einem roten Rand kenntlich machen? T. Wulf ANTWORT: Nein, das geht nicht. Geben Sie aber einmal für die Ereignisprozedur "Bei Aktivierung" die folgende Anweisungen ein: Private Sub Form_Activate() Dim ctl As Control On Error Resume Next For Each ctl In Me.Controls ctl.Enabled = True Next End Sub Danach geben Sie für die Ereignisprozedur "Bei Deaktivierung" die folgende Anweisungen ein: Private Sub Form_Dectivate() Dim ctl As Control On Error Resume Next For Each ctl In Me.Controls ctl.Enabled = False Next End Sub Dadurch werden die Steuerelemente deaktivierter Formulare "ausgegraut" dargestellt. Nur das jeweils aktive Formular wird wie gewohnt angezeigt und ist schnell mit einem Blick gefunden.
Excel-Tipps kostenlos per E-Mail SmartTools Excel Weekly ist ein kostenloser E-Mail-Newsletter, der Ihnen jede Woche interessante Tipps rund um Excel 2003, 2002/XP, 2000 und 97 liefert:
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.
|