Von: access-weekly-html-request@smarttools.de im Auftrag von SmartTools Publishing [access-weekly-html-reply@smarttools.de]
Gesendet: Freitag, 15. Juli 2005 04:05
An: Access Weekly Abonnenten
Betreff: SmartTools Access Weekly vom 15.7.2005

Ausgabe vom 15. Juli 2005

 In dieser Ausgabe

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

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:

  • Machen Sie sich nie wieder sorgen um Ihre Daten, denn der Backup-Vorgang lässt sich mit wenig Aufwand automatisieren.
  • SmartTools Outlook Backup 2.0 sichert nicht nur einfach die Datendatei, sondern kümmert sich außerdem um Ihre Outlook-Symbolleiste, Kategorien, E-Mail-Kontoeinstellungen, Signaturen, Filter und Regeln.
  • Bei einem Datenverlust sparen Sie viele Stunden Konfigurationsaufwand, denn alle gesicherten Informationen lassen sich mit wenigen Mausklicks wiederherstellen.
  • Die brandneue Version 2.0 von SmartTools Outlook Backup kann Ihre Daten ab sofort noch schneller sichern, Outlook vor der Sicherung beenden und danach neu starten, noch mehr Informationen wie Übertragungseinstellungen, Ansichten und Junk-Mail-Filter sichern bzw. zurückspielen usw.
SmartTools Outlook Backup 2.0 bietet eine übersichtliche Benutzeroberfläche, die auch von weniger erfahrenen Anwendern komfortabel bedient werden kann. Intelligente Assistenten leiten Sie sicher durch das Anlegen und das Wiederherstellen einer Datensicherung.

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:

 VBA-Lösung zu verknüpften Tabellen

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:

 Update Inventory Tool

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

 Access-Tipp der Woche

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:

  1. Öffnen Sie das Formular im Entwurfsmodus.
  2. Stellen Sie die Eigenschaft "Beim Öffnen" auf "[Ereignisprozedur]" und klicken Sie auf die Schaltfläche mit den drei Punkten, um den VBA-Editor zu öffnen.
  3. Geben Sie die folgende Anweisung ein:
Private Sub Form_Open(Cancel As Integer)

  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:

  1. Öffnen Sie das Makro im Entwurfsmodus.
  2. Wählen Sie das Menü Ansicht-Bedingungen an, um die Spalte "Bedingungen" anzeigen zu lassen.
  3. Geben Sie in der Spalte "Bedingung" folgenden Ausdruck ein:
KennwortEingabe("KennwortTest";"Kennwort:";
"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.

  • Stellen Sie die Aktion auf "StopMakro" ein.
  • Markieren Sie die Zeile und verschieben Sie sie ganz an den Anfang des Makros.
  • Speichern Sie die Änderungen und verlassen Sie den Makroentwurf.
Wenn Sie nun versuchen, das Makro per Doppelklick oder per VBA und "DoCmd.RunMacro" zu starten, erscheint zunächst die Kennwort-Abfrage. Wurde ein ungültiges Kennwort eingegeben, liefert "KennwortEingabe()" das Ergebnis "False", so dass die Aktion "StopMakro" ausgeführt und dadurch die weitere Ausführung des Makros unterbunden wird.

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.

ANZEIGE 
Das komfortable Verwaltungstool für Multiuser-Datenbanken

Hier ist das Tool, auf das alle Datenbank-Administratoren gewartet haben: Total Access Admin macht die Verwaltung von Multiuser-Datenbanken zum Kinderspiel. Unabhängig davon, ob Access 2003, 2002/XP, 2000 und 97 im Einsatz ist oder alle Versionen parallel genutzt werden - Sie haben die Kontrolle darüber, was mit der Datenbank geschieht:

  • Aktive Anwender anzeigen
  • Verhindern Sie neue Verbindungen zu der Datenbank
  • Inaktive User automatisch abmelden
  • Verdächtige oder abgebrochene Verbindungen finden
  • Mitteilungen an alle angemeldeten Anwender
  • Komfortabler und kostengünstiger Einsatz
Total Access Admin ist das unentbehrliche Tool, wenn Sie Datenbanken im Netzwerk verwalten. Mit wenigen Mausklicks kommen Sie Problemen auf die Spur, bereiten Datenbanken für die Wartung vor und kommunizieren mit allen angemeldeten Anwendern in Echtzeit:

Total Access Admin


 Access-Helpline

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.

ANZEIGE 
Tools und Assistenten für Access-Entwickler

Mit den Total Visual CodeTools 2003 erweitern Sie Access um eine umfangreiche Sammlung neuer Tools und Assistenten speziell für VBA-Entwickler.

Die Total Visual CodeTools 2003 integrieren sich direkt in die Entwicklungsumgebung und lassen sich jederzeit per Mausklick aufrufen. Zum Beispiel:

  • Code Cleanup zur automatischen Aufbereitung und Standardisierung von vorhandenem Code.
  • Voll automatische CodeBuilder für Recordsets, SQL-Statements, Message-Boxen, Select-Case-Anweisungen etc.
  • Assistent für neue Prozeduren mit Kommentarkopf, Fehlerbehandlung und Namenskonventionen nach Ihren Vorgaben
  • Der Code Delivery Wizard fügt automatisch Zeilennummern hinzu (für punktgenaue Fehlermeldungen), entfernt Debugging-Code, den Sie übersehen haben und macht den Sourcecode für Unbefugte Dritte unlesbar.
Weitere Informationen finden Sie unter:

Total Visual CodeTools 2003


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.

 Newsletter-Tipp

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:

  • Neue Rechenfunktionen für Ihre Tabellen
  • Nützliche VBA-Prozeduren
  • Undokumentierte Parameter und Funktionen
  • Infos zu Bugs und Patches
  • Wichtige Download-Links
  • Helpline für Ihre Fragen zu Excel
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/