Von: access-weekly-html-request@smarttools.de im Auftrag von SmartTools Publishing [access-weekly-html-reply@smarttools.de]
Gesendet: Donnerstag, 23. Februar 2006 22:03
An: Access Weekly Abonnenten
Betreff: SmartTools Access Weekly vom 24.2.2006

Ausgabe vom 24. Februar 2006

 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:

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

Download-Tipp: Fertige API-Funktionen für Access

Wo Access nicht weiterhilft, können Sie in vielen Fällen die vorhandene Funktionalität durch den Einsatz von API-Funktionen erweitern. Nicht zuletzt diese Flexibilität macht den Erfolg von Access als Datenbank-Entwicklungssystem für anspruchsvolle Lösungen aus. Wir stellen Ihnen in einer kostenlosen Techinfo die nützlichsten API-Funktionen vor, mit denen Sie Ihren Datenbanken noch mehr Komfort und Funktionalität verleihen können. Dazu müssen Sie sich noch nicht einmal mit der komplexen Syntax und den Datenstrukturen der API-Funktionen auseinandersetzen, denn wir liefern Ihnen sofort einsatzbereite VBA-Funktionen in Beispieldatenbanken, die Sie sofort in Ihre Anwendungen übernehmen können:

 Fertige API-Funktionen kostenlos herunterladen!

Techinfo: Analysis Services auf SQL Server 2005 umstellen

Mit den Analysis Services für SQL Server stellt Microsoft ein mächtiges Werkzeug bereit, um Geschäftsdaten komfortabel und übersichtlich auszuwerten. Mit dem SQL Server 2005 wurden diese Möglichkeiten noch einmal erheblich erweitert. Vorhandene Installationen der Analysis Services werden jedoch bei einem Update auf den SQL Server 2005 nicht automatisch übernommen. Vielmehr müssen sie mit dem Migration Wizard manuell Schritt für Schritt in die neue Installation überführt werden. Damit Sie dabei gleich die neuen Möglichkeiten des SQL Servers 2005 einbeziehen können, haben die TechNet-Spezialisten ein umfangreiches, anschaulich illustriertes White Paper verfasst, das Ihnen bei der Umstellung und Übernahme vorhandener Daten hilfreich zur Seite steht:

Techinfo: Analysis Services für SQL Server

Waren die News & Downloads hilfreich für Sie?

 Access-Tipp der Woche

Änderungen in Formularen per Schaltfläche speichern oder verwerfen
Versionen: Access 2003, 2002/XP, 2000 und 97

Bei der Rücknahme oder Speicherung von Änderungen in Formularen verfolgt Access ein vor allem für unerfahrene Anwender undurchschaubares Konzept: Beim Wechsel des Datensatzes werden Änderungen ohne Rückfrage automatisch gespeichert, eine Möglichkeit, vorgenommene Änderungen per Menü oder Symbolleiste für den kompletten Datensatz zu verwerfen, gibt es nicht. Änderungen lassen sich zwar über die Esc-Taste, Strg+Z oder das Menü Bearbeiten-Rückgängig zurücknehmen, aber auch hier kommt es regelmäßig zu Verwirrungen: Wird gerade ein Feldinhalt geändert, nimmt Access zunächst die Änderung am Feldinhalt zurück, erst ein nochmaliger Aufruf der Rückgängig-Funktion per Esc-Taste, Strg+Z oder das Menü Bearbeiten-Rückgängig nimmt dann alle Änderungen am Datensatz komplett zurück. Damit nicht genug: Möchte ein Anwender seine bislang vorgenommenen Änderungen explizit speichern, findet er den dazu notwendigen Menüeintrag Datensatz speichern nicht etwa analog zu Rückgängig im Menü Bearbeiten, sondern im Menü Datensätze.

