Von: access-weekly-html-request@cgn.smarttools.de im Auftrag von SmartTools Publishing [access-weekly-html-reply@smarttools.de]
Gesendet: Freitag, 3. Juni 2005 03:31
An: Access Weekly Abonnenten
Betreff: SmartTools Access Weekly vom 3.6.2005

Ausgabe vom 3. Juni 2005

 In dieser Ausgabe

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

Spotlight: Personal-, Belegungs- und Zeitpläne endlich grafisch darstellen

Die perfekte Access-Erweiterung für Planungen aller Art: Sie geben in einer Tabelle lediglich Start- und Enddatum der einzelnen Vorgänge wie Belegungen, Vermietungen, Urlaub usw. ein und erhalten als Ergebnis ein übersichtliches Balkendiagramm. 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.
Sie erhalten diese Lösung in einer komplett ungeschützten Entwicklerversion (MDB-Datei) ohne jegliche Einschränkungen an. Sie können den Belegungsplan in beliebig viele Datenbanken integrieren und auf unbegrenzt vielen Arbeitsplätzen installieren! Weitere Informationen finden Sie unter:

Belegungsplan für Access

Download-Tipp: So vermeiden Sie doppelte Datensätze

Das Erfassen von doppelten Datensätzen gehört zu den alltäglichen Problemen vor allem bei der Eingabe von Adressen. Arbeiten dann auch noch mehrere Mitarbeiter beispielsweise in der Auftragsannahme, sind die unerwünschten Zwillinge in Ihrer Datenbank vorprogrammiert und müssen später mühsam entfernt werden. Wie aber können Sie die Doppel bereits bei der Eingabe möglichst effektiv erkennen? In unserer kostenlosen Techinfo stellen wir Techniken vor, mit denen Sie in Zukunft die Datenerfassung noch effizienter gestalten können, weil doppelte Datensätze bereits während der Eingabe erkannt werden. Sie erhalten dazu fertige VBA-Lösungen, die Sie direkt in Ihre Datenbanken einbinden können:

 Doppelte Datensätze vermeiden

News: SQL-Server 2005 live erleben

Nach fast 5 Jahren steht in Kürze das nächste große Update des Microsoft SQL-Server an. Wenn Sie sich detailliert mit der neuen Version auseinandersetzen wollen, könnte die Technical Summit Tour 2005 für Sie interessant sein, die in den nächsten Wochen noch in Berlin, Bremen, Bochum, Hanau, Stuttgart, München und Zürich Station macht:

Weitere Informationen zur Technical Summit Tour 2005

Microsoft bietet auf der eintägigen Veranstaltung unter anderem 5 Vorträge an, die sich mit verschiedenen Aspekten der kommenden SQL-Server-Generation widmen.

Techinfo: Daten vom SQL Server in Excel verarbeiten
Versionen: Excel 2000, 2002/XP und 2003, SQL Server

Um Daten von einem SQL Server in Excel zu verarbeiten, können Sie die benötigten Informationen beispielsweise aus einer externen Datei importieren oder per ODBC verknüpfen. Häufig müssen Sie aber per VBA bestimmte Anpassungen oder Berechnungen vornehmen, so dass anschließend noch ein Makro gestartet werden muss. Alternativ können Sie den kompletten Import vom SQL Server mit anschließender Weiterverarbeitung auch per VBA realisieren. Sie sparen so nicht nur zusätzliche Arbeitsschritte und den Umweg über eine externe Datei oder eine Verknüpfung, sondern haben gleichzeitig auch volle Kontrolle über alle ablaufenden Aktionen. Wie eine solche Lösung in Kombination mit ADO umgesetzt wird, verrät die deutschsprachige Techinfo unter der folgenden Adresse:

Daten vom SQL Server in Excel verarbeiten

 Access-Tipp der Woche

Schriftartenauswahl leicht gemacht, Teil 2
Versionen: Access 2003, 2002/XP, 2000 und 97

Nachdem wir im ersten Teil die Basisroutinen für die Erstellung einer Liste verfügbarer Schriftarten vorgestellt haben, geht es im Folgenden noch um einige Erweiterungen. Das wichtigste ist zunächst eine Sortierung der Schriftartenliste, die von "CreateFontList()" im globalen Array "arrFontNames()" abgelegt wurde. Die Sortierung erfolgt mit einem einfachen "QuickSort", den Sie wie folgt in die Lösung einbauen:

  • Geben Sie im Modul "modFontList" die folgende Funktion ein:
