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

Ausgabe vom 28. Oktober 2005

 In dieser Ausgabe

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

Spotlight: Das perfekte 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 oder 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:

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

Download-Tipp: Komfortable Zusatzfunktionen für Memofelder in Ihren Formularen

Mit den kostenlosen SmartTools Memo-Funktionen können Sie Memofelder in Zukunft noch effizienter nutzen. Nach der voll automatischen Installation stehen Ihnen vier neue Funktionen zur Verfügung, die Sie mit wenig Aufwand direkt in Ihre Formulare einbinden können:

  • Memofeld in Zwischenablage kopieren
  • Zwischenablage in Memofeld einfügen
  • Memofeld in Textdatei exportieren
  • Textdatei in Memofeld einlesen
Den Download für Access 2003, 2002/XP, 2000 und 97 finden Sie unter:

 SmartTools Memofeld-Funktionen für Access kostenlos herunterladen

News: Neues Update für Access 2002 verfügbar

Microsoft hat vor wenigen Tagen ein Update für Access 2002 zum kostenlosen Download zur Verfügung gestellt:

Update für Access 2002

Das Update enthält fünf Hotfixes aus den letzten Monaten und behebt außerdem einige weitere Bugs, die bisher noch nicht dokumentiert waren. So stürzt Access 2002 in einigen Fällen nach Alt+F11 ab, wenn Sie das Programm unter Windows 98 nutzen. Außerdem funktioniert der Formularfilter nicht, wenn Sie ihn programmatisch per VBA aktivieren. Weitere Informationen finden Sie unter:

Informationen zum Update

Vor der Installation des Updates beachten Sie bitte unbedingt die nachfolgende Meldung!

News: Microsoft entfernt Bearbeitungsfunktionen für eingebundene Excel-Tabellen aus Access 2003 und 2002/XP

Wenn Sie Excel-Tabellen in Access einbinden, können Sie bisher nicht nur die Daten einsehen, sondern auch bearbeiten, löschen und hinzufügen. Wie aus der folgenden Techinfo ersichtlich ist, soll es diese Möglichkeit in Zukunft nicht mehr geben:

Excel Techinfo

Nach der Installation des SP-2 für Office 2003 bzw. des letzten Updates für Access (siehe vorangegangene Meldung), können Sie Daten aus eingebundenen Excel-Tabellen zwar einsehen, aber nicht mehr bearbeiten. Microsoft liefert in der Techinfo leider nur die Begründung "aus rechtlichen Gründen" für diesen Schritt.

 Access-Tipp der Woche

Datensatzauswahl per Popup-Formular, Teil 2
Versionen: Access 2003, 2002/XP, 2000 und 97

Nachdem wir im ersten Teil die Basis der Lösung in Form einer Abfrage und eines Formulars geschaffen haben, geht es nun um die Anbindung an das Hauptformular:

  1. Legen Sie im betreffenden Hauptformular eine Schaltfläche "btnAuswahl" an.
  2. Stellen Sie deren Eigenschaft "Beim Klicken" auf "[Ereignisprozedur]" ein.
  3. Klicken Sie auf die Schaltfläche mit den drei Punkten, um den VBA-Editor zu öffnen und geben Sie die folgenden Anweisungen ein:
Sub btnAuswahl_Click ()
    Dim strX As String

    DoCmd OpenForm "frmAuswahl", acNormal, , , , acDialog
    On Error Resume Next
    strX = Forms![frmAuswahl].Tag
    DoCmd Close acForm, "frmAuswahl"
    If Err <> 0 Or IsNull(strX) Then Exit Sub
    On Error GoTo 0

    Me.[Kunden-Code].SetFocus
    DoCmd FindRecord strX, _
          acEntire, , acDown, , acCurrent, True
    Me.[Firma].SetFocus

End Sub

Die Feldnamen "Kunden-Code" und "Firma" ersetzen Sie gemäß den Namen des Feldes Ihres Formulars, über das die Suche erfolgt bzw. das nach Positionierung auf den Datensatz aktiviert werden soll. Für "Kunden-Code" geben Sie also beispielsweise bei einer Artikelverwaltung "Artikel-Nr" oder "LieferantenNr" ein, also den Namen des Feldes, das das Zugriffskriterium darstellt. Für "Firma" geben Sie den Namen des Feldes an, das anschließend als aktives Feld selektiert werden soll, also zum Beispiel "ArtikelName".

