Von: access-weekly-html-request@smarttools.de im Auftrag von SmartTools Publishing [access-weekly-html-reply@smarttools.de]
Gesendet: Freitag, 16. September 2005 00:49
An: Access Weekly Abonnenten
Betreff: SmartTools Access Weekly vom 16.9.2005

Ausgabe vom 16. September 2005

 In dieser Ausgabe

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

News: Neue Version der umfangreichsten Sourcecode-Bibliothek für Access

Das Total Visual SourceBook ist das absolute Muss für jeden Entwickler in Access 2003, 2002/XP und 2000. Für Ihre Projekte in Access erhalten Sie komplett ungeschützten, offenen und frei verwendbaren Sourcecode. Ab sofort steht die neue Version 2003 mit erweiterten und neuen Prozeduren zur Verfügung. Alles in allem erhalten Sie:

  • Mehr als 160 Klassen und Module...
  • Über 2.300 Prozeduren...
  • Über 85.000 Zeilen Quellcode...
Das alles gibt es zurzeit für einen sensationell günstigen Einführungspreis zur freien Verwendung in beliebig vielen Applikationen. Damit steht Ihnen jederzeit das Know-how von einem ganzen Team erfahrener Entwickler per Mausklick zur Verfügung.

Alle Prozeduren sind getestet, voll dokumentiert und so entwickelt, dass Sie sie sofort in Ihren Projekten einsetzen können. Sie können die Bibliothek außerdem mit wenig Aufwand um Ihre persönlichen Prozeduren erweitern und so Stück für Stück Ihre individuelle Code-Datenbank aufbauen. Weitere Infos unter:

Total Visual SourceBook

Download-Tipp: Access-Berichte komfortabel drucken

Die Ausgabe von Access-Berichten kann einige Zeit in Anspruch nehmen, wenn es sich um große Datenmengen handelt oder Berechnungen enthalten sind. Mit dem kostenlosen SmartTools MultiPrint für Access müssen Sie in Zukunft nicht mehr wartend vor dem Rechner sitzen, sondern verlegen den Ausdruck Ihrer Berichte ganz einfach in die Mittagspause oder auf den Feierabend.

Nach der automatischen Installation steht Ihnen ein neuer Menüpunkt zur Verfügung, über den Sie MultiPrint jederzeit aufrufen können. Der Assistent zeigt eine Liste aller verfügbaren Berichte an und Sie markieren einfach die gewünschten Einträge. Ein weiterer Mausklick genügt dann und Access gibt voll automatisch einen Bericht nach dem anderen aus:

 SmartTools MultiPrint für Acccess

News: Microsoft gewährt erste Einblicke in Office 12

Auf der Entwicklerkonferenz PDC 2005 in Los Angeles hat Microsoft am Dienstag erstmal die nächste Office-Version öffentlich vorgestellt. Bereits auf den ersten Blick ist zu erkennen, dass die Benutzeroberfläche komplett überarbeitet wurde. Ziel der Entwickler war es, den Anwendern einen möglichst einfachen Zugriff auf die verfügbaren Funktionen in den einzelnen Office-Applikationen zu geben. Daher hat man sich von dem bisherigen Konzept mit Menüs und Symbolleisten verabschiedet. An ihre Stelle treten aufgabenorientierte "ribbons", die alle Funktionen zu einem bestimmten Themenbereich zusammenfassen. Auf diese Weise soll die Suche nach Befehlen oder Funktionen entfallen, denn es gibt keine Symbolleisten oder Menüpunkte mehr, die man explizit einblenden oder aktivieren muss. Wenn Sie etwas formatieren möchten und sich beispielsweise gerade in einer Tabelle befinden, sind in dem "ribbon" automatisch alle verfügbaren Funktionen sichtbar. Weitere Informationen und einige Bilder von Office 12 finden Sie in der folgenden Pressemitteilung:

Einblicke in Office 12

Weitere Bilder finden Sie hier:

Bilder zu Office 12

Während bereits einige Details zu den Neuerungen in Excel Word, Outlook und PowerPoint veröffentlicht wurden, fließen die Informationen zu Access 12 noch recht spärlich. In der oben erwähnten Pressemeldung von Microsoft, finden Sie lediglich eine Abbildung von Access 12. Ein weiteres Bild, das ein Teilnehmer an der PDC-Konferenz online gestellt hat, finden Sie hier:

Bild zu Access 12

Außerdem konnten wir in Erfahrung bringen:

  • Erweiterte Filterfunktionen nach dem Vorbild von Excel.
  • Komplett überarbeitetes Berichts-Design.
  • Komfortable Integration und Aktualisierung von Outlook-Daten.
  • Erweiterte Möglichkeiten zur Speicherung von Daten auf einem SharePoint-Server.
  • Neue Möglichkeiten zur Datenerfassung über InfoPath und Outlook
