Von: access-weekly-html-request@smarttools.de im Auftrag von SmartTools Publishing [access-weekly-html-reply@smarttools.de]
Gesendet: Donnerstag, 16. März 2006 22:59
An: Access Weekly Abonnenten
Betreff: SmartTools Access Weekly vom 17.3.2006

Ausgabe vom 17. März 2006

 In dieser Ausgabe

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

Spotlight: Das perfekte 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 oder 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:

http://www.add-in-world.com/katalog/ta_admin/

Download-Tipp: Das komfortable Eingabeformular für Ihre Parameterabfragen in Access

Für viele Ihrer Berichte verwenden Sie Parameterabfragen, damit die für die Auswertung gewünschten Datensätze abhängig von variablen Kriterien ausgewählt werden können. Beim Öffnen dieser Berichte zeigt Access je nach Anzahl der notwendigen Parameter mehrere Male hintereinander einen Dialog "Parameterwerte eingeben" an. Diese Form der Abfrage der Parameterwerte ist nicht nur umständlich, sondern auch fehlerträchtig, da der geforderte Datentyp für die jeweilige Parametereingabe nicht ersichtlich ist.

Mit dem kostenlosen SmartTools Parameter-Formular stellen wir Ihnen eine komfortable Lösung zur Verfügung, um den Umgang mit Parameterabfragen wesentlich zu vereinfachen: nachdem die Parameterabfrage zu einem Bericht automatisch ermittelt und die Parameter-Informationen ausgelesen wurden, zeigen wir ein dynamisch generiertes Formular für die komfortable Eingabe der Parameter an. Mit wenig Aufwand können Sie die Bedienung Ihrer Datenbanken so wesentlich komfortabler gestalten:

 SmartTools Parameter-Formular kostenlos herunterladen!

News: Neue Updates beheben sechs Sicherheitslücken in Office 2003, XP und 2000

In dem aktuellen Security Bulletin für den März hat Microsoft gleich auf sechs neu entdeckte Sicherheitslücken in verschiedenen Office-Applikationen hingewiesen:

Security Bulletin für Office

Fünf der Probleme beziehen sich ausschließlich auf Excel, wobei in jedem Fall eine manipulierte Excel-Arbeitsmappe dafür sorgen kann, dass unbemerkt schädlicher Programmcode ausgeführt wird. Auf diese Weise können beispielsweise Daten ausgespäht, Dateien gelöscht oder unerwünschte Programme installiert werden. Die sechste Sicherheitslücke betrifft alle Office-Anwendungen: durch die Manipulation des so genannten "Routing Slips" in Office-Dateien ist ebenfalls kann es ebenfalls zur Ausführung von unerwünschten Programmen kommen.

Die Sicherheitslücken werden alle als "Kritisch" oder "Wichtig" eingestuft, so dass Sie die in dem Security Bulletin angegebenen Updates schnellst möglich installieren sollten.

News: Endgültiges Design der neuen Access-Version vorgestellt

Im September 2005 hat Microsoft erstmals die neue Benutzeroberfläche von Access 2007 vorgestellt. Seitdem konnte eine ausgewählte Gruppe von Anwendern die erste Beta-Version testen und Erfahrungen an das Entwicklungsteam weitergeben. Das Design wurde daraufhin noch einmal überarbeitet und nun in seiner endgültigen Form präsentiert:

Benutzeroberfläche von Access 2007

Der direkte Vergleich zwischen dem ersten und dem aktuellen Entwurf zeigt, dass es noch eine Reihe von gravierenden Änderungen gegeben hat:

Vergleich der Entwürfe

Die Symbole sind nun klarer organisiert und Beschriftungen am unteren Rand des "ribbon" verdeutlichen die Inhalte der einzelnen Gruppen. Das große "Office-Symbol" in der oberen linken Fensterecke ist ein vollkommen neues Element. Es ermöglicht den schnellen Zugriff auf sämtliche Funktionen rund um das Datei-Management und die Ausgabe bzw. Veröffentlichung von Informationen:

Der Office-Button in Office 2007

Waren die News & Downloads hilfreich für Sie? Klicken Sie bitte hier!

 Access-Tipp der Woche

Universelle Auswahldialoge für Ihre Datenbanken, Teil 1
Versionen: Access 2003, 2002/XP, 2000 und 97

Zum Helpline-Beitrag "PCX-Bilder in Datenbank laden" in Access Weekly vom 17.2.2006 haben uns zahlreiche Zuschriften erreicht, in denen es um die Verwendung eines flexiblen Dateiauswahl-Dialogs anstelle der festen Zuweisung eines Dateinamens ging. Wir möchten Ihnen daher in einem zweiteiligen Tipp der Woche fertige Lösungen für die drei wichtigsten immer wieder benötigten Auswahldialoge vorstellen.

Beginnen wir mit einigen Grundlagen: Während Sie in Word oder Excel die dort vorhandenen Dialoge zum Öffnen oder Speichern von Dateien in Ihren VBA-Lösungen einsetzen können, ist das in Access nicht bzw. erst ab Access 2002/XP mit dem Objekt "FileDialogs" möglich. "FileDialogs" erlaubt zwar auch die Anzeige eines Dialogs zur Auswahl eines Ordners, aber dazu wird ein modifizierter Dateiauswahl-Dialog verwendet, der nicht dem unter Windows gewohnten "Ordner öffnen"-Dialog entspricht. Wir beginnen deshalb mit einem dem Windows-Pendant entsprechenden "Ordner öffnen"-Dialog, den Sie in allen Access-Versionen einsetzen können, sowie dem "FileDialogs"-Gegenstück, das nur in Access 2003 und 2002/XP genutzt werden kann. Im zweiten Teil folgen dann die Datei-Dialoge "OpenFile()" und "SaveFile()" in Varianten für Access 2003 und 2002/XP bzw. Access 2000 und 97.

Ab Windows 95 stehen dem Entwickler verschiedene API-Funktionen zur Vereinheitlichung der Benutzeroberfläche und der Benutzerführung zur Verfügung. So soll sichergestellt werden, dass beispielsweise Dateien oder Verzeichnisse über immer gleiche Auswahl-Dialoge gesucht oder Farben, Schriften und Drucker über immer gleiche Optionen-Dialoge eingestellt werden können, ohne dass der Anwender sich für jede Anwendung in einen anderen Dialog einarbeiten muss. Für die Auswahl von Verzeichnissen ist hier die Funktion "SHBrowseForFolder()" zuständig. Der Zusatz "SH" macht eine so genannte "Shell-Funktion", also eine Benutzeroberflächen-Funktion, kenntlich. "SHBrowseForFolder" lässt sich leider nicht direkt aufrufen, da die Funktion mit einer speziellen Datenstruktur arbeitet, die vor dem Aufruf initialisiert werden muss. Das erfolgt in der Funktion "OpenFolder()", die Sie zunächst samt den notwendigen Deklarationen in ein Modul "modOpenFolder" kopieren:

rivate Type BROWSEINFO
    hwndOwner As Long
    pidlRoot As Long
    lpszDisplayName As String
    lpszTitle As String
    ulFlags As Long
    BFFCALLBACK As Long
    LPARAM As Long
    iImage As Integer
End Type

Private Declare Function SHBrowseForFolder Lib _
        "shell32.dll" (FolderStruct As BROWSEINFO) As Long

Private Declare Function SHGetPathFromIDList Lib _
        "shell32.dll" (ByVal LPCITEMIDLIST As Long, _
        ByVal lpStr As String) As Long

Function OpenFolder(strMsg) As String
  Dim BI As BROWSEINFO
  Dim R As Long
  Dim lpBuffer As String * 254

  With BI
    .hwndOwner = 0
    .lpszDisplayName = lpBuffer
    .lpszTitle = strMsg
    .ulFlags = 0
    .BFFCALLBACK = 0
    .LPARAM = 0
  End With
  R = SHBrowseForFolder(BI)
  R = SHGetPathFromIDList(R, lpBuffer)
  OpenFolder = Left$(lpBuffer, InStr(lpBuffer, _
  Chr(0)) - 1)

