Von: access-weekly-html-request@smarttools.de im Auftrag von SmartTools Publishing [access-weekly-html-reply@smarttools.de]
Gesendet: Donnerstag, 2. Februar 2006 21:27
An: Access Weekly Abonnenten
Betreff: SmartTools Access Weekly vom 3.2.2006

Ausgabe vom 3. Februar 2006

 In dieser Ausgabe

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

Spotlight: Access-Datenbanken optimieren, analysieren und dokumentieren

Stellen Sie sicher, dass jede Datenbank fehlerfrei und mit optimaler Geschwindigkeit läuft!

Der Total Access Analyzer prüft jedes einzelne Objekt in Ihrer Datenbank und liefert Ihnen in übersichtlicher und komfortabler Form:

  • Versteckte Fehler
  • Optimierungstipps
  • Grafische Übersichten
  • Ungenutzte Objekte
  • Cross-Referenz
  • Übersichtliche Dokumentation aller Datenbankobjekte
Mit dem Total Access Analyzer steht Ihnen ein leistungsfähiges Tool zur Verfügung, um komplexe Datenbanken schnell in den Griff zu bekommen.

Mehr als 300 Berichte, Analysen und grafische Darstellungen helfen Ihnen, nicht nur die vorhandenen Objekte zu dokumentieren, sondern auch alle Zusammenhänge und Beziehungen sofort zu erfassen. Fast nebenbei kommen Sie Fehlern sowie ungenutzten Objekten auf die Spur und erhalten gezielte Tipps zur Optimierung Ihrer Anwendung.

Weitere Informationen finden Sie unter:

Total Access Analyzer für Access 2003

Total Access Analyzer für Access 2002/XP

Total Access Analyzer für Access 2000

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

Wird bei der Arbeit in Formularen aus Versehen das Mausrad betätigt, 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 über die Systemsteuerung ausschalten und es somit in Windows und allen Windows-Anwendungen deaktivieren.

Unsere kostenlose DLL löst das Problem: die für ein Access-Formular ausgelösten Ereignisse werden auf Systemebene gefiltert und das Ereignis "Mausrad" nur für das betreffende Formular eliminiert. In Windows, anderen Anwendungen oder auch anderen Access-Fenstern kann das Mausrad dann trotzdem wie gewohnt genutzt werden.

Die DLL samt ausführlicher Techinfo zur Einbindung in Ihre Datenbanken finden Sie unter:

 Mausrad-DLL kostenlos herunterladen!

News: Neuer Hotfix für Access 2002/XP

Microsoft hat einen Bugfix für Access 2002/XP bereitgestellt. Unter der folgenden Adresse finden Sie weitere Informationen. Bitte beachten Sie dabei, dass ein direkter Download nicht angeboten wird; Sie müssen den einen Hotfix explizit beim Support anfordern, wenn Sie von einem der beschriebenen Probleme betroffen sind:

Access 2002 hotfix package vom 2. November 2005

Behobene Probleme: Unter bestimmten Voraussetzungen werden Änderungen in einem Unterformular unbemerkt gespeichert.

Waren die News & Downloads hilfreich für Sie?

 Access-Tipp der Woche

Verzeichnisse und Dateien per VBA auslesen und verarbeiten, Teil 2
Versionen: Access 2003, 2002/XP, 2000 und 97

Im ersten Teil dieses Tipps der Woche hatten wir erläutert, wie alle Dateien (*.*) oder bestimmte Dateigruppen (*.mdb) aus einem Verzeichnis ausgelesen (Funktion "Dir()") und in einer Tabelle gespeichert werden. Dabei wurden neben Pfad/Dateinamen auch Informationen zur Dateigröße (Funktion "FileLen()") und zum letzten Änderungsdatum (Funktion "FileDateTime()") erfasst. Die so gewonnenen Daten lassen sich nun beispielsweise für die Anzeige in einer Dateiauswahl heranziehen. Dazu legen Sie ein einem Formular ein Listenfeld (Name= "lstDatAusw") an und stellen dessen Eigenschaft "Datensatzherkunft" auf die folgende SQL-Anweisung ein:

select Dateiname from DateiInfos order by Dateiname;

Diese Dateiauswahl kann nun zum Beispiel dazu genutzt werden, den Anwender eine Excel-Arbeitsmappe für den Import auswählen zu lassen. Dazu legen Sie unter der Liste eine Schaltfläche Importieren (Name= btnImport) an und geben für deren Ereignisprozedur "Beim Klicken" die folgenden Anweisungen ein:

Private Sub btnImport_Click()
  Dim strFName As String

  strFName = Me.lstDatAusw & ""
  If strFName = "" Then
    Beep
    Me.lstDatAusw.SetFocus
    Exit Sub
  End If

  DoCmd.TransferSpreadsheet _
        acImport, _
        acSpreadsheetTypeExcel97, _
        "ExcelImport", _
        strFName

End Sub

Diese Anweisungen prüfen zunächst, ob in der Liste ein Eintrag ausgewählt ist. Wenn nicht, wird ein akustischer Hinweis ausgegeben, die Liste aktiviert und die Routine verlassen. Andernfalls erfolgt der Import (acImport) der ausgewählten Arbeitsmappe (strFName, acSpreadsheetTypeExcel97) per "DoCmd.TransferSpreadsheet" in die Tabelle "ExcelImport".

Möchten Sie in der Dateiauswahl außer Pfad/Dateinamen noch Infos zur Größe und dem Änderungsdatum anzeigen, stellen Sie die Liste einfach auf mehrspaltig ein ("Spaltenanzahl" = 3), setzen die gewünschten Breiten der Spalten (zum Beispiel "Spaltenbreiten" = "5cm;2cm;2cm") und ändern "Datensatzherkunft" auf die folgende SQL-Anweisung:

select * from DateiInfos order by Dateiname;

Um eine solche Dateiauswahl zu realisieren, müssen die Dateiinfos zunächst in eine Tabelle eingelesen werden. Um diesen Zwischenschritt zu vermeiden, können Sie eine so genannte "CallBack-Funktion" einsetzen und darüber die Dateiauswahl, sprich die Liste "lstDatAusw", füllen lassen. Die Callback-Funktion besteht aus zwei Teilen, einer Funktion "DatAuswAufbauen", die Pfad/Dateinamen zunächst in ein Array einliest und der eigentlichen CallBack-Funktion "DatAuswSetzen", die der Liste über deren Eigenschaft "Herkunftstyp" zugeordnet wird und die die Inhalte in die Liste überträgt. Geben Sie zunächst im allgemeinen Teil des Formulars die folgenden Deklarationen und Funktionen ein:

Dim arrDatAusw() As String
Dim intDatAusw As Integer

Function DatAuswAufbauen()
  Dim strPath As String, strFName As String
  Dim R As Variant

  DatAuswAufbauen = False
  Erase arrDatAusw()
  intDatAusw = 0

  strPath = "Z:\Test\"
  strFName = Dir(strPath & "*.xls")
  While strFName <> ""
    intDatAusw = intDatAusw + 1
    ReDim Preserve arrDatAusw(intDatAusw)
    arrDatAusw(intDatAusw) = strPath & strFName
    strFName = Dir()
  Wend

  DatAuswAufbauen = True

End Function

