Von: access-weekly-html-request@smarttools.de im Auftrag von SmartTools Publishing [access-weekly-html-reply@smarttools.de]
Gesendet: Donnerstag, 10. November 2005 23:14
An: Access Weekly Abonnenten
Betreff: SmartTools Access Weekly vom 11.11.2005

Ausgabe vom 11. November 2005

 In dieser Ausgabe

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

Spotlight: Resizer und weitere neue Steuerelemente für Ihre Formulare in Access 2003, 2002/XP und 2000

Die Total Access Components 2003 für Access 2003, 2002/XP und 2000 bieten 29 neue Steuerelemente, für Ihre Formulare und Berichte. Angefangen bei komfortablen Eingabehilfen, über grafische Statusanzeigen, Uhren, einen Taschenrechner, neue 3D- und Animationseffekte bis hin zu elektronischen Post-It's und Multimedia-Controls finden Sie alles, was Sie für noch leistungsfähigere und komfortablere Formulare bzw. Berichte brauchen.

Neu in der aktuellen Version 2003 ist außerdem ein "BrowseForFolder"-Steuerelement zur komfortablen Ordnerauswahl und ein "DateTimePicker" für die Datumsauswahl aus einem kleinen Popup-Kalender, wie Sie ihn beispielsweise aus Outlook kennen.

Das absolute Highlight der Total Access Components ist der "Resizer". Er löst für Sie sämtliche Probleme, die Sie bisher durch Systeme mit unterschiedlichen Bildschirmauflösungen hatten. Sie entwerfen nur noch ein einziges Formular und platzieren darauf den Resizer. In Zukunft vergrößert oder verkleinert der Resizer für Sie sämtliche Steuerelemente proportional zur aktuellen Bildschirmauflösung.

Aber auch dynamische Veränderungen sind möglich: der Anwender kann die Größe des Formulars auf jedes gewünschte Maß verändern und der Resizer verändert parallel dazu die Steuerelemente auf die passende Größe. Das alles geschieht blitzschnell und funktioniert sogar mit Unterformularen! Ausführliche Informationen finden Sie unter:

Total Access Components 2003

Download-Tipp: Doppelseitendruck für Access-Berichte

Wenn Sie umfangreiche Berichte ausgeben, bietet es sich an, beide Seiten eines Blattes zu benutzen. Standardmäßig haben Sie diese Möglichkeit nur, wenn Ihr Drucker die so genannte Duplex-Ausgabe unterstützt, aber das ist nur selten der Fall. Unser Assistent hilft weiter: Nach der automatischen Installation können Sie ihn jederzeit über das Menü Extras-Add-Ins aufrufen. Wählen Sie dann den gewünschten Bericht aus und drucken Sie zunächst nur die Seiten mit ungerader Seitennummer. Das ausgegebene Papier drehen Sie dann um, legen es erneut in den Drucker und starten dann den Ausdruck der Seiten mit gerader Seitennummer. Das Ergebnis: Ihr Bericht im Doppelseitendruck. Den kostenlosen Download finden Sie unter:

 Assistent zum Doppelseitendruck kostenlos herunterladen

News: Mehr Komfort beim Formular- und Berichtsdesign in Access 12

Viele unserer Leser arbeiten bereits seit vielen Jahren mit den unterschiedlichsten Access-Versionen und bei genauer Betrachtung werden Sie feststellen, dass sich zahlreiche Funktionen und Konzepte seit Access 2.0 nicht mehr wesentlich geändert haben. Access 12 ist daher zweifellos das Upgrade mit den meisten Neuerungen seit langer Zeit. Einige Highlights aus dem neuen Formular- und Berichtsentwurf:

  • Ein neuer WYSIWYG-Modus sorgt dafür, dass Sie das Aussehen von Formularen und Berichten bereits im Entwurf mit Daten kontrollieren können.
  • Felder können nicht nur aus der vorgegebenen Tabelle oder Abfrage übernommen werden. Jedes beliebige Feld lässt sich einfügen, wobei Access die erforderlichen Verknüpfungen entweder automatisch herstellt oder einen entsprechenden Assistenten zur Unterstützung einblendet.
  • In einem neuen Browse-Modus können lassen sich Berichte nicht nur filtern, sondern auch Kopieren/Ausschneiden sowie Suchen werden möglich sein.
  • Abwechselnd eingefärbte Zeilen lassen sich in Formularen und Berichten mit wenigen Mausklicks konfigurieren.
  • Fenster lassen sich teilen, um gleichzeitig ein Formular und die entsprechende Datentabelle anzuzeigen.
  • Ein neuer Datentyp "Attachment" erlaubt die Speicherung mehrerer Anhänge mit einem Datensatz.
  • Datentabellen können um eine Auswertungszeile für Gesamtsummen, Maximum, Minimum, Durchschnitt usw. ergänzt werden.