Die Ereignis-Prozedur "Beim Klicken" der Schaltfläche "btnAuswahl" im Hauptformular steuert die gesamte Funktion der Datensatzauswahl per Popup-Menü wie folgt: Zunächst wird das Formular "frmAuswahl" als Dialog/Popup angezeigt. Mit der Ausführung weiterer Anweisungen wird gewartet, bis das Formular wieder geschlossen wird.

Der im Formular enthaltene Liste "lstAuswahl" liegt die Abfrage "qryAuswahl" zugrunde, die die benötigten Felder, in unserem Beispiel "Firma", "Ort" und "Kunden-Code" liefert. Wenn im Popup-Formular ein Eintrag markiert und auf Ok geklickt oder ein Doppelklick auf einen Eintrag ausgeführt wird, sorgt die Ereignisprozedur "Beim Klicken" der Schaltfläche "btnOK" im Formular "frmAuswahl" dafür, dass das Zugriffskriterium, hier "Kunden-Code", über die Eigenschaft "Tag" des Formulars als Ergebnis geliefert wird. Hier zur Erinnerung noch einmal die betreffende Ereignisprozedur:

Private Sub btnOK_Click()
  Dim intIdx As Integer, strX As String

  intIdx = Me.lstAuswahl.ListIndex
  If intIdx < 0 Then 'Nichts ausgewählt...
    Beep
    Exit Sub
  End If

  strX = Me.lstAuswahl.Column(2)
  Me.Tag = strX
  Me.Visible = False

End Sub

In der Ereignisprozedur der Schaltfläche "btnAuswahl" prüfen wir anschließend den Inhalt von "Tag" - ist dieser leer, wurde auf "Abbrechen" geklickt, andernfalls stellt der Inhalt den Kunden-Code für den anzuzeigenden Datensatz dar. Über "FindRecord" wird dann auf diesen Datensatz positioniert und anschließend das gewünschte Feld, hier "Firma", per "SetFocus" aktiviert.

ANZEIGE 
Das komfortable Outlook-Tool für Notizen und Kommentare in Ihren E-Mails

Auf dieses pfiffige Tool wollen Sie bei der Bearbeitung Ihrer E-Mails bald nicht mehr verzichten: Mit SmartTools E-Mail-Notizen Pro erstellen Sie ganz einfach per Mausklick einen virtuellen Notizzettel zu jeder beliebigen E-Mail in Outlook 2003, 2002/XP und 2000.

Stichworte zur Beantwortung der Mail, eine Telefon-Notiz oder andere Kommentare zu einer Nachricht gehen nie wieder verloren und können auf Wunsch sogar anderen Anwendern zur Verfügung gestellt werden, ohne die E-Mail selber zu verändern.

Weitere Highlights von SmartTools E-Mail-Notizen Pro:

  • Über einen komfortablen Dialog können Sie die Notizen aller E-Mails durchsuchen und verwalten.
  • Definieren Sie mit der Notiz auch gleich eine Erinnerung, um die Bearbeitung, eine Nachfrage oder einen Anruf zu der Mail nicht zu vergessen.
  • Beim Weiterleiten haben Sie die Wahl: Notiz mit der E-Mail weitergeben oder vorher löschen. Geben Sie sie weiter kann der Empfänger auf Ihre Kommentare zugreifen, wenn er ebenfalls SmartTools E-Mail-Notizen Pro nutzt.
  • Wenn Sie einen Exchange-Server einsetzen, können Sie E-Mails wesentlich komfortabler im Team bearbeiten, indem Sie Kommentare für Ihre Kollegen hinterlassen.
Die Vorgängerversion von SmartTools E-Mail-Notizen Pro hat sich bereits über 10.000mal im Praxiseinsatz bewährt. Nutzen Sie jetzt die Einführungsaktion zur erweiterten und optimierten Pro-Version mit 35% Rabatt:

SmartTools E-Mail-Notizen Pro - Einzelplatzlizenz
http://www.add-in-world.com/katalog/email-notizen-pro/

SmartTools E-Mail-Notizen Pro - Netzwerklizenz
http://www.add-in-world.com/katalog/email-notizen-net/


 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.