Sub SortFontList(FontList() As String, _
                 ByVal intLowBound As Integer, _
                 ByVal intHighBound As Integer)

  Dim varMidBound As Variant, varTmp As Variant
  Dim intX As Integer, intY As Integer

  If intHighBound > intLowBound Then
    varMidBound = _
      FontList((intLowBound + intHighBound) \ 2)
    intX = intLowBound
    intY = intHighBound
    Do While intX <= intY
      If FontList(intX) >= varMidBound And _
         FontList(intY) <= varMidBound Then
        varTmp = FontList(intX)
        FontList(intX) = FontList(intY)
        FontList(intY) = varTmp
        intX = intX + 1
        intY = intY - 1
      Else
        If FontList(intX) < varMidBound Then
          intX = intX + 1
        End If
        If FontList(intY) > varMidBound Then
          intY = intY - 1
        End If
      End If
    Loop
    SortFontList FontList(), intLowBound, intY
    SortFontList FontList(), intX, intHighBound
  End If

End Sub

  • Fügen Sie in der Funktion "CreateFontList()" den Aufruf der Sortierung vor der Zeile, die das Funktionsergebnis setzt, wie folgt ein:
Function CreateFontList() As Integer
.....
  SortFontList arrFontNames(), 1, intNumFonts
  CreateFontList = intNumFonts
.....
End Function

  • Speichern Sie die Änderungen am Modul.
Diese Erweiterung sorgt nun dafür, dass die Einträge in einem Listen- oder Kombinationsfeld immer alphabetisch sortiert angezeigt werden.

Damit ein Listen- oder Kombinationsfeld mit der Schriftartenauswahl gefüllt werden kann, benötigen Sie noch eine Callback-Funktion. Dabei handelt es sich um eine interessante alternative Möglichkeit, Listen- oder Kombinationsfelder mit Daten zu füllen. Zu diesem Zweck geben Sie den Namen der Callback-Funktion in der Eigenschaft "Herkunftstyp" an und löschen den Inhalt der Eigenschaft "Datensatzherkunft". Access ruft dann beim Öffnen des Formulars die Callback-Funktion mehrmals auf, um auf diesem Weg den Inhalt für das Listen- oder Kombinationsfeld abzufragen. Die Callback-Funktion greift in der Regel auf ein globales Array zurück und ermittelt daraus die gewünschten Inhalte. Gehen Sie zunächst wie folgt vor:

  • Geben Sie die folgende Funktion im Modul "modFontList" ein:
Public Function FontListCallback(ctl As Control, _
                lngID As Long, _
                lngRow As Long, _
                lngCol As Long, _
                intCode As Integer) As Variant
  Dim R As Variant

  Select Case intCode

    Case acLBInitialize
      R = CreateFontList()

    Case acLBOpen
      R = Timer

    Case acLBGetColumnCount
      R = 1

    Case acLBGetRowCount
      R = intNumFonts

    Case acLBGetValue
      R = Trim$(arrFontNames(lngRow + 1))

  End Select
  FontListCallback = R

End Function

Während der Initialisierung des Formulars ruft Access diese Callback-Funktion mehrmals mit verschiedenen Parametern (acLBInitialize, acLBOpen, acLBGetColumnCount, acLBGetRowCount, acLBGetValue) auf. Je nach Parameter initialisiert die Funktion dann zunächst die zu verwendende Datenbasis (acLBInitialize), liefert die gewünschten Informationen zum Layout der Liste (acLBGetColumnCount, acLBGetRowCount) oder liefert Daten für die Liste aus der zuvor initialisierten Datenbasis (acLBGetValue).

  • Speichern Sie die Änderungen und verlassen Sie die VBA-Entwicklungsumgebung.
  • Legen Sie ein neues Formular und darin ein Listenfeld "lstFonts" an.
  • Stellen Sie die Eigenschaft "Herkunftstyp" der Liste auf "FontListCallback" ein und löschen Sie den Inhalt der Eigenschaft "Datensatzherkunft".
  • Lassen Sie das Formular testweise anzeigen.