End Function

Mit der Zuweisung ".lpszDisplayName = lpBuffer" setzen wir zunächst den Puffer für die Rückmeldung des gewählten Verzeichnisnamens. Nach dem Aufruf wird auf diesem Weg nur der Name des gewählten Verzeichnisses, nicht aber dessen kompletter Pfad geliefert! Wenn also beispielsweise "Z:\Test\Daten\Access" ausgewählt wird, enthält dieses Feld anschließend nur "Access". Wir werten diese Rückmeldung nicht weiter aus, sondern geben "lpBuffer" quasi nur als "Dummy-Variable" an. Anschließend setzen wir mit ".lpszTitle = strMsg" den Text, der als Parameter "strMsg" übergeben wurde und der im Dialog als Hinweis für den Anwender angezeigt werden soll. Der Aufruf per "R = SHBrowseForFolder(BI)" sorgt dann für die Anzeige des Dialoges, wobei die eben initialisierte Datenstruktur als Parameter übergeben wird. Beim Funktionsergebnis in "R" handelt sich um eine spezielle Struktur, die über eine Zusatzfunktion "SHGetPathFromIDList()" ausgewertet werden muss.

Diese Struktur ist zwar als "String" deklariert, es handelt sich aber um eine kompliziert aufgebaute "ItemList", für die es in VBA keinen entsprechenden Datentyp gibt. Die Funktion "SHGetPathFromIDList()" extrahiert aus der über "R" referenzierten Liste nun den reinen Pfad des ausgewählten Verzeichnisses und legt diesen in "lpBuffer" ab. Beim Ergebnis handelt es sich um einen "C"-String, also eine mit "0" terminierte Zeichenkette, so dass eine letzte Anweisung "OpenFolder = Left$(lpBuffer, InStr(lpBuffer, Chr(0)) - 1)" alle Zeichen links vom "0"-Byte der Zeichenkette extrahiert. Das Ergebnis ist dann wie bereits erwähnt, eine leere Zeichenkette nach einem Klick auf Abbrechen oder der Pfad als VBA-String.

In Ihren VBA-Routinen können Sie die Funktion "OpenFolder()" dann zum Beispiel wie folgt nutzen:

strVerzeichnis = _
  OpenFolder("Bitte Export-Verzeichnis wählen:")
If strVerzeichnis = "" Then
  Exit Sub 'Nichst gewählt...
Else
  'Hier Ihre Verarbeitung...
End If

Das Ergebnis der Funktion "OpenFolder()" ist entweder eine leere Zeichenkette "", wenn auf Abbrechen geklickt wurde oder der komplette Pfad des ausgewählten Verzeichnisses wie zum Beispiel "Z:\Test\Datenaustausch\Excel". Das Ergebnis wird immer ohne abschließenden Backslash geliefert!

Mit Office 2002 hat Microsoft wie bereits erwähnt das Objekt "FileDialogs" eingeführt, das ohne externe API-Funktionen und komplexe Datenstrukturen auskommt und zudem komfortabler zu handhaben ist. Es sei aber nochmals angemerkt, dass Sie die oben gezeigte Funktion "OpenFolder()" auch problemlos mit Access 2003 und 2002/XP einsetzen können! Die auf "FileDialogs" basierende Funktion "OpenFolder()" ist wie folgt aufgebaut:

Function OpenFolder(strMsg As String, _
                    strPath As String) As String
  Dim fDlg As FileDialog

  Set fDlg = _
      Application.FileDialog(msoFileDialogFolderPicker)
  With fDlg
    .ButtonName = "Export"
    .Title = strMsg
    If Right$(strPath, 1) <> "\" Then _
      strPath = strPath + "\"
    End If
    .InitialFileName = strPath
    .Show
    If .SelectedItems.Count > 0 Then
      OpenFolder = .SelectedItems(1)
    Else
      OpenFolder = ""
    End If
  End With

