Access-News & Downloads
Access-Helpline
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:
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:
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.
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:
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.
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:
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
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
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.
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:
Klicken Sie hier für Ihr kostenloses Abo!
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.
|