Von: access-weekly-html-request@smarttools.de im Auftrag von SmartTools Publishing [access-weekly-html-reply@smarttools.de]
Gesendet: Freitag, 4. November 2005 00:40
An: Access Weekly Abonnenten
Betreff: SmartTools Access Weekly vom 4.11.2005

Ausgabe vom 4. November 2005

 In dieser Ausgabe

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

Spotlight: 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:

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

Download-Tipp: Flexible Formulare per SQL

Normalerweise liefern Tabellen oder Abfragen die Datenbasis für Ihre Formulare in Access. Häufig möchten Sie jedoch eine Selektion von Datensätzen bearbeiten, die bestimmten Kriterien entsprechen. In der Regel definieren Sie dann einen Formularbasierten Filter, der die entsprechenden Datensätze zusammenfasst - beispielsweise alle Kunden aus Belgien oder alle Artikel mit einem Preis kleiner 5,00 EUR. Schneller und komfortabler wäre in solchen Fällen der Einsatz einer kurzen SQL-Anweisung wie "select * from Kunden where Land='Belgien'" - allerdings bietet Access keine Möglichkeit, SQL-Statements schnell einzugeben und das Ergebnis direkt in einem Formular anzuzeigen.

SmartTools SQL für Formulare hilft weiter: Das Add-In steht Ihnen in allen Datenbanken von Access 2003, 2002/XP, 2000 und 97 über das Menü Extras-Add-Ins zur Verfügung und erlaubt die Eingabe und Zuordnung von SQL-Anweisungen für das aktuell geöffnete Formular. Nach dem Aufruf geben Sie einfach eine entsprechende SQL-Anweisung ein und klicken auf Ok - anschließend können Sie die selektierten Datensätze wie gewohnt im Formular durchblättern und bearbeiten.

Das Add-In merkt sich die durchgeführten Abfragen, so dass Sie auf die am häufigsten benötigten Anweisungen jederzeit mit wenigen Mausklicks zugreifen können. Möchten Sie dem Formular wieder die ursprüngliche Datenbasis, also die beim Entwurf festgelegte Tabelle oder Abfrage, zuordnen, klicken Sie im Add-In einfach auf Zurücksetzen. Sie finden den kostenlosen Download unter:

 SQL für Formulare kostenlos herunterladen

Techinfo: SQL Server 2005 Express absichern

Mit dem SQL Server 2005 Express stellt Microsoft eine kostenlose Version des SQL Server 2005 als Nachfolger der bislang angebotenen MSDE zur Verfügung, die auch mit Access 2003, 2002/XP und 2000 ausgeliefert wurde. Die Express-Version des SQL Server 2005 eignet sich einerseits für den Einsatz als SQL-Back-End in kleinen Netzwerken und soll andererseits Entwicklern Aufbau und Test SQL-basierter Lösungen vereinfachen. An eine solche "Light"-Version werden die gleichen Sicherheitsanforderungen gestellt, wie an einen "großen" SQL Server. Welche Möglichkeiten der SQL Server 2005 Express dazu bietet und wie sie genutzt werden, erläutert ein umfangreiches White Paper, das Sie unter der folgenden Adresse finden:

Techinfo zur Absicherung des SQL Server 2005 Express

Die Autoren befassen sich aber nicht nur mit der Absicherung des SQL Server 2005 Express; sie vermitteln gleichzeitig Grundlagen, geben wertvolle Tipps und Hinweise zur Installation, erläutern die Einrichtung der Verbindungen und zeigen Lösungsansätze für eventuell auftretende Probleme.

 Access-Tipp der Woche

Hyperlinks aus Memofeldern direkt im Browser öffnen
Versionen: Access 2003, 2002/XP, 2000 und 97

In Ihren Datenbanken speichern Sie regelmäßig Texte in Memofeldern, die häufig Hyperlinks der Form "http://www.anbieter.de/seite.htm" enthalten. Um eine solche Webseite aufzurufen, markieren Sie normalerweise die Adresse im Memofeld, kopieren die Adresse in die Zwischenablage, starten den Browser Explorer, fügen die Adresse dort wieder ein und drücken die Return-Taste. Dieser Vorgang lässt sich jedoch mit wenig Aufwand auf das Markieren der Adresse im Memofeld und einen Klick auf eine Schaltfläche neben dem Memofeld reduzieren.