Function DatAuswSetzen(Feld As Control, _
                       ID As Variant, _
                       Zeile As Variant, _
                       Spalte As Variant, _
                       Code As Variant) As Variant

  On Error Resume Next
  Select Case Code

    Case acLBInitialize ' Initialisieren.
      DatAuswSetzen = DatAuswAufbauen()

    Case acLBOpen ' Öffne mit eindeutiger ID
      DatAuswSetzen = Timer

    Case acLBGetRowCount 'Wieviel Zeilen hat die Liste?
      DatAuswSetzen = intDatAusw

    Case acLBGetColumnCount 'Wieviel Spalten?
      DatAuswSetzen = 1

    Case acLBGetColumnWidth ' Spaltenbreite, hier Standard
      DatAuswSetzen = -1

    Case acLBGetValue 'Daten für die Liste liefern
      DatAuswSetzen = arrDatAusw(Zeile + 1)

  End Select

End Function

Stellen Sie dann die Eigenschaft "Herkunftstyp" der Liste auf "DatAuswSetzen" ein und löschen Sie eventuell vorhandene Inhalte in "Datensatzherkunft". Wenn Sie das Formular nun einmal anzeigen lassen, sehen Sie eine Dateiauswahl, die ohne Umwege über eine Tabelle die Dateien eines Verzeichnisses anzeigt.

Und so funktioniert das Ganze: Wenn das Formular angezeigt wird, ruft Access für das Füllen der Liste zunächst "DatAuswSetzen" mit dem Parameter "acLBInitialize" auf, so dass "DatAuswAufbauen" aufgerufen wird und die Dateien einliest. Der zweite und dritte Aufruf mit den Parametern "acLBGetRowCount" und "acLBGetColumnCount" ermittelt dann die Anzahl Einträge für die Liste, die der zuvor in "intDatAusw" festgehaltenen Anzahl Dateien entspricht und die Anzahl Spalten, die hier "1" ist. Weitere Aufrufe mit "acLBGetValue" liefern dann die Inhalte für die einzelnen Einträge der Liste aus dem Array "arrDatAusw".

ANZEIGE 
Komfortable Datensicherung für Outlook

Was würde passieren, wenn Ihre Outlook-Daten plötzlich und unerwartet verloren gehen? 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 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% Aktionsrabatt bestellt werden. Weitere Infos finden Sie unter:

http://www.add-in-world.com/katalog/outlook-backup/

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


 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.

Netzwerk-Domain-Namen ermitteln
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Wir setzen Datenbanken ein, die im Netzwerk über verschiedene Server und Domains verteilt sind. Für die Vereinfachung von Supportanfragen möchten wir gerne im Formular anzeigen, in welcher Domain die aktuelle Datenbank betrieben wird. Können Sie uns einen Tipp geben, wie sich diese Information ermitteln lässt?
T. Carstensen

 ANTWORT:  Dazu nutzen Sie die API-Funktion "GetNetworkParams()", die unter anderem den Namen der Domain liefert, in der der aktuelle Anwender angemeldet ist. Geben Sie zunächst in einem neuen oder vorhandenen Modul die folgenden Deklarationen und Funktionen ein:

Private Const ERROR_SUCCESS = 0
Private Const MAX_DOMAIN_NAME_LEN = 128
Private Const MAX_HOSTNAME_LEN = 128
Private Const MAX_SCOPE_ID_LEN = 256

Private Type IP_ADDRESS_STRING
    IpAddr(0 To 15) As Byte
End Type

Private Type IP_MASK_STRING
    IpMask(0 To 15) As Byte
End Type

Private Type IP_ADDR_STRING
    dwNext As Long
    IpAddress As IP_ADDRESS_STRING
    IpMask As IP_MASK_STRING
    dwContext As Long
End Type

Private Type FIXED_INFO
  HostName(0 To (MAX_HOSTNAME_LEN + 3)) As Byte
  DomainName(0 To (MAX_DOMAIN_NAME_LEN + 3)) As Byte
  CurrentDnsServer As IP_ADDR_STRING
  DnsServerList As IP_ADDR_STRING
  NodeType As Long
  ScopeId(0 To (MAX_SCOPE_ID_LEN + 3)) As Byte
  EnableRouting As Long
  EnableProxy As Long
  EnableDns As Long
End Type