Praktischer wären hier auffällige Schaltflächen wie "Änderungen verwerfen", die dem Anwender als "Notausstieg" dient und alle Änderungen zurücknimmt sowie "Änderungen speichern", die den Datensatz sichert und eine Bestätigung anzeigt. Solche Schaltflächen bauen Sie wie folgt in ein Formular ein:

  1. Öffnen Sie zunächst das Formular, in das diese Schaltflächen eingebaut werden sollen, im Entwurfsmodus.
  2. Legen Sie im Formularfuß eine Schaltfläche mit der Bezeichnung Änderungen verwerfen (Name= btnUndo) an und stellen Sie deren Textfarbe auf "Rot" (Wert= 255) und die Schriftbreite auf "Fett" ein.
  3. Stellen Sie die Eigenschaft "Beim Klicken" auf "[Ereignisprozedur]" ein und klicken Sie auf die Schaltfläche mit den drei Punkten, um den VBA-Editor zu öffnen.
  4. Geben Sie im VBA-Editor folgende Anweisungen ein:
Private Sub btnUndo_Click()

  On Error Resume Next
  Beep
  If MsgBox("Alle Änderungen komplett verwerfen?", _
            vbYesNo + vbQuestion, _
            "Änderungen verwerfen:") = vbYes Then
    DoCmd.SetWarnings False
    DoCmd.RunCommand acCmdUndo
    DoCmd.SetWarnings True
  End If

End Sub

Diese Ereignisprozedur zeigt zunächst eine Sicherheitsabfrage an. Die dann folgenden Anweisungen werden nur ausgeführt, wenn die Abfrage mit einem Klick auf Ja beantwort wurde. Ist das der Fall, werden zunächst per "DoCmd.SetWarnings False" weitere Rückfragen von Access ausgeschaltet, "DoCmd.RunCommand acCmdUndo" nimmt alle Änderungen am Formular zurück und "DoCmd.SetWarnings True" schaltet die Rückfragen von Access wieder ein.

  • Legen Sie im Formularfuß eine Schaltfläche mit der Bezeichnung Änderungen speichern (Name= btnSaveNow) an und stellen Sie deren Textfarbe auf "Grün" (Wert= 32768) und die Schriftbreite auf "Fett" ein.
  • Stellen Sie die Eigenschaft "Beim Klicken" auf "[Ereignisprozedur]" ein und klicken Sie auf die Schaltfläche mit den drei Punkten, um den VBA-Editor zu öffnen.
  • Geben Sie im VBA-Editor folgende Anweisungen ein:
Private Sub btnSaveNow_Click()

  On Error Resume Next
  DoCmd.RunCommand acCmdSaveRecord
  Beep
  MsgBox "Ihre Änderungen wurden gespeichert...", _
         vbOKOnly + vbInformation, _
         "Änderungen speichern:"

End Sub

Die Ereignisprozedur speichert zunächst per "DoCmd.RunCommand acCmdSaveRecord" den aktuellen Datensatz und zeigt dann eine kleine Erfolgsmeldung als Feedback für den Anwender an.

  • Schließen Sie den VBA-Editor und lassen Sie das Formular einmal anzeigen, um die neuen Schaltflächen zu testen.
Ändern Sie zunächst die Inhalte einiger Felder, klicken Sie dann auf die Schaltfläche Änderungen verwerfen und beantworten Sie die Sicherheitsabfrage mit einem Klick auf Ja. Wenn Sie den betreffenden Datensatz anschließend prüfen, sehen Sie, dass alle Änderungen wie erwartet komplett verworfen wurden. Ändern Sie dann erneut einige Feldinhalte, klicken Sie auf Änderungen speichern und bestätigen Sie die Meldung mit einem Klick auf Ok. Die Änderungen wurden nun physisch in die Tabelle geschrieben.

War dieser Tipp für Sie hilfreich? Klicken Sie bitte hier!

ANZEIGE 
Outlook-Daten ganz einfach im Team nutzen