Die Liste sollte nun eine sortierte Auswahl der verfügbaren Schriftarten enthalten. Eine ausgewählte Schriftart fragen Sie über die Ereignisprozedur "Nach Aktualisierung" beispielsweise wie folgt ab:

Private Sub lstFonts_AfterUpdate()

  MsgBox Me.lstFonts

End Sub

Im dritten und letzten Teil dieses Tipps zeigen wir nächste Woche auf dieser Basis einige praktische Lösungen in Form einer automatischen Schriftanpassung für Formulare und eine als Bericht realisierte Schriftartenübersicht.

ANZEIGE 
Excel-Tabellen automatisch vergleichen und zusammenführen

Der Synkronizer 8.0 Premium liefert genau die Funktionen, die Microsoft in Excel vergessen hat: Er kann Ihre Kalkulationsmodelle, Tabellen, Listen und Datenbanken in Excel voll automatisch vergleichen, Unterschiede markieren und auf Wunsch zu einer einzigen aktuellen Version zusammenführen.

Sparen Sie künftig viele Stunden mühseliger Kleinarbeit, denn der Synkronizer 8.0 Premium wird Ihnen bei der täglichen Arbeit mit Excel immer wieder eine unentbehrliche Hilfe sein. Zum Beispiel:

  • Führen Sie mehrere Versionen der gleichen Tabelle in einer einzigen Datei zusammen, die alle Änderungen der anderen Versionen enthält.
  • Markieren Sie mit wenigen Mausklicks die Unterschiede zwischen zwei Versionen eines Kalkulationsmodells.
  • Arbeiten Sie Änderungen voll automatisch in eine Liste (Preise, Artikel, Aufträge etc.) ein.
  • Erstellen Sie aus mehreren Adresslisten eine einzige Adressliste ohne Duplikate.
  • Kombinieren Sie zwei Listen mit unterschiedlichen Informationen zu einer aussagekräftigen Gesamtliste.
Weitere Informationen zu diesem unentbehrlichen Excel-Tool finden Sie unter:

Synkronizer 8.0 Premium


 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.

Mehrzeilige Inhalte über Textfelder im Bericht ausgeben
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Gibt es eine Möglichkeit, in einem als Rechnungsformular realisierten Bericht im gleichen Datensatz eine 2. Zeile in einem Textfeld auszugeben? Bei einem Datensatz mit verschiedenen Feldern habe ich im Feld "Bezeichnung" mitunter zu wenig Platz. Der Inhalt wird dann einfach abgeschnitten. Dort sollte bei Bedarf automatisch eine 2. Zeile hinzugefügt werden, um den gesamten Feldinhalt darstellen zu können. Die Eigenschaften "Vergrößerbar" und "Verkleinerbar" für das Textfeld habe ich bereits auf "Ja" eingestellt, es funktioniert aber nicht!
G. Siems

 ANTWORT:  Die Änderungen der Eigenschaften "Vergrößerbar" und "Verkleinerbar" für das Textfeld alleine reichen nicht aus. Sie müssen gleichzeitig diese beiden Eigenschaften auch für den Detailbereich - oder den Bereich des Berichtes, in dem das Textfeld eingesetzt werden soll - einstellen, damit Access auch hier den beispielsweise für ein zu vergrößerndes Textfeld notwendigen Platz schaffen kann:

  1. Öffnen Sie den Bericht im Entwurfsmodus und markieren Sie zunächst den Detailbereich, indem Sie auf den grauen Balken mit der Bezeichnung "Detailbereich" klicken.
  2. Wählen Sie das Menü Ansicht-Eigenschaften an und stellen Sie die Eigenschaften "Vergrößerbar" und "Verkleinerbar" für den Detailbereich auf "Ja".
  3. Markieren Sie dann, sofern noch nicht angepasst, das Textfeld für die Bezeichnung und stellen Sie die Eigenschaften "Vergrößerbar" und "Verkleinerbar" ebenfalls auf "Ja".
Access passt auf diese Weise sowohl Detailbereich und Textfeld beim Ausdruck dynamisch an, so dass immer der gesamte Inhalt ausgegeben wird. Bitte beachten Sie, dass sich diese Einstellungen nur auf die Höhe des Textfeldes auswirken. Die Breite kann nicht dynamisch angepasst werden!