Private Declare Function GetNetworkParams _
        Lib "iphlpapi.dll" _
        (pFixedInfo As Any, _
         pOutBufLen As Long) As Long

Private Declare Sub CopyMemory _
        Lib "kernel32" Alias "RtlMoveMemory" _
        (hpvDest As Any, hpvSource As Any, _
         ByVal cbCopy As Long)

Function NetworkDomainName() As String
  Dim Buffer() As Byte
  Dim cbRequired As Long
  Dim FI As FIXED_INFO
  Dim strResult

  strResult = "???"
  GetNetworkParams 0&, cbRequired
  If cbRequired > 0 Then
    ReDim Buffer(0 To cbRequired - 1) As Byte
    If GetNetworkParams(Buffer(0), cbRequired) = _
                        ERROR_SUCCESS Then
      CopyMemory FI, ByVal VarPtr(Buffer(0)), LenB(FI)
      strResult = TrimNull(StrConv(FI.DomainName, _
                           vbUnicode))
      If strResult = "" Then
        strResult = "Keine Domainanmeldung"
      End If
      NetworkDomainName = strResult
    End If 'If GetNetworkParams
  End If 'If cbRequired > 0

End Function

Legen Sie dann im Formular ein ungebundenes Textfeld an und geben Sie in der Eigenschaft "Steuerelementeinhalt" den folgenden Ausdruck ein:

=NetworkDomainName()

Access-Logo beim Start unterdrücken
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Ich habe eine Datenbankanwendung entwickelt, die bei Kunden zum Einsatz kommt. Beim Start soll nicht unbedingt ersichtlich sein, dass die Lösung auf Access basiert. Kann man das standardmäßig beim Starten von Access angezeigte Logo irgendwie unterdrücken?
K. Frahm

 ANTWORT:  Dazu können Sie ein Feature nutzen, dass normalerweise dazu dient, ein eigenes Logo anzuzeigen: Befindet sich im Verzeichnis der Datenbank eine Bitmapdatei <NamDerDatenbank>.BMP, so wird anstelle des Access-Logos diese Bitmap angezeigt. Legt man nun diese Bitmap in der Größe 1*1 oder 2*2 Pixel an, unterdrückt Access die Anzeige des Logos, zeigt aber die Bitmap aufgrund der zu geringen Größe nicht an:

  1. Erstellen Sie im Verzeichnis, in dem die Datenbank gespeichert ist, eine BMP-Datei, die genau 1*1 oder 2*2 Pixel groß ist. Das BMP-Bild darf nur 256 Farben aufweisen und muss im Format "RGB Encoded" gespeichert werden!
  2. Benennen Sie die BMP-Datei exakt so, wie die Datenbank benannt ist. Wenn also Ihre Datenbank "Adressen.mdb" heißt, muss die BMP-Datei "Adressen.bmp" heißen.
In Zukunft wird nun beim Öffnen Ihrer Datenbank das Access-Logo unterdrückt.

ANZEIGE 
Personal-, Belegungs- und Zeitpläne in Access grafisch darstellen

Hier ist die perfekte Erweiterung für alle Datenbanken, in denen Sie freie und gebuchte/belegte/vergebene Zeiten verwalten: Sie müssen in einer Tabelle lediglich Start- und Enddatumsangaben der einzelnen Vorgänge verwalten und diese Lösung setzt Ihre Daten voll automatisch in ein übersichtliches Balkendiagramm um.

Mit wenig Aufwand integrieren Sie den Plan in Ihre eigenen Datenbanken, wobei eine Fülle von Anwendungen denkbar ist:

  • Urlaubs- und Personalplanung
  • Belegung von Wohnungen oder Häusern
  • Vermietung von Geräten
  • Fahrzeuge eine Fuhrparks
  • Raumbelegung
  • Projekt- und Ressourcenplanung
  • u.v.m.