End Function

Zunächst muss eine Objektvariable "fDlg" vom Typ "FileDialog" über "Set fDlg=..." initialisiert werden, um den weiteren Zugriff darüber zu ermöglichen. Über die Eigenschaften "Title" und "ButtonName" können dann individuelle Bezeichnungen für den Dialog und die Ok-Schaltfläche zugeordnet werden. Über "InitialFileName" können Sie ein bestimmtes Verzeichnis vorgeben. Der Aufruf der Methode "Show" zeigt den Dialog dann an. Das Ergebnis ist eine Auflistung "SelectedItems", über deren Eigenschaft "Count" sich zunächst abfragen lässt, ob etwas ausgewählt oder ob auf Abbrechen (Count=0) geklickt wurde. Das Auslesen des ersten Eintrages der Auflistung liefert dann den kompletten Pfad des gewählten Verzeichnisses bzw. wenn "Count = 0" zutrifft, eine leere Zeichenkette als Ergebnis.

In Ihren VBA-Routinen können Sie die Funktion dann zum Beispiel wie folgt nutzen:

strVerzeichnis = _
  OpenFolder("Bitte Export-Verzeichnis wählen:", _
             "Z:\Test\Daten")
If strVerzeichnis = "" Then
  Exit Sub 'Nichts zu tun...
Else
  'Hier Ihre Verarbeitung...
End If

War dieser Tipp für Sie hilfreich? Klicken Sie bitte hier!

ANZEIGE 
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 der brandneuen Version 2.0 von SmartTools QuickText Pro 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!).
  • Sie müssen kein neues Programm erlernen, denn SmartTools QuickText Pro ist fest in die Menüs von Word integriert und lässt sich kinderleicht bedienen.
  • Nutzen Sie Ihre Mustertexte ganz einfach über das Netzwerk auch mit mehreren Anwendern. Alle Dokumente werden an einer Stelle zentral abgelegt, so dass Sie einen Mustertext nur ein einziges Mal erstellen und bearbeiten müssen.
Nutzen Sie unseren Aktionspreis für Access Weekly-Abonnenten mit zurzeit über 25% Rabatt:

http://www.add-in-world.com/katalog/quicktext-pro/


 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 eine oder mehrere Fragen aus und beantwortet Sie an dieser Stelle im Newsletter.

Recordet-Initialisierung schlägt fehl
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Aus dem Access-Tipp der Woche "Suchfunktion für alle Felder in einem Formular" habe ich die Funktion "SearchAllFieldsFilter()" übernommen. In einem von mir geschriebenen Programm funktioniert sie ausgezeichnet, in einem anderen Programm jedoch nicht. Ich erhalte immer folgende Fehlermeldung:

"Laufzeitfehler '13': Typen unverträglich"

Wenn ich dann auf Debuggen klicke ist die folgende Zeile gelb markiert:

Set rs = CurrentDb.OpenRecordset(strTable)

L. Pawlik

 ANTWORT:  Die Funktion "SearchAllFieldsFilter()" wurde für DAO entwickelt und setzt einen Verweis auf "Microsoft DAO 3.x Object Library" voraus. In einer Access 97-Datenbank gibt es keine Probleme, da dort standardmäßig ein Verweis auf DAO gesetzt ist. In einer Access 2003/2002/2000-Datenbank ist jedoch standardmäßig ein Verweis auf "Microsoft ADO 2.x Object Library" gesetzt. "Dim rs as Recordset" deklariert dann einen ADO-Recordset, während "CurrentDb.OpenRecordset" einen DAO-Recordset liefert - deswegen die Meldung "Typen unverträglich". Um das Problem zu lösen, wählen Sie Extras-Verweise an, deaktivieren Sie die Referenz für ADO und aktivieren Sie die Referenz auf DAO. Wenn Sie beide Datenzugriffsmethoden in der Datenbank benötigen, ändern Sie die Deklaration des Recordsets wie folgt:

Dim rs As DAO.Recordset

Ähnliche Deklarationen in den Modulen/Prozeduren/Funktionen sind entsprechend anzupassen, indem Sie ein "DAO." Oder "ADO." davorsetzen.

Datenbank-Problem 'Datei konnte nicht gesperrt werden'
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Beim Öffnen einer Access-Datenbank erscheint folgende Meldung:

Microsoft Access: Datei konnte nicht gesperrt werden.

Die Datenbank kann somit nicht geöffnet und genutzt werden. Sämtliche Berechtigungen sind jedoch für den Mitarbeiter vorhanden. Die Datenbank liegt auf einem Windows 2003- Server. Der Mitarbeiter hat Windows XP und Office XP/Pro mit Access 2002 (10.6501.6626-SP3). Andere Mitarbeiter können problemlos mit der Datenbank arbeiten.
U. Holder

 ANTWORT:  Bezüglich der Zugriffsrechte ist zu beachten, dass Schreib- und Leserechte alleine nicht ausreichen. Access verwaltet im Verzeichnis der Datenbank eine LDB-Datei, in der unter anderem festgehalten wird, welche Anwender mit der Datenbank arbeiten. Diese Datei wird bei Bedarf angelegt und wieder gelöscht, wenn sie nicht mehr benötigt wird. Der Anwender muss also auch die Rechte zum Anlegen und Löschen von Dateien haben. Eine andere Ursache könnte der Einsatz eines Virenscanners sein, der Dateien im Hintergrund scannt und sie dabei eventuell blockiert. In diesem Fall kann Access den aktuellen Anwender nicht in die LDB-Datei eintragen. Der Virenscanner ist dann so einzustellen, dass er LDB-Dateien ignoriert.

ANZEIGE 
Barcodes komfortabel mit Access ausgeben

Barcode für Windows ist ein Komplettpaket zum Erstellen von Barcodes in Access, Excel und Word. Sie erhalten TrueType-Schriften sowie ein leistungsfähiges Programm zur Berechnung der Prüfziffern, das Sie komfortabel bedienen oder aus den Office-Applikationen heraus steuern können. Alle gängigen Barcodes sind enthalten. Unter anderem:

  • Code EAN 13, EAN 8, Addon -2 und -5, EAN Velocity
  • Code 128, EAN128, UPS128
  • Code 39, -extended, PZN
  • 2/5 Interleaved, 2/5 Industrie
  • Leit- und Identcode der Post
Weitere Informationen finden Sie unter:

http://www.add-in-world.com/katalog/barcode/


Datensatz per Schaltfläche löschen
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Ich möchte gerne in meinem Formular den aktuellen Datensatz per Schaltfläche nach einer Sicherheitsabfrage löschen. Welche VBA-Anweisungen sind dazu notwendig?
P. Arendts

 ANTWORT:  Dazu verwenden Sie eine Ereignisprozedur "Beim Klicken" wie die folgende:

Private Sub btnDel_Click()
  Dim Taste&

  Taste = MsgBox("Datensatz wirklich löschen?", _
                 vbYesNo + vbQuestion, "Löschen?")

  If Taste = vbYes Then
    DoCmd.RunCommand acCmdDeleteRecord
  End If

End Sub

War die Helpline für Sie hilfreich? Klicken Sie bitte hier!

 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 © 2006 SmartTools Publishing Thomas Tai
Luisenstrasse 52, 49565 Bramsche
Telefon: 05461/9952-0, Fax: 05461/2609
E-Mail: access-weekly@smarttools.de
Internet: http://www.smarttools.de/

Alle Rechte vorbehalten. Kein Teil dieses Newsletters darf in irgendeiner Form ohne schriftliche Genehmigung reproduziert, vervielfältigt oder verbreitet werden. Für die Nutzung der enthaltenen Informationen oder die fehlerfreie Funktion wird keine Haftung übernommen. Der Benutzer ist für eventuell entstehende Schäden alleine verantwortlich.