Wiederholfunktion für die neuen Navigationsschaltflächen von SmartTools
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Wenn man bei den "normalen" Navigationsschaltflächen die Maustaste auf dem Vor- oder Rückwärts-Pfeil gedrückt hält, dann laufen die Datensätze im Formular durch. Ich habe mir selbst per VBA Navigationsschaltflächen gebastelt, aber diese Funktionsweise nachzuahmen ist mir trotz aller Versuche nicht gelungen. Gerade habe ich ihre kostenlosen Navigationsschaltflächen (http://www.add-in-world.com/katalog/nav-buttons) ausprobiert. Die reagieren auch nicht auf die gedrückt gehaltene Maustaste, sondern schalten auch immer nur um einen Datensatz weiter. Gibt es dafür keine VBA-Lösung?
W. Filgis

 ANTWORT:  Eine schlichte VBA-Lösung gibt es nicht, aber in Verbindung mit API-Funktionen lässt sich diese Funktionalität, ausgehend von unserer Beispieldatenbank, die mit o.g. Download installiert wird, wie folgt einbauen:

  1. Erstellen Sie eine Kopie von einem der Unterformulare "UF NavBtns 1|2|3|4|5", indem Sie die Strg-Taste gedrückt halten und es in den freien Bereich des Datenbankfensters ziehen.
  2. Benennen Sie das Ergebnis von zum Beispiel "Kopie von UF NavBtns 1" in "UF NavBtns/Wiederholung" um.
  3. Öffnen Sie dieses Unterformular im Entwurfsmodus.
  4. Wählen Sie das Menü Ansicht-Code an, um in die VBA-Entwicklungsumgebung zu wechseln.
  5. Geben Sie im allgemeinen Teil des Formularklassenmoduls folgende Deklarationen ein:
Private Declare Function GetAsyncKeyState _
        Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Function GetSystemMetrics _
        Lib "user32" (ByVal nIndex As Long) As Long

Private Const VK_LBUTTON = &H1
Private Const VK_RBUTTON = &H2
Private Const SM_SWAPBUTTON = 23

  • Geben Sie im Anschluss daran die folgende Funktion ein:
Function RepeatNavBtns(intBtn As Integer)
  Dim intMouseBtn As Integer
  Dim IsSwapped As Boolean

  IsSwapped = GetSystemMetrics(SM_SWAPBUTTON)
  intMouseBtn = IIf(IsSwapped, VK_RBUTTON, VK_LBUTTON)
  Do While Abs(GetAsyncKeyState(intMouseBtn) < 0)
    DoNavBtns intBtn
    Delay 0.25
  Loop

End Function

  • Löschen Sie für die Schaltfläche "btnPrev" (Pfeil nach links, vorheriger Datensatz) die Eigenschaft "Beim Klicken" und tragen Sie in der Eigenschaft "Bei Maustaste Ab" folgendes ein:
=RepeatNavBtns(1)

  • Löschen Sie für die Schaltfläche "btnNext" (Pfeil nach rechts, nächster Datensatz) die Eigenschaft "Beim Klicken" und tragen Sie in der Eigenschaft "Bei Maustaste Ab" folgendes ein:
=RepeatNavBtns(2)

  • Speichern Sie die Änderungen am Unterformular und verlassen Sie den Entwurfsmodus.
  • Öffnen Sie Ihr Hauptformular, in dem nun die neuen Navigationsbuttons mit Wiederholfunktion verwendet werden sollen und stellen Sie dort auf das Unterformular "UF NavBtns/Wiederholung" um.
  • Speichern Sie die Änderungen und lassen Sie das Formular testweise anzeigen. Sie können nun wie gewünscht die Maustaste gedrückt halten und so ohne Unterbrechungen durch die Datensätze blättern.
Zur Funktionsweise: Beim Drücken der Maustaste wird nun die Funktion "RepeatNavBtns()" aufgerufen. Als Parameter ist die Nummer der wiederholt auszuführenden Taste mit "1" für "Vorherigen Datensatz" und "2" für "Nächsten Datensatz" anzugeben. Die Funktion ruft dann in einer Schleife die ursprüngliche Funktion "DoNavBtns" auf, solange "GetAsyncKeyState()" eine gedrückte Maustaste meldet. Da es möglich ist, linke und rechte Maustaste über die Systemsteuerung zu vertauschen (Stichwort "Linkshänder"), fragen wir diesen Status per "GetSystemMetrics()" ab und setzen die abzufragende Maustaste per "Iif()" entsprechend auf linke oder rechte Maustaste. Beim Wechsel der Datensätze wird jeweils die Prozedur "Delay" aufgerufen, die eine Pause von 250 Millisekunden einlegt - andernfalls würden die Datensätze rasend schnell durchblättert und so eine exakte Positionierung unmöglich werden.

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/


Fehlermeldung 'Mehr Datenbanken können nicht geöffnet werden' vermeiden
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Wenn ich eine Anzahl bestimmter Formulare geöffnet habe, besonders im Zusammenhang mit einem Formular namens Wochenansicht (mit 8 Unterformularen, die die Daten über je eine Union-Abfrage beziehen) und dann ein weiteres Formular geöffnet werden soll, erscheint die Fehlermeldung:

"Mehr Datenbanken können nicht geöffnet werden"

Heißt das, dass die Grenzen von Access ausgeschöpft sind?
H. Arnold

 ANTWORT:  Die Fehlermeldung ist etwas irreführend, denn sie bezieht sich nicht auf Datenbanken, sondern auf Tabellen: Bei jedem Zugriff auf eine Tabelle beispielsweise über eine Abfrage, ein gebundenes Objekt (Formular, Unterformular, Beicht) eine SQL-Anweisung in der Eigenschaft "Datenherkunft" oder "Datensatzherkunft", eine Domänenfunktion wie "DLookup()" oder über eine benutzerdefinierte Funktion, die Recordsets nutzt, vergibt Access eine so genannte "TableID" und gibt sie erst wieder frei, wenn der damit verbundene "Datenempfänger" geschlossen oder deinitialisiert wird. Irgendwann ist dieser Pool von TableIDs erschöpft, so dass Access die o.g. Fehlermeldung anzeigt. Wo die Grenzen dabei liegen, ist nicht dokumentiert. Probleme treten unserer Erfahrung nach vor allem durch nicht korrekt deinitialisierte Objektvariablen beispielsweise in benutzerdefinierten Funktionen mit Recordsets auf. Hier reicht am Ende ein einfache "db.Close" oder "rs.Close" nicht aus, die Objektvariablen müssen explizit mit "Set rs|db = Nothing" deinitialisiert werden, damit verbundene TableIDs wieder freigegeben werden.

Die zweithäufigste Ursache sind Listen und Kombinationsfelder, die ihre Inhalte per SQL-Anweisungen über die Eigenschaft "Datensatzherkunft" beziehen. Hier sollte geprüft werden, ob nicht eventuell auf Werteliste umgestellt werden und der Aufbau der Auswahlen über Funktionen in "Form_Load" erfolgen kann. Schließlich benötigen verschachtelte Abfragen und UNION-Abfragen sehr viele TableIDs, so dass diesbezüglich alternative Methoden wie benutzerdefinierte Funktionen untersucht werden müssen.

Aktivierreihenfolge beim Einsatz von Registern
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Ich habe in Access aus 3 Formularen eines gemacht, indem ich 2 Register einführte. Jetzt ist es aber so, dass die Eingabe-Reihenfolge nicht mehr korrigierbar ist. Sobald die Anzahl 9 oder 10 überschritten wird, werden die Eingaben nicht übernommen oder nach mehrfachem Eingeben zwar angenommen (Herunterzählen um 1?), aber dadurch bereits übernommene Reihenfolgenpositionen durcheinander geworfen werden (mögliche Gesamtanzahl > 31). Woran kann das liegen?
G. Winkelmann

 ANTWORT:  Wir können Ihr Problem zwar nachvollziehen, jedoch keine befriedigende Lösung anbieten. Nach unseren Tests beginnen die Probleme, wenn mehr als ein Register-Steuerelement im Formular vorhanden ist. Die Aktivierreihenfolge kann normalerweise pro Registerkarte des Register-Steuerelementes eingestellt werden, hier scheint es aber aufgrund von Mängeln in der internen Seitenverwaltung des Register-Steuerelementes zu den beobachteten Verwirrungen zu kommen. Die Probleme ließen sich lösen, indem das erste Register-Steuerelement um Seiten erweitert, dort die Inhalte des zweiten Register-Steuerelementes teils unter Nutzung von Unterformularen eingebaut und das zweite Register-Steuerelement gelöscht wurde.

 Newsletter-Tipp

Excel-Tipps kostenlos per E-Mail

SmartTools Excel Weekly ist ein kostenloser E-Mail-Newsletter, der Ihnen jede Woche interessante Tipps rund um Excel 2003, 2002/XP, 2000 und 97 liefert:

  • Neue Rechenfunktionen für Ihre Tabellen
  • Nützliche VBA-Prozeduren
  • Undokumentierte Parameter und Funktionen
  • Infos zu Bugs und Patches
  • Wichtige Download-Links
  • Helpline für Ihre Fragen zu Excel
Bestellen Sie jetzt Ihr kostenloses Abo:

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/