"Office 12" soll in der zweiten Jahreshälfte 2006 zeitlich mit der nächsten Windows-Version "Vista" erscheinen.

Techinfo: SQL-Datenbanken komfortabel sichern

Die MSDN-Spezialisten stellen in einer deutschsprachigen Techinfo zwei Funktionen "BackupSqlDatabase" und "RestoreSqlDatabase" vor, mit deren Hilfe Sie beliebige SQL-Datenbanken per VBA und ADO sichern und wieder zurückspielen können. Die dabei generierten Backup-Dateien können in einem beliebigen Verzeichnis auf dem SQL Server abgelegt bzw. aus einem beliebigen Verzeichnis vom SQL Server wieder eingelesen werden:

SQL-Datenbanken komfortabel sichern

Die gezeigten Beispiele können Sie nach kleinen Anpassungen direkt für eigene Projekte übernehmen.

 Access-Tipp der Woche

Protokollfunktion für Ihre Datenbanken, Teil 2
Versionen: Access 2003, 2002/XP, 2000 und 97

Nachdem wir Ihnen in der letzten Ausgabe die Basis einer Protokollfunktion für Access in Form der Prozedur "WriteLOG" vorgestellt haben, geht es nun im zweiten Teil um Funktionen für den Abruf weitergehender Access-, Netzwerk- und Systeminfos und deren Einsatz mit "WriteLOG".

Mit der Funktion "SysCmd()" stellt Access zunächst eine "Allround-Funktion" zur Verfügung, über die Sie verschiedene Informationen zu Access abfragen können. Dazu ist "SysCmd()" ein Parameter zu übergeben, der die benötigte Information spezifiziert. Ein Beispiel dazu haben wir im ersten Teil bereits mit "SysCmd(acSysCmdAccessVer)" für die Abfrage der Access-Version kennen gelernt. Daneben können Sie über "SysCmd()" noch das Installationsverzeichnis von Access, die aktuelle Arbeitsgruppendatei abfragen und feststellen, ob die aktuelle Datenbank mit der Runtime-Umgebung läuft.

Damit Sie sich die kryptischen Parameterbezeichnungen nicht merken müssen, setzen Sie Einzelfunktionen mit aussagekräftigeren Namen ein, die Sie in das im ersten Teil angelegte Modul "modWriteLOG" eingeben:

Function AccVersion() As Byte
    Dim intTemp As Integer, strTemp As String

    strTemp = CStr(SysCmd(acSysCmdAccessVer))
    intTemp = Val(Left$(strTemp, 2))
    AccVersion = intTemp

End Function

Function AccDir() As String

    AccDir = SysCmd(acSysCmdAccessDir)

End Function

Function AccSystemMDW() As String

    AccSystemMDW = SysCmd(acSysCmdGetWorkgroupFile)

End Function

Function AccIsRuntime() As Boolean

    AccIsRuntime = SysCmd(acSysCmdRuntime)

End Function

Alle Funktionen werden ohne Parameter aufgerufen und liefern die gewünschten Informationen als Zeichenkette. Ausnahme ist "AccIsRuntime()" - hier wird "True" oder "False" als Ergebnis geliefert. Den Aufruf bauen Sie zum Beispiel in eine Funktion "GenerelleInfos()" ein, die über eine Aktion "AusführenCode" im Makro "AutoExec" beim Öffnen der Datenbank ausgeführt wird:

Function GenerelleInfos()

  WriteLOG String$(75, "-")
  WriteLOG "Access-Version: " & AccVersion()
  WriteLOG "Access-Verzeichnis: " & AccDir()
  WriteLOG "Access-MDW: " & AccSystemMDW()
  WriteLOG "Access-Runtime: " & CStr(AccIsRuntime())

End Function

Diese Funktion schreibt gleichzeitig mit Hilfe von "String$()" eine Trennlinie in das Protokoll, damit die Sessions einfacher unterschieden werden können.

Die API-Funktion "GetSystemMetrics()" liefert die unterschiedlichsten Informationen über die Benutzeroberfläche wie beispielsweise die Höhe einer Menüzeile oder einer Titelleiste, die Breite von Rahmen und Rollbalken oder der aktuellen Doppelklick-Geschwindigkeit:. Über einen Parameter "nIndex" spezifizieren Sie die benötigte Information. Hierfür sind entsprechende Konstanten wie zum Beispiel "SM_CXSCREEN" oder "SM_CYSCREEN" im API festgelegt, die Sie im allgemeinen Teil des Moduls "modWriteLOG" wie folgt deklarieren:

Declare Function GetSystemMetrics Lib "user32" _
(ByVal nIndex As Long) As Long

Public Const SM_CXSCREEN = 0
Public Const SM_CYSCREEN = 1

Diese beiden Konstanten legen fest, dass als Information die aktuelle Auflösung des Bildschirms (horizontal= SM_CXSCREEN, vertikale= SM_CYSCREEN) geliefert wird. Basierend darauf lassen sch nun zwei Funktionen "GetScreenX()" und "GetScreenY()" realisieren, die die horizontale und vertikale Bildschirmauflösung liefern:

Function GetScreenX() As Long

    GetScreenX = GetSystemMetrics(SM_CXSCREEN)

End Function

Function GetScreenY() As Long

    GetScreenY = GetSystemMetrics(SM_CYSCREEN)

End Function

Den Aufruf bauen Sie dann bei Bedarf in die beim Öffnen de Datenbank per "AutoExec" aufgerufene Funktion "GenerelleInfos()" ein und können so die aktuelle Bildschirmauflösung in das Protokoll schreiben lassen:

Function GenerelleInfos()

  WriteLOG String$(75, "-")
  WriteLOG "Auflösung: " & _
           GetScreenX() & "*" & GetScreenY()

End Function

Anhand des Windows-Anmeldenamens und des Rechnernamens lassen sich beispielsweise Zugriffsprobleme in bestimmten Netzwerksegmenten einfacher lokalisieren oder Änderungen protokollieren. Dazu können Sie zwei API-Funktionen "GetUserName()" und "GetComputerName()" nutzen, die über zwei "Wrapper"-Funktionen "GetNetworkUserName()" und "GetNetworkComputerName()" aufgerufen werden:

Declare Function GetUserName Lib "advapi32.dll" _
        Alias "GetUserNameA" _
        (ByVal lpBuffer As String, nSize As Long) As Long

Declare Function GetComputerName Lib "kernel32" _
        Alias "GetComputerNameA" _
       (ByVal lpBuffer As String, nSize As Long) As Long

Function GetNetworkUserName() As String
  Dim lngMaxLen As Long, lngResult As Long
  Dim strUserName As String

   lngMaxLen = 250
   strUserName = String$(lngMaxLen, 0)
   lngResult = GetUserName(strUserName, lngMaxLen)
   If lngResult <> 0 Then
    GetNetworkUserName = _
    Trim$(Left$(strUserName, lngMaxLen - 1))
   Else
    GetNetworkUserName = ""
   End If

End Function

Function GetNetworkComputerName() As String
  Dim lngMaxLen As Long, lngResult As Long
  Dim strComputerName As String

  lngMaxLen = 16
  strComputerName = String$(lngMaxLen, 0)
  lngResult = GetComputerName(strComputerName, lngMaxLen)
  If lngResult <> 0 Then
    GetNetworkComputerName = _
      Trim$(Left$(strComputerName, lngMaxLen))
  Else
    GetNetworkComputerName = ""
  End If

End Function

Damit ließe sich dann beispielsweise eine Feld-Änderung über die Ereignisprozedur "Nach Aktualisierung" wie folgt protokollieren:

WriteLOG "Feld 'Telefon' geändert von " & _
         GetNetworkUserName() & "/" & _
         GetNetworkComputerName()

Die hier als vorgestellten Funktionen zur Abfrage weitergehender Informationen sind nur ein kleiner Ausriss dessen, was möglich ist. Wenn Sie einmal über Google Groups (http://groups.google.de) nach "vba api get system informations" suchen, finden Sie Dutzende von weiteren Routinen, die sich in Verbindung mit "WriteLOG" einsetzen lassen.

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

Haben Sie Fragen zu Access 2003, 2002/XP, 2000 oder 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.

Unterbericht auf 20 Zeilen begrenzen
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  In einer Kundenverwaltung habe ich einen Bericht mit den Kundenstammdaten erstellt und gebe in einem Unterbericht dazu die Rechungskopfdaten als Liste (jede Rechnung eine Zeile) aus. Ich möchte aber nur die letzten 20 Rechnungen des Kunden in dem Unterbericht anzeigen und ausdrucken. Wie kann ich diese Anzahl auf maximal 20 Datensätze begrenzen?
W. Bicheler

 ANTWORT:  Ändern Sie zunächst die dem Unterbericht zugrunde liegende Abfrage so, dass die Datensätze chronologisch absteigend nach Rechnungsdatum sortiert werden (neueste Rechnung ganz oben). Wählen Sie dann das Menü Ansicht-Eigenschaften an und stellen Sie die Eigenschaft "Spitzenwerte" auf "20" ein.

Parameter '/wrkgrp' richtig einsetzen
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Ich habe bezüglich Ihres Beitrags "Zugriff auf offene und geschützte Datenbanken" ein ähnliches Problem: Ich möchte die Anmeldung auf eine auf dem Netzwerk liegende Datenbank benutzen und bin so vorgegangen, wie Sie es vorschlagen. Nur leider greift Access nicht wie erwartet auf die MDW zu. Ich benutze eine Verknüpfung mit folgendem Ziel:

O:\Lichttechnik\Leuchtendatenbank\
Leuchtendatenblatt.mdb /wrkgrp"
O:\Lichttechnik\Leuchtendatenbank\SPEZIAL.MDW"

Leider erhalte ich keinen Anmeldedialog und wenn ich in einem Formular den Befehl

MsgBox SysCmd(acSysCmdGetWorkgroupFile))