Mit OLXTeamOutlook, der neuesten Generation intelligenter Team-Software nutzen Sie Ihre Outlook-Daten in Zukunft noch effizienter:

  • Bearbeiten Sie ab sofort Ihre Termine, Aufgaben, Kontakte, E-Mails und Notizen aus Outlook gemeinsam mit anderen Anwendern im Netzwerk.
  • Geben Sie ganz einfach beliebig viele Ihrer persönlichen Ordner mit Terminen, Kontakten, E-Mails etc. für andere Anwender frei. So kann die Sekretärin beispielsweise den Kalender des Chefs einsehen, der Chef die Termine seiner Mitarbeiter nachschlagen oder ein Team gemeinsam Kontakte, E-Mails und Termine verwalten.
  • Richten Sie mit wenigen Mausklicks öffentliche Ordner für Gruppentermine, Raumbelegungen, gemeinsamen Firmenadressen usw. ein.
  • Alle Änderungen und Neueingaben in den gemeinsamen Ordnern sind immer sofort ohne Verzögerung in den Ordnern der anderen Teilnehmer sichtbar.
  • Im nützlichen Gruppenkalender sehen Sie jederzeit die Termine aller freigegebenen Kalender im Wochen- oder Jahresüberblick.
  • Sie benötigen keinen Exchange-Server, sondern lediglich ein freigegebenes Verzeichnis im Netzwerk, auf das alle beteiligten Anwender zugreifen können. Dieses Verzeichnis muss sich noch nicht einmal auf einem Server befinden! Jeder beliebige Rechner in Ihrem Netzwerk kann diese Aufgabe übernehmen.
  • Die neue Version 1.5 bietet jetzt noch mehr Komfort zum Beispiel mit dem Ausblenden privater Termine für andere Anwender und der globalen Erinnerungsfunktion für alle veröffentlichten Ordner.
Weitere Informationen finden Sie unter:

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

Noch Fragen? Wir haben für Sie eine Beratungshotline zu OLXTeamOutlook eingerichtet: 0 54 61 / 99 52 - 21


 Access-Helpline

Haben Sie Fragen zu Access 2003, 2002/XP, 2000 und 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.

Gruppenzugehörigkeit feststellen
Versionen: Access 2003, 2002/XP und 2000

 FRAGE:  In einem Access-Projekt steuern wir den Zugriff auf einzelne Felder in Formularen momentan per VBA wie folgt:

Sub Form_Load()

  Me.Textfeld1.Visible = _
    (CurrentUser()="Peter Müller") Or _
    (CurrentUser()="Sabine Schmidt") Or _
    (CurrentUser()="Johannes Meier")

  Me.Textfeld2.Enabled = _
    (CurrentUser()="Peter Müller") Or _
    (CurrentUser()="Sabine Schmidt") Or _
    (CurrentUser()="Johannes Meier")

End Sub

Ein Textfeld wird also angezeigt bzw. kann nur geändert werden, wenn einer der Anwender "Peter Müller", "Sabine Schmidt" oder "Johannes Meier" mit der Datenbank arbeitet. Da die Mitarbeiter häufig die Abteilungen und somit die Zuständigkeiten wechseln, müssen wir jedes Mal die VBA-Routinen entsprechend anpassen. Wir würden das gerne auf eine Abfrage der Gruppenzugehörigkeit ("Einkauf", "Verkauf", "Lager", "Marketing" usw.) ändern, wissen aber nicht, wie. Können Sie uns dazu einen Tipp geben? Danke!
W. Mau

 ANTWORT:  Dazu können Sie ADOX nutzen, das den direkten Zugriff auf eingerichtete Benutzer und Gruppen erlaubt:

  1. Wechseln Sie mit Alt+F11 in die VBA-Entwicklungsumgebung.
  2. Wählen Sie Extras-Verweise an und setzen Sie eine Referenz auf "Microsoft ADO Ext. 2.x for DLL and Security".
  3. Geben Sie in einem neuen oder in einem vorhandenen Modul die folgende Funktion ein:
Function MemberOfGroup(strGroupName As String) As Boolean
  Dim objCat As ADOX.Catalog
  Dim objUser As ADOX.User
  Dim objGroup As ADOX.Group

  On Error GoTo Exit_Func
  MemberOfGroup = False 'Default: Nicht Mitglied
  Set objCat = New ADOX.Catalog
  objCat.ActiveConnection = CurrentProject.Connection

  Set objGroup = objCat.Groups(strGroupName)
  For Each objUser In objGroup.Users
    If objUser.Name = CurrentUser() Then
      MemberOfGroup = True
      Exit For
    End If
  Next objUser

Exit_Func:
  Set objUser = Nothing
  Set objGroup = Nothing
  Set objCat = Nothing
  Exit Function

End Function

  • Ändern Sie die Abfragen in Ihren VBA-Routinen wie folgt:
Sub Form_Load()

  Me.Textfeld1.Visible = _
    (MemberOfGroup("Lager") Or _
    (MemberOfGroup("Einkauf")

  Me.Textfeld2.Enabled = _
    (MemberOfGroup("Verkauf") Or _
    (MemberOfGroup("Marketing))

End Sub

Die Textfelder sind dann nur sichtbar bzw. können nur geändert werden, wenn der aktuell angemeldet Anwender Mitglied der betreffenden Gruppe(n) ist.

Datenbankgröße überwachen
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Ich suche nach einer Möglichkeit, die Größe der aktuellen Datenbank zu überwachen. Bei Erreichen einer bestimmten Größe soll eine Meldung angezeigt werden.
K. Franke

 ANTWORT:  Geben Sie zunächst in einem neuen oder in einem vorhandenen Modul die folgende Funktion ein:

Function DBSize() As Long

  DBSize = FileLen(CurrentDb.Name)

End Function

Diese Funktion liefert mit Hilfe von "FileLen()" als Ergebnis die Größe der aktuellen Datenbank, adressiert über CurrentDb.Name, in Bytes.

Legen Sie dann ein Makro "AutoExec" an bzw. öffnen Sie ein vorhandenes AutoExec-Makro im Entwurfsmodus und wählen Sie Ansicht-Bedingungen an. Geben Sie als Bedingung folgenden Ausdruck ein:

DBSize() > 10000000

Richten Sie eine Aktion "Meldung" mit den folgenden Parametern ein:

Meldung: "Datenbank ist größer 10 MB!"
Signalton: Ja
Typ: Warnmeldung (!)
Titel: "Datenbankgröße:"

Bei jedem Öffnen der Datenbank wird nun geprüft, ob diese größer 10.000.000 Bytes (= 10 MB) ist. Wenn ja, wird eine entsprechende Meldung angezeigt.

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


Nachtrag: Erweiterte MultiInstr()-Funktion
Versionen: Access 2003, 2002/XP, 2000 und 97

Zum Beitrag "'InStr' für mehrere Zeichen" aus Access Weekly vom 16.12.2005 hat uns Access Weekly-Leser Günter Weil folgende Erweiterung zugeschickt:

In ihrem Newsletter haben sie den Tipp 'InStr' für mehrere Zeichen vorgestellt. Ich habe die Funktion dahingehend verändert, dass nicht nur die Anzahl von bestimmten Zeichen, sondern die enthaltenen Zeichen selbst zurückgegeben werden:

Function MultiInStr(aStr As Variant, _
                    theChars As String) As Variant
  Dim I As Integer, Zeichen As String

  Zeichen = ""
  For I = 1 To Len(theChars)
    If InStr(aStr, Mid$(theChars, I, 1)) <> 0 Then
      Zeichen = Zeichen & Mid$(theChars, I, 1)
    End If
  Next I
  MultiInStr = Zeichen

End Function

Der Aufruf der Funktion sieht dann beispielsweise so aus:

If MultiInStr(strTelefon, "-/()") <> "" Then
  MsgBox("Die Telefonnummer enthält folgende " & _
         "Sonderzeichen: " & _
         MultiInStr(strTelefon, "-/()"))
End If

War die Helpline für Sie hilfreich? Klicken Sie bitte hier!

 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:

  • Berichte über Bugs, Patches und Sicherheitslücken
  • Undokumentierte Parameter und Funktionen
  • Fertige Makros zur Automatisierung häufiger Arbeitsvorgänge
  • Perfekte Datensicherung Ihrer Dokumente
  • 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 © 2006 SmartTools Publishing Thomas Tai
Luisenstrasse 52, 49565 Bramsche
Telefon: 05461/9952-0, Fax: 05461/2609
E-Mail: access-weekly@smarttools.de
Internet: http://www.smarttools.de/

Alle Rechte vorbehalten. Kein Teil dieses Newsletters darf in irgendeiner Form ohne schriftliche Genehmigung reproduziert, vervielfältigt oder verbreitet werden. Für die Nutzung der enthaltenen Informationen oder die fehlerfreie Funktion wird keine Haftung übernommen. Der Benutzer ist für eventuell entstehende Schäden alleine verantwortlich.