Feldinhalte mit führenden Nullen speichern
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Wir verwenden in einer Datenbank ein Textfeld mit einer Länge von 7 Zeichen. Wenn über ein Formular zum Beispiel "12" eingegeben wird, soll das Ergebnis als "0000012", also mit einer entsprechenden Anzahl führender Nullen, in der Tabelle gespeichert werden. Wie lässt sich das automatisieren? Unsere Versuche über entsprechende Format- und Eingabeformat-Einstellungen führten leider nicht zum Erfolg.
W. Gering

 ANTWORT:  Format- und Eingabeformat-Einstellungen schaffen hier keine Abhilfe, da sie lediglich festlegen, wie ein Feldinhalt angezeigt wird oder einzugeben ist - auf die tatsächliche Speicherung der Eingabe in der Tabelle haben diese Einstellungen nur bedingt Einfluss. Sie können zwar das Eingabeformat auf "0000000" einstellen, aber dann muss beispielsweise die Zahl "12" immer als "0000012" mit der entsprechenden Anzahl führender Nullen eingegeben werden. Eine Automatisierung beziehungsweise das Auffüllen mit einer entsprechenden Anzahl Nullen lässt sich nur per VBA realisieren:

  1. Stellen Sie zunächst sicher, dass sowohl für die Tabelle als auch für das Textfeld keinerlei Format- oder Eingabeformat-Einstellungen vorgenommen wurden und löschen Sie diese Einstellungen gegebenenfalls. Die entsprechenden Eingabefelder der Eigenschaften müssen leer sein.
  2. Öffnen Sie dann das Formular, über das die Eingabe erfolgt, im Entwurfsmodus, markieren Sie das betreffende Textfeld und wählen Sie das Menü Ansicht-Eigenschaften an.
  3. Stellen Sie die Eigenschaft "Nach Aktualisierung" auf "[Ereignisprozedur]", klicken Sie auf die Schaltfläche mit den drei Punkten, um den VBA-Editor zu öffnen und geben Sie folgende Anweisungen ein:
Private Sub txtTest_AfterUpdate()
  Dim strEingabe As String

  On Error Resume Next
  strEingabe = Me.txtTest
  If Err <> 0 Then
    Beep
    Me.txtTest.SetFocus
    Exit Sub
  End If
  On Error GoTo 0

  While Len(strEingabe) < 7
    strEingabe = "0" + strEingabe
  Wend
  Me.txtTest = strEingabe

End Sub

Diese Anweisungen lesen zunächst die aktuelle Eingabe aus dem Textfeld in eine Zeichenkette "strEingabe" ein. Kommt es dabei zu einem Fehler, weil beispielsweise die Eingabe gelöscht wurde und das Feld auf "NULL" steht, geben wir einen akustischen Hinweis aus und verlassen die Routine. Andernfalls fügen wir in einer Schleife solange führende Nullen am Anfang der Zeichenkette hinzu, bis die gewünschte Länge - hier "7" - erreicht ist. Abschließend speichern wir die geänderte Zeichenkette in der Tabelle.

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:

Barcodes für Access


Verknüpfte Tabellen auflisten
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Gibt es eine einfache Möglichkeit, nur verknüpfte Tabellen und deren Ursprungsdatenbanken aufzulisten?
B. Meyer

 ANTWORT:  Erstellen Sie eine neue Abfrage und wählen Sie das Menü Ansicht-SQL an. Geben Sie im SQL-Editor die folgenden Anweisungen ein:

SELECT Name, ForeignName, Database
FROM MsysObjects
WHERE MSysObjects.Type=6;

Lassen Sie die Abfrage ausführen und es werden alle gewünschten Informationen angezeigt. In der versteckten Tabelle "MSysObjects" hält Access Informationen zu allen Objekten der Datenbank fest, unter anderem auch zu verknüpften Tabellen. Diese können über den Typ "6" identifiziert werden. "Name" liefert den Namen, so wie er bei der Verknüpfung definiert wurde bzw. wie er im Datenbank-Fenster angezeigt wird, "ForeignName" den Namen der Tabelle, so wie er in der Ursprungsdatenbank festgelegt ist und per "Database" ermitteln Sie schließlich den Pfad/Dateinamen der Ursprungsdatenbank.

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