aufrufe, bekomme ich die Meldung, dass die Workgroup-Datei noch meine Standard.MDW ist. Was habe ich falsch gemacht?
I. Ellis

 ANTWORT:  In der Verknüpfung muss zusätzlich zu diesen Angaben noch der Aufruf der MSACCESS.EXE hinzugefügt werden. Außerdem ist die Spezifikation der Datenbank immer der letzte Parameter. Im Feld Ziel muss also zum Beispiel folgendes stehen:

"C:\Programme\Office 2000\Office\msaccess.exe"
/wrkgrp "O:\Lichttechnik\Leuchtendatenbank\SPEZIAL.MDW"
"O:\Lichttechnik\Leuchtendatenbank\Leuchtendatenblatt.mdb"

Bitte beachten Sie, dass alle drei Angaben in einer Zeile und jeweils durch Leerzeichen getrennt eingegeben werden müssen.

ANZEIGE 
Kalender, Kontakte und E-Mails aus Outlook auch ohne Exchange-Server im Team nutzen

Mit OLXTeamOutlook, der neuesten Generation intelligenter Team-Software für Outlook 2003, 2002/XP, 2000, 98 und 97 nutzen Sie Ihre Outlook-Daten in Zukunft noch effizienter:

  • Nutzen Sie ab sofort Ihre Termine, Aufgaben, Kontakte, E-Mails und Notizen aus Outlook gemeinsam mit anderen Anwendern im Netzwerk.
  • Richten Sie mit wenigen Mausklicks öffentliche Ordner für Gruppentermine, Raumbelegungen, gemeinsamen Firmenadressen usw. ein oder geben Sie einen oder mehrere Ihrer persönlichen Ordner mit Terminen, Kontakten, E-Mails etc. für andere Anwender frei.
  • Alle Änderungen und Neueingaben in den gemeinsamen Ordnern sind immer sofort ohne Verzögerung in den Ordnern der anderen Teilnehmer sichtbar.
  • Im nützlichen Gruppenkalender sehen Sie jederzeit die Termine aller freigegebenen Kalender im Wochenüberblick.
  • Sie benötigen keinen Exchange-Server, sondern lediglich ein freigegebenes Verzeichnis im Netzwerk, auf das alle beteiligten Anwender zugreifen können. Dieses Verzeichnis muss sich noch nicht einmal auf einem Server befinden! Jeder beliebige Rechner in Ihrem Netzwerk kann diese Aufgabe übernehmen
  • Der Datenabgleich mit PDA's und Handy's ist weiterhin ohne Probleme möglich.
OLXTeamOutlook ist komplett in Outlook integriert. Unterstützt werden alle Versionen. Also: Outlook 2003, 2002/XP, 2000, 98 und 97. Sie können innerhalb eines Netzwerkes auf Wunsch sogar unterschiedliche Outlook-Versionen nutzen!

Weitere Informationen zu dieser brandneuen Outlook-Erweiterung finden Sie unter:

OLXTeamOutlook


Umlaute korrekt importieren
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Wir importieren mit Access Daten, die aus verschiedenen Fachbereichen zur Verfügung gestellt werden. Die in den TXT-Dateien enthaltenen Umlaute und Sonderzeichen wie das "ß" (SZ) werden dabei leider "verstümmelt", also beispielsweise als Rechteck umgesetzt. Wissen Sie eine Lösung für das Problem?
P. Mathess

 ANTWORT:  Klicken Sie beim Import auf der ersten Seite des Import-Assistenten auf die Schaltfläche Weitere. Stellen Sie dort unter "Codepage" den Eintrag "Unicode (UTF-8)" ein und übernehmen Sie die Änderungen mit einem Klick auf Ok. Führen Sie den Import dann wie gewohnt weiter aus, Umlaute und Sonderzeichen werden nun korrekt umgesetzt.

 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 © 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/