Techinfo: Office Web Components effektiv einsetzen

Mit Office 2000 hat Microsoft die so genannten "Web Components" eingefügt. Diese Sammlung an ActiveX-Komponenten erlaubt es dem Office-Anwender und Website-Administrator, dynamische Inhalte aus Office-Anwendungen mit wenig Aufwand in Intranet-/Internet-Lösungen einzubinden. Kevin McDowell, Microsoft-Spezialist für Intranet-/Internet-Lösungen, hat zu diesem Thema ein sehr ausführliches, rund 40 seitiges White Paper verfasst:

Office Web Components effektiv einsetzen

Nach einer detaillierten Einführung und Erläuterung der Web Components zeigt der Autor zunächst anhand von Excel-Tabellen und -Grafiken den generellen Einsatz der Web Components. In weiteren Abschnitten geht es dann um die Einbindung von VBA-Routinen, die Erstellung von Webseiten mit Web Components per FrontPage, den Einsatz in Datenzugriffs-Seiten von Access und den Zugriff auf Datenquellen per ADO (ActiveX Data Objects).

 Access-Tipp der Woche

Globale Variablen oder Konstanten in Abfragen nutzen
Versionen: Access 2003, 2002/XP, 2000 und 97

In Ihren Datenbank-Projekten verwenden Sie oftmals globale Variablen, um Informationen festzuhalten, auf die Sie in der gesamten Datenbank zugreifen möchten. Wenn Sie das per VBA tun, klappt das auch wunderbar. Beispiel: Sie haben eine Datenbank erstellt, die in verschiedenen Ländern eingesetzt wird. In einer globalen Variablen "strEinsatzLand" halten Sie fest, in welchem Land die jeweils installierte Datenbank zum Einsatz kommt. Die Variable enthält also "Deutschland", "USA" oder ähnlich.

Versuchen Sie allerdings zum Beispiel diese Variable "strEinsatzLand" in einer Abfrage oder in einem Ausdruck als Kriterium der Art "[Land]= strEinsatzLand" einzusetzen, gibt Access eine Fehlermeldung aus oder liefert falsche Ergebnisse. Das liegt daran, dass Access den Variablennamen entweder als reinen Text oder als Feld- bzw. Objektnamen interpretiert. Ein Zugriff auf globale Variablen ist so nicht möglich.

Sie können das Problem lösen, indem Sie in einem beliebigen Modul eine Funktion eingeben, die den Inhalt der betreffenden Variablen als Ergebnis zurückgibt. Diese Funktion können Sie dann in Abfragen oder Ausdrücken einsetzen. In Abfragen möchten Sie zum Beispiel nur Kunden oder Lieferanten aus dem Land gemäß "strEinsatzLand" selektieren, damit beispielsweise für Rundschreiben nur die Kunden oder für Bestellungen nur die Lieferanten des jeweiligen Landes angezeigt werden. In einem Modul haben Sie also die betreffende Variable per

Public strEinsatzLand As String

deklariert. In diesem Modul geben Sie nun die folgende Funktion an:

Function AktuellesLand() As String

  AktuellesLand = strEinsatzLand

End Function

Beim Aufruf der Funktion wird hier einfach der Inhalt der globalen Variablen "strEinsatzLand" als Funktionsergebnis gesetzt. Diesen Mechanismus können Sie nun beispielsweise in einem Formular einsetzen, um alle Kunden des aktuellen Landes anzuzeigen:

  • Legen Sie zunächst eine Abfrage "Kunden/Aktuelles Land" oder ähnlich an, die die betreffenden Kunden selektiert und fügen das Feld "Land" in einer zweiten Spalte hinzu. Als Kriterium setzen Sie hier den Ausdruck