Schlüssel zu dieser Lösung ist die API-Funktion "ShellExecute()", die normalerweise eingesetzt wird, um eine DOS- oder Windows-Anwendung zu starten:

ShellExecute 0&, vbNullString, "access.exe", _ vbNullString, vbNullString, vbNormalFocus

Wenig bekannt ist die Tatsache, dass dieser API-Funktion anstelle des Dateinamens einer Anwendung auch eine Hyperlink-Adresse übergeben werden kann. "ShellExecute()" erkennt am Zusatz wie beispielsweise "http://", dass es sich um eine Internet-Adresse handelt, startet automatisch die dazugehörige Anwendung und übergibt ihr die anzuzeigende Adresse als Parameter. Um eine solche Lösung in Ihren Datenbanken einzusetzen, gehen Sie wie folgt vor:

  • Geben Sie in einem neuen oder in einem vorhandenen Modul die folgende Deklaration und die Funktion "OpenURL()" ein:
Public Declare Function ShellExecute Lib "shell32.dll" _
       Alias "ShellExecuteA" ( _
       ByVal hWnd As Long, _
       ByVal lpOperation As String, _
       ByVal lpFile As String, _
       ByVal lpParameters As String, _
       ByVal lpDirectory As String, _
       ByVal nShowCmd As Long) As Long

Function OpenURL(strURL As String) As Boolean
  Dim R As Variant

  On Error Resume Next
  OpenURL = True
  R = ShellExecute(0&, vbNullString, strURL, _
                   vbNullString, _
                   vbNullString, _
                   vbMaximizedFocus)
  If Err <> 0 Or R < 32 Then
    Beep
    MsgBox strURL & " konnte nicht geöffnet werden...", _
           vbOKOnly + vbExclamation, "OpenURL:"
    OpenURL = False
  End If

End Function

  • Der Funktion wird als Parameter "strURL" die im Browser anzuzeigende Adresse übergeben, die sie dann an "ShellExecute()" weiterreicht. Kommt es beim Aufruf von "ShellExecute()" zu einem Fehler oder ist die Rückmeldung kleiner "32", konnte die Adresse nicht geöffnet werden - wir zeigen dann eine entsprechende Meldung zur Information des Anwenders an.
  • Öffnen Sie das Formular mit dem Memofeld, aus dem Hyperlinks geöffnet werden sollen, im Entwurfsmodus.
  • Wählen Sie das Menü Ansicht-Code an, um die VBA-Entwicklungsumgebung zu öffnen.
  • Geben Sie im allgemeinen Teil des Formulars die folgende Deklaration ein:
Dim strHyperlinkAusMemo As String

  • Markieren Sie das Memofeld und wählen Sie das Menü Ansicht-Eigenschaften an.
  • Stellen Sie die Eigenschaft "Bei Fokusverlust" auf "[Ereignisprozedur]" ein, klicken Sie auf die Schaltfläche mit den drei Punkten und geben Sie im VBA-Editor die folgende Anweisung ein:
Private Sub Testfeld_LostFocus()

  strHyperlinkAusMemo = Me.Testfeld.SelText

End Sub

  • "Testfeld" ersetzen Sie dabei durch den Namen des Memofeldes in Ihrem Formular. Diese Anweisung sorgt dafür, dass beim Verlassen des Memofeldes ein eventuell markierter Text in der globalen Variablen "strHyperlinkAusMemo" festgehalten wird.
  • Stellen Sie die Eigenschaft "Bei Fokuserhalt" auf "[Ereignisprozedur]" ein, klicken Sie auf die Schaltfläche mit den drei Punkten und geben Sie im VBA-Editor die folgende Anweisung ein:
Private Sub Testfeld_GotFocus()

  strHyperlinkAusMemo = ""

End Sub

  • Diese Anweisung sorgt dafür, dass beim Aktivieren des Memofeldes die globale Variable "strHyperlinkAusMemo" zurückgesetzt wird. Andernfalls könnte es passieren, dass nach einem Datensatzwechsel und Klick auf die Schaltfläche Hyperlink öffnen (siehe 8.) ein zuvor markierter Hyperlink geöffnet wird.
  • Legen Sie neben oder unter dem Memofeld eine Schaltfläche "btnMemoURL" oder ähnlich mit der Beschriftung Hyperlink öffnen an, stellen Sie deren Eigenschaft "Beim Klicken" auf "[Ereignisprozedur]" ein, klicken Sie auf die Schaltfläche mit den drei Punkten und geben Sie im VBA-Editor die folgenden Anweisungen ein:
Private Sub btnMemoURL_Click()
  Dim fOK As Boolean

  If strHyperlinkAusMemo = "" Then Exit Sub
  fOK = OpenURL(Chr$(34) & strHyperlinkAusMemo & Chr$(34))

End Sub

Diese Anweisung prüft zunächst, ob in "strHyperlinkAusMemo" eine Adresse vorhanden ist - wenn nicht, wird die Routine ohne weitere Aktionen verlassen. Andernfalls ruft die Ereignisprozedur die Funktion "OpenURL()" auf und übergibt dabei die zuvor in die Variable "strHyperlinkAusMemo" übertragene Adresse als Parameter.

ANZEIGE 
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? 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:

SmartTools Outlook Backup 2.0


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

Ergebnisse von Abfragen importieren
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  In verschiedenen Datenbanken mit Adressen wähle ich über Auswahlabfragen Datensätze als Basis für den Word-Seriendruck aus. Die Ergebnisse übertrage ich per Rechtsklick auf die Abfragen und Speichern unter bzw. Exportieren in eine zentrale Datenbank "Adressen Word Seriendruck". Darauf basierend werden dann einmal wöchentlich Angebote erstellt. Ich muss also jede Woche mehrere Datenbanken öffnen und die Ergebnisse der einzelnen Abfragen in die zentrale Seriendruck-Datenbank übertragen. Lässt sich diese Aufgabe irgendwie automatisieren oder zumindest vereinfachen?
S. Thomsen

 ANTWORT:  Sie können sich das Öffnen der einzelnen Datenbanken sparen und stattdessen die Ergebnisse der einzelnen Abfragen wie folgt importieren:

  1. Öffnen Sie die zentrale Datenbank.
  2. Wählen Sie dort für jedes zu importierende Ergebnis das Menü Datei-Externe Daten-Importieren an.
  3. Lokalisieren Sie die betreffende Datenbank, wechseln Sie auf die Registerkarte "Abfragen", markieren Sie die Abfrage und klicken Sie zunächst auf Optionen.
  4. Aktivieren Sie hier im Bereich "Abfragen importieren" die Option Als Tabellen.
  5. Starten Sie den Import mit einem Klick auf Ok.
Die Ergebnisse der Abfragen finden Sie dann als Tabellen mit dem Namen der jeweiligen Abfrage in der zentralen Datenbank, von wo aus Sie sie im Word-Seriendruck als Datenquelle auswählen können. Automatisieren lässt sich der Vorgang leider nicht, da die dazu notwendige Aktion "TransferDatenbank" bzw. "DoCmd.TransferDatabase" die Einstellung bzw. Spezifizierung des Parameters "Als Tabelle" nicht unterstützt.

Prüfen auf laufende Word- oder Excel-Instanzen
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Aus einer Datenbank sollen unsere Anwender zum Beispiel eine Adresse oder Preise in ein Word-Dokument oder ein Excel-Tabellenblatt übernehmen. Voraussetzung soll sein, dass sie ein bestimmtes Dokument oder eine bestimmte Arbeitsmappe bereits geöffnet haben, damit wir dort die Daten an entsprechenden Textmarken oder in benannte Bereiche einfügen können. Wie lässt sich 1. prüfen, ob Word oder Excel überhaupt laufen und wie können wir 2. feststellen, ob die benötigten Textmarken und Bereiche vorhanden sind?
U. Wilken

 ANTWORT:  Um festzustellen, ob Word oder Excel laufen, nutzen Sie folgenden Mechanismus:

Dim objWord As Word.Application

On Error Resume Next
Set objWord = GetObject(, "Word.Application")
If Err <> 0 Or objWord Is Nothing Then 'Word läuft nicht

Dim objExcel As Excel.Application

On Error Resume Next
Set objExcel = GetObject(, "Excel.Application")
If Err <> 0 Or objExcel Is Nothing Then 'Excel läuft nicht

Beides setzt voraus, dass eine Referenz auf "Microsoft Word x.x Object Library" bzw. "Microsoft Excel x.x Object Library" gesetzt ist. "x.x" steht für "11.0" bei Word/Excel 2003, "10.0" für Word/Excel 2002/XP, "9.0" für Word/Excel 2000 oder "8.0" für Word/Excel 97. "GetObject()" liefert eine Referenz auf eine laufende Instanz einer Anwendung. Ist die betreffende Anwendung nicht gestartet, kommt es zu einem Laufzeitfehler, der sich entsprechend abfangen lässt.

Das Vorhandensein einer bestimmten Textmarke in einem Word-Dokument können Sie dann wie folgt prüfen:

With objWord
  If .ActiveDocument.Bookmarks.Exists("Name") Then
    'Textmarke vorhanden
  Else
    'Textmarke nicht vorhanden
  End If
End With

"Name" ersetzen Sie durch den Namen der zu prüfenden Textmarke. Im Gegensatz zu Word stellt Excel keine "Exists"-Funktion für Bereiche zur Verfügung. Hier hilft folgende Abfrage:

  Dim n As Name

  On Error Resume Next
  Set n = ActiveWorkbook.Names("Name")
  If Err <> 0 Or n Is Nothing Then 'Nicht vorhanden

"Name" ersetzen Sie durch den Namen des zu prüfenden Bereiches.

ANZEIGE 
Datenbankunterschiede automatisch finden mit dem Total Access Detective

Sie haben Datenbanken in unterschiedlichen Versionen vorliegen oder mehrere Anwender bzw. Entwickler arbeiten an einer Datenbank? Der Total Access Detective ist eine Access-Erweiterung, die gezielt für den Vergleich von Tabellen, Formularen/Berichten, Abfragen, Makros und VBA-Prozeduren entwickelt wurde.

Der Total Access Detective beantwortet die folgenden Fragen:

  • Welche Datensätze sind neu oder wurden bearbeitet?
  • Gibt es Unterschiede in den Tabellendefinitionen?
  • Wo weichen Abfragen, Formulare oder Berichte voneinander ab?
  • Welchen Zeilen der VBA-Module wurden geändert?
Weitere Informationen finden Sie unter:

Total Access Detective für Access 2003

Total Access Detective für Access 2002

Total Access Detective für Access 2000


Beschreibung aus Datenbankfenster in Bericht setzen
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Wir haben für alle Objekte im Datenbankfenster über die Eigenschaften eine detaillierte Beschreibung eingegeben. Diese Beschreibungen sollen bei Berichten in einem Bezeichnungsfeld unter dem Berichtstitel ausgegeben werden. Ist das möglich ist?
B. Roth

 ANTWORT:  Öffnen Sie die Berichte im Entwurfsmodus und setzen Sie zunächst eine Referenz auf "Microsoft DAO x.x Object Library". "x.x" steht für "3.6" bei Access 2003/2002 und "3.51" bei Access 2000/97. Geben Sie dann jeweils in der Ereignisprozedur "Beim Öffnen" die folgenden Anweisungen ein:

Private Sub Report_Open(Cancel As Integer)
  Dim db As DAO.Database
  Dim cnt As DAO.Container
  Dim dmt As DAO.Document
  Dim strDescr As String

  On Error Resume Next
  Set db = CurrentDb()
  Set cnt = db.Containers("Reports")
  Set dmt = cnt.Documents(Me.Name)
  strDescr = dmt.Properties("Description")
  Me.lblDescr.Caption = strDescr
  Set dmt = Nothing
  Set cnt = Nothing
  Set db = Nothing

End Sub

"lblDescr" ersetzen Sie dabei durch den Namen des Bezeichnungsfeldes, in das die Beschreibung übertragen werden soll. Die Anweisungen setzen beim Öffnen des Berichtes eine Referenz auf die Definition des Berichtes (Database.Containers("Reports").Documents("BerichtsName"). Diese Definition verfügt über eine Auflistung "Properties" (Eigenschaften), eine dieser Eigenschaften ist "Description" (Beschreibung) und entspricht der im Eigenschaftenfenster eingegeben Beschreibung.

 Newsletter-Tipp

Word-Tipps kostenlos per E-Mail

SmartTools Word Weekly ist unser beliebter E-Mail-Newsletter mit kostenlosen Tipps rund um Word 2003, 2002/XP, 2000 und 97:

  • Undokumentierte Parameter und Funktionen
  • Berichte über Bugs, Patches und Sicherheitslücken
  • Fertige Makros zur Automatisierung häufiger Arbeitsvorgänge
  • Perfekte Datensicherung Ihrer Dokumente
  • So nutzen Sie Word im Netzwerk
  • Helpline für Ihre Fragen zu Word
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/