Die aktuelle Version 2.11 bietet unter anderem jetzt eine Druckfunktion, eine komfortable Feiertagsverwaltung sowie die Integration von Kürzeln für noch aussagekräftigere Darstellungen.

SmartTools Publishing bietet Ihnen diese Lösung in einer komplett ungeschützten Entwicklerversion ohne jegliche Einschränkungen an:

http://www.add-in-world.com/katalog/ac-belegungsplan/


Öffnen von Datenbanken verhindern
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Ich öffne verschiedene Datenbanken über Verknüpfungen auf meinem Desktop. Wenn ich nun einmal kurz den Arbeitsplatz verlasse, können Kollegen die Datenbanken öffnen. Das möchte ich irgendwie verhindern, ich habe aber auch keine Lust, selbst jedes Mal beim Öffnen einer der Datenbanken ein Kennwort eingeben zu müssen. Fällt Ihnen dazu etwas ein?
E. Pohl

 ANTWORT:  Nutzen Sie folgenden Trick:

  • Geben Sie in einem neuen oder vorhandenen Modul der jeweiligen Datenbank die folgende Deklaration und die Funktion "CtrlKey()" ein:
Declare Function GetKeyState Lib "user32" _
        (ByVal nVirtKey As Long) As Integer

Function CtrlKey() As Boolean

   CtrlKey = Abs(GetKeyState(17) < 0)

End Function

  • Legen Sie ein Makro "ExitNow" an und wählen Sie Ansicht-Bedingungen an, um die Spalte "Bedingungen" anzeigen zu lassen.
  • Geben Sie folgende Bedingung ein:
CtrlKey()=Falsch

  • Richten Sie folgende Aktion ein:
Aktion: Verlassen
Optionen: Alles speichern

  • Speichern Sie das Makro und verlassen Sie die Datenbank.
  • Klicken Sie mit der rechten Maustaste auf die Verknüpfung der jeweiligen Datenbank, wählen Sie Eigenschaften an und ergänzen Sie den Aufruf im Feld Ziel um den Parameter "/x ExitNow". Das sieht dann beispielsweise so aus (alles eine Zeile und mit Anführungszeichen, zwischen Programm- und Datenbank-Parameter sowie vor und nach "/x" ein Leerzeichen!):
"D:\Office 2003\Office11\msaccess.exe"
"D:\Daten\Adressen.mdb" /x ExitNow

  • Speichern Sie die Änderungen mit einem Klick auf die Schaltfläche Ok.
Wird nun die Datenbank normal per Doppelklick geöffnet, schließt sie sich sofort wieder, da die Bedingung "CtrlKey()=Falsch" erfüllt ist. Wenn Sie die Datenbank öffnen, halten Sie die Strg-Taste gedrückt. Die Bedingung "CtrlKey()=Falsch" ist dann nicht erfüllt, so dass die Aktion "Verlassen" auch nicht ausgeführt wird, Sie können wie gewohnt mit der Datenbank arbeiten.

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

 Newsletter-Tipp

Office-Tipps kostenlos per E-Mail

Der SmartTools Office Insider ist Ihr monatlicher News-Service für Microsoft Office. Hier finden Sie aktuelle Informationen zu Access, Excel, Word & Co, eine Fülle von Download-Links sowie detaillierte Tipps zu neuen Patches und Updates. So verpassen Sie nichts, was Sie unbedingt zu Microsoft Office wissen müssen.

  • Meldungen über neue Lösungen und Add-Ins zu Office 2003, XP, 2000 und 97
  • Berichte über Updates und Bugfixes.
  • Tipps und effektivere Arbeitstechniken zu Access, Excel, Word & Co.
  • Hinweise auf kostenlose Downloads zu Office 2003, 2002/XP, 2000 und 97
  • Antworten auf Ihre Fragen zu Microsoft Office.
Und das beste am SmartTools Office Insider: Er ist vollkommen kostenlos!

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.