=AktuellesLand()

ein. Auf diese Wiese werden nur die Datensätze selektiert, bei denen das Land mit dem Land übereinstimmt, das die Funktion "AktuellesLand()" als Ergebnis liefert, also beispielsweise "Deutschland".

  • Im Formular legen Sie eine Schaltfläche Kunden aktuelles Land oder ähnlich an, der Sie in der Ereignis-Prozedur "Beim Klicken" folgende Anweisung zuordnen:
Sub btnKundenAktuell_Click ()

  DoCmd.OpenQuery "Kunden/Aktuelles Land"

End Sub

Beim Klick auf die Schaltfläche wird die Abfrage "Kunden/Aktuelles Land" geöffnet, die über das Kriterium "=AktuellesLand()" die globale Funktion "AktuellesLand()" aufruft und so die zum Inhalt der Variablen "strEinsatzLand" passenden Datensätze liefert.

Ähnlich einfach können Sie auf globale Konstanten zugreifen. Zum Beispiel: In einem Warenwirtschaftssystem mit Artikelverwaltung deklarieren Sie eine generelle Handelsspanne als Konstante:

Public Const cdblHandelsspanne As Double = 1.5

Dazugehörend geben Sie eine Funktion "Handelspanne()" in einem globalen Modul ein.

Function Handelsspanne() As Double

  Handelsspanne = cdblHandselspanne

End Function

So können Sie zum Beispiel in einer Abfrage ein Feld "Verkaufspreis Netto" wie folgt "on the fly" berechnen:

VKNetto: [Einkaufspreis] * Handelsspanne()

ANZEIGE 
Digitaler Zeitplaner 2006 auf CD als kostenlose Zugabe

Mit dem Digitalen Zeitplaner können Sie Excel für Zeit- und Projektplanungen aller Art einsetzen. Sie erhalten fertige Lösungen, die Sie nur noch von der CD-ROM auf Ihre Festplatte kopieren müssen und dann sofort nutzen können. Ab sofort erhalten Sie die zwei Digitalen Zeitplaner 2005 und 2006 zum Preis von einem:

  • Schnellübersicht mit Schulferien und Feiertagen
  • Kombikalender zur Tages-, Wochen-, Monats- und Jahresübersicht
  • Urlaubsplanung für mehrere Mitarbeiter
  • Ewiger Kalender für Projekt-, Urlaubs- und Mitarbeiterplanung
  • Alle Lösungen sind ungeschützt und lassen sich individuell anpassen
Weitere Informationen finden Sie unter:

Digitaler Zeitplaner 2005/2006


 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.

Inhalte eines RTF-Steuerelementes individuell formatieren
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  In Berichten möchten wir die Inhalte von Memofeldern ausgeben. Dabei sollen bestimmte Wörter im Text auffällig markiert werden. Wir verfügen über die Office Developer Edition und haben dort das RTF-Steuerelement gefunden, über das sich ja einzelne Wörter individuell formatieren lassen. Wenn wir nun in der Ereignisprozedur "Beim Formatieren" des Detailbereiches beispielsweise einen über "SelStart" und "SelLength" markierten Bereich per "SelBold = True" formatieren möchten, funktioniert das nicht. Können Sie uns Tipps geben, was hier eventuell schief läuft?
P. Rogge

 ANTWORT:  Vermutlich haben Sie das RTF-Steuerelement direkt an das Datenfeld gebunden. Die Änderung einer Eigenschaft des RTF-Steuerelementes wertet Access dann als eine Änderung des Feldinhaltes, was jedoch in einem Bericht nicht möglich ist. Um das Problem zu lösen, gehen Sie wie folgt vor:

  1. Stellen Sie die Eigenschaft "Sichtbar" des Memofeldes, dessen Inhalt Sie formatiert ausgeben möchten, auf "Nein" ein und verschieben Sie es an eine Stelle, an der es nicht weiter stört.
  2. An Stelle des Memofeldes positionieren Sie nun das ungebundene RTF-Steuerelement und benennen es "rtfFeld" oder ähnlich.
  3. Stellen Sie die folgenden, vom Standard abweichenden Eigenschaften für das RTF-Steuerelement ein:
Spezialeffekt= Flach
BorderStyle= No
border Scrollbars= rtfNone

  • Geben Sie in der Ereignisprozedur "Beim Formatieren" des Detailbereiches folgende Anweisungen ein:
  Dim arrWords As Variant, strText As String
  Dim I As Long, intPos As Integer

  arrWords = Array("Wort 1", "Wort 2", "Wort 3")
  With Me.rtfFeld
    strText = Me.Memofeld & ""
    .TextRTF = strText
    For I = 0 To UBound(arrWords)
      intPos = InStr(.Text, arrWords(I))
      While intPos <> 0 'Wort gefunden
        .SelStart = intPos
        .SelLength = Len(arrWords(I))
        .SelBold = True
        .SelColor = QBColor(12)
        intPos = InStr(intPos + 1, .Text, arrWords(I))
      Wend
    Next I
  End With

"Wort 1", "Wort 2", "Wort 3" etc. ersetzen Sie durch die Wörter, die hervorgehoben werden sollen, "Memofeld" durch den Namen des Memofeldes, dessen Inhalt formatiert ausgegeben werden soll.

  • Speichern Sie die Änderungen und lassen Sie den Bericht anzeigen.
Die Lösung weist zunächst dem RTF-Steuerelement den aktuellen Inhalt des Memofeldes zu. Danach geht sie in einer "For I=..."-Schleife alle Wörter durch, die per Anweisung "Array" dem Array "arrWords" zugewiesen wurden. Für jedes Wort wird per "Instr()" und "intPos" in einer "While...Wend"-Schleife geprüft, ob es im Text vorhanden ist. Wenn ja, wird das Wort "Fett" (SelBold= True) und "Rot" (SelColor= QBColor(12)) formatiert und das nächste Vorkommen des Wortes gesucht. Die "While...Wend"-Schleife wird verlassen, wenn das Wort kein weiteres Mal gefunden wurde, danach geht es mit dem nächsten Wort weiter.

Mehrere Datenbanken per Verknüpfung öffnen
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Ich möchte gerne in einem Arbeitsschritt mehrere Datenbanken über eine einzige Verknüpfung öffnen. Ist das irgendwie möglich und wenn ja, wie?
M. Lamprecht

 ANTWORT:  Das steuern Sie am einfachsten über eine zentrale "Startdatenbank":

  1. Legen Sie eine neue, leere Datenbank an.
  2. Legen Sie ein neues Modul "modMDBsOeffnen" an.
  3. Geben Sie die folgenden Deklarationen und Funktionen 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 MDBsOeffnen()

  OpenMDB "Z:\Test\Datenbank 1.mdb"
  OpenMDB "Z:\Test\Datenbank 2.mdb"
  OpenMDB "Z:\Test\Datenbank 3.mdb"
  DoCmd.Quit

End Function

Function OpenMDB(strMDB As String)

  On Error Resume Next
  ShellExecute 0&, vbNullString, strMDB, _
               vbNullString, vbNullString, vbNormalFocus

End Function

Passen Sie dabei in "MDBsOeffnen" die Pfade/Dateinamen der zu öffnenden Datenbanken entsprechend an.

  • Speichern Sie das Modul.
  • Legen Sie ein neues Makro "AutoExec" mit der Aktion "AusführenCode" und dem Parameter "MDBsOeffnen()" an und speichern Sie es.
  • Verlassen Sie die Datenbank.
Legen Sie nun für die "Startdatenbank" eine Verknüpfung auf dem Desktop an. In Zukunft können Sie dann die in "MDBsOeffenen" spezifizierten Datenbanken mit einem Doppelklick öffnen. Die Startdatenbank beendet sich anschließend automatisch. Achtung! Wenn Sie Änderungen an der Startdatenbank vornehmen möchten, halten Sie beim Öffnen die Umschalt-Taste gedrückt, um die Ausführung von "AutoExec" und das automatische Beenden zu unterbinden.

Nachtrag: ToDo-Liste als Bericht ausgeben
Versionen: Access 2003, 2002/XP und 2000

 FRAGE:  Ich habe Ihre Lösung entsprechend umgesetzt, allerdings benötigt die Formatierung vermutlich aufgrund des erforderlichen "Erledigt"-Häkchens und der damit verbundenen VBA-Steuerung geraume Zeit. Es vergehen immer einige Sekunden, bis der Bericht in der Seitenansicht angezeigt bzw. auf dem Drucker ausgegeben wird. Mir würde statt des Häkchens bzw. des Ausrufezeichens der Status im Klartext, also als "Offen" in roter Schrift oder "Erledigt" in grüner Schrift reichen, so dass die Formatierung weniger Zeit in Anspruch nehmen dürfte. Wie ließe sich diese Lösung umsetzen?
T. Flath

 ANTWORT:  Ein Alternativvorschlag, der Ihren Anforderungen entspricht, hat uns dazu Access Weekly-Leser Heinz Treuer zugesandt:

  • Erweitern Sie die dem Bericht zugrunde liegende Abfrage um ein "on the fly" generiertes Feld:
OffenErledigt: Wenn([Erledigt]=Wahr;"Erledigt";"Offen")

"Erledigt" ersetzen Sie dabei durch den Namen des Feldes, das den "Erledigt"-Status speichert.

  • Ergänzen Sie den Bericht um ein Textfeld, dem Sie als "Steuerelementeinhalt" das Feld "OffenErledigt" zuweisen.
  • Markieren Sie das Textfeld und wählen Sie Format-Bedingte Formatierung an.
  • Stellen Sie unter "Standardformatierung" die Schrift-/Vordergrundfarbe auf "Rot" und die Formatierung auf "Fett" ein.
  • Stellen Sie als "Bedingung 1" den Eintrag "Ausdruck ist" ein.
  • Geben Sie folgenden Ausdruck ein:
[Erledigt]=Wahr

"Erledigt" ersetzen Sie dabei durch den Namen des Feldes, das den "Erledigt"-Status speichert.

  • Stellen Sie die Schrift-/Vordergrundfarbe auf "Grün" ein.
  • Übernehmen Sie die Änderungen mit einem Klick auf Ok.
Wenn Sie den Bericht nun einmal in der Seitenansicht anzeigen lassen, sind erledigte Aufgaben mit dem Zusatz "Erledigt" in grüner Schrift und offene Aufgaben an dem auffällig fett und rot formatierten Zusatz "Offen" zu erkennen.

Tool-Helpline: VBA-Code überarbeiten und standardisieren
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Ich habe die undankbare Aufgabe übertragen bekommen, eine Reihe von Datenbanken zu überarbeiten, die von verschiedenen anderen Entwicklern erstellt wurden. Leider haben die offensichtlich nie etwas von Namenskonventionen für Variablen, von Fehlerbehandlungsroutinen oder dem Einfügen von Kommentaren gehört. Ich verbringe daher viel Zeit damit, den Code den gängigen Standards anzugleichen, um mir und auch anderen Entwicklern das Leben zu erleichtern. Kann man diese Aufgabe automatisieren?
G. Haagen

 ANTWORT:  Die Total Visual CodeTools bieten neben zahlreichen weiteren Tools und Assistenten rund um die VBA-Entwicklung eine interessante Funktion mit der Bezeichnung "CodeCleanup":

Total Visual CodeTools

Sie legen dabei nur ein einziges Mal alle gewünschten Standards fest und Code Cleanup wendet sie in Zukunft für Sie an: Fehlerbehandlungsroutinen werden hinzugefügt, Prozeduren sortiert, Kommentarblöcke nach Ihren Vorgaben ergänzt, unnötige Leerzeilen entfernt, Variablen nach beliebigen Namenskonventionen umbenannt, Einzüge standardisiert usw. Bevor der Code endgültig angepasst wird, können Sie die Änderungen natürlich zur Sicherheit in einer Vorschau kontrollieren.

 Newsletter-Tipp

Office 2003 und XP-Tipps kostenlos per E-Mail

Der SmartTools Office XP Insider ist ein kostenloser E-Mail-Newsletter, der sich ausschließlich mit den neuen Funktionen von Office 2003 und XP beschäftigt:

  • Praktische Tipps zur Installation
  • Tipps und Workshops zum optimalen Einsatz der neuen Funktionen
  • Wichtige Infos und Tipps für den Umstieg von anderen Office-Versionen
  • Download-Links zu aktuellen Erweiterungen und Service Releases für Office 2003/XP
  • Helpline für Ihre individuellen Fragen zu Office 2003/XP
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/