Von: access-weekly-html-request@smarttools.de im Auftrag von SmartTools Publishing [access-weekly-html-reply@smarttools.de]
Gesendet: Freitag, 5. Mai 2006 01:57
An: Access Weekly Abonnenten
Betreff: SmartTools Access Weekly vom 5.5.2006

Ausgabe vom 5.5.2006

 In dieser Ausgabe

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

Spotlight: Serienmails an Ihre Access-Daten komfortabel mit Word verschicken

Angebote, Rundschreiben, Preislisten und andere wichtige Ankündigungen sofort und ohne Porto verschicken? Der SmartTools Serienmailer macht es möglich:

  1. Das Anschreiben für Ihre E-Mail erstellen Sie genau wie einen ganz normalen Serienbrief in Word. Die Namen und Adressen übernehmen Sie aus einer Access-Datenbank, den Outlook-Kontakten, einer Excel- oder Word-Tabelle.
  2. Sie starten den SmartTools Serienmailer aus dem Menü Extras und legen hier das Feld mit der E-Mail-Adresse sowie den Betreff fest. Auf Wunsch können Sie sogar einen oder mehrere Anhänge auswählen, die mit dem Anschreiben verschickt werden sollen.
  3. Klicken Sie auf Serienmails senden und der Assistent verschickt voll automatisch eine personalisierte Mail mit individueller Anrede an jeden Empfänger aus der von Ihnen vorgegebenen Liste.
Outlook wird für den Versand nicht benötigt! Der komplette Versand erfolgt direkt und ohne Umwege aus Word, so dass es keine Probleme mit lästigen Sicherheitsmeldungen gibt!

Wir bieten Ihnen den SmartTools Serienmailer zurzeit mit 20% Rabatt auf den Listenpreis an:

http://www.add-in-world.com/katalog/word-serienmailer/

Download-Tipp: Flexible Formulare per SQL

Normalerweise liefern Tabellen oder Abfragen die Datenbasis für Ihre Formulare in Access. Häufig möchten Sie jedoch eine Selektion von Datensätzen bearbeiten, die bestimmten Kriterien entsprechen. In der Regel definieren Sie dann einen Formularbasierten Filter, der die entsprechenden Datensätze zusammenfasst - beispielsweise alle Kunden aus Belgien oder alle Artikel mit einem Preis kleiner 5,00 EUR. Schneller und komfortabler wäre in solchen Fällen der Einsatz einer kurzen SQL-Anweisung wie "select * from Kunden where Land='Belgien'" - allerdings bietet Access keine Möglichkeit, SQL-Statements schnell einzugeben und das Ergebnis direkt in einem Formular anzuzeigen.

SmartTools SQL für Formulare hilft weiter: Das Add-In steht Ihnen in allen Datenbanken von Access 2003, 2002/XP, 2000 und 97 über das Menü Extras-Add-Ins zur Verfügung und erlaubt die Eingabe und Zuordnung von SQL-Anweisungen für das aktuell geöffnete Formular. Nach dem Aufruf geben Sie einfach eine entsprechende SQL-Anweisung ein und klicken auf Ok - anschließend können Sie die selektierten Datensätze wie gewohnt im Formular durchblättern und bearbeiten.

Das Add-In merkt sich die durchgeführten Abfragen, so dass Sie auf die am häufigsten benötigten Anweisungen jederzeit mit wenigen Mausklicks zugreifen können. Möchten Sie dem Formular wieder die ursprüngliche Datenbasis, also die beim Entwurf festgelegte Tabelle oder Abfrage, zuordnen, klicken Sie im Add-In einfach auf Zurücksetzen. Sie finden den kostenlosen Download unter:

 SmartTools SQL für Formulare kostenlos herunterladen!

News: Neuer Formulartyp in Access 2007

Ein weiterer Blick auf die neuen Möglichkeiten von Access 2007 gefällig? Aufgrund der neuen Oberfläche werden Sie sich in vielen Bereichen komplett umgewöhnen müssen. Für den Formularentwurf steht ein spezielles "ribbon" zur Verfügung, das Ihnen alle Funktionen schneller und übersichtlicher anbieten soll:

Formularentwurf in Access 2007

Ein neuer Formulartyp ist das so genannte "Split Form". Dabei können Sie Tabellen und Abfragen gleichzeitig in der Dabellenblatt- und Einzelansicht darstellen:

'Split Form' in Access 2007

Sie verschaffen sich so einen schnellen Überblick und können einen einzelnen Datensatz schnell bearbeiten, indem Sie ihn ganz einfach im Datenblatt anklicken.

Techinfo: Office-Anwendungen per VBA steuern

Die Techinfo richtet sich zwar an den Visual Basic-Programmierer, aber als Access-Entwickler, der beispielsweise auf Word- oder Excel-Daten zugreifen möchte, stehen Sie vor denselben Problemen. Konkret geht es darum, dass beim Zugriff auf eine Office-Anwendung teilweise der Eindruck entsteht, dass die aufrufende Anwendung abgestürzt ist. Der Grund dafür sind häufig Meldungen oder Dialoge, die aufgrund der unsichtbar gestarteten Office-Anwendung nicht zu sehen. Die aufrufende Anwendung kann aber erst fortfahren, wenn diese Meldungen beantwortet wurden.

Die Techinfo gibt nützliche Tipps, wie sich dieses Problem umgehen lässt. Anhand von kleinen Beispiel-Routinen, die sowohl in Visual Basic als auch in VBA eingesetzt werden können, zeigen die Spezialisten zunächst die Problematik auf und stellen dann Lösungsansätze vor. Links verweisen auf weiterführende Informationen und Downloads nützlicher Tools. Sie finden die Techinfo unter der folgenden Adresse:

Office-Anwendungen per VBA steuern

Waren die News & Downloads hilfreich für Sie? Klicken Sie bitte hier!

 Access-Tipp der Woche

Datumsabfragen im Klartext, Teil 1
Versionen: Access 2003, 2002/XP, 2000 und 97

In Ihren Datenbanken müssen Sie regelmäßig Auswertungen erstellen, die Ihnen beispielsweise Auskunft darüber geben, welche Bestellungen an einem Mittwoch aufgegeben wurden oder welche Arbeitszeiten an einem Samstag angefallen sind. Normalerweise erstellen Sie dazu pro Wochentag eine Abfrage wie "Bestellungen/Mittwochs" und verwenden zum Beispiel ein Kriterium wie das folgende:

Weekday([Bestelldatum]) = 4

Die Funktion "WeekDay()" liefert für das als Parameter übergebene Datum als Ergebnis eine Zahl von "1" bis "7", wobei "1" für "Sonntag", "2" für "Montag", "3" für "Dienstag" usw. steht. Das gezeigte Kriterium sorgt also dafür, dass nur die Datensätze selektiert werden, bei denen die Funktion "WeekDay()" als Ergebnis "4" für "Mittwoch" liefert.

Statt der hierbei erforderlichen sieben Abfragen wäre eine Parameterabfrage, die den gewünschten Wochentag vor Ausführung der Abfrage für einen Parameter "Wochentag" vom Typ "Integer" erfragt, wesentlich praktischer. Das Kriterium würde dann beispielsweise so aussehen:

Weekday([Bestelldatum]) = [Wochentag]

Das lässt sich zwar realisieren, aber Sie müssten im Dialog "Parameterwerte eingeben" eine Zahl zwischen "1" und "7" eingeben, also immer im Kopf haben, dass "1" dem Tag "Sonntag", "2" dem Tag "Montag", "3" dem Tag "Dienstag" und so weiter entspricht. Eine komfortablere Abfrage würde die Eingabe des betreffenden Tages im Klartext, also als "Montag", "Mittwoch" oder "Samstag" erlauben. Mit Hilfe einer globalen Funktion lässt sich das wie folgt realisieren:

  • Kopieren Sie die folgende Funktion in ein Modul:
Function WeekdayStr(varDate As Variant) As String
  Dim intWD As Integer

  On Error Resume Next
  If Not IsDate(varDate) Or IsNull(varDate) Then
    WeekdayStr = "???"
  Else
    intWD = WeekDay(CDate(varDate))
    WeekdayStr = _
      Choose(intWD, "Sonntag", "Montag", _
                    "Dienstag", "Mittwoch", _
                    "Donnerstag", "Freitag", _
                    "Samstag")
  End If

End Function

  • Öffnen Sie die gewünschte Abfrage im Entwurfsmodus.
  • Wählen Sie das Menü Abfrage-Parameter an, richten Sie einen Parameter "Wochentag" vom Typ "Text" ein und klicken Sie auf Ok.
  • Geben Sie als Kriterium für das abzufragende Feld, also zum Beispiel für "Bestelldatum", den folgenden Ausdruck ein:
WeekdayStr([Bestelldatum])=[Wochentag]

Für "Bestelldatum" geben Sie den Namen des Feldes an, das in Ihrer Abfrage geprüft werden soll.

  • Speichern Sie die Änderungen und lassen Sie die Abfrage einmal ausführen.
Access zeigt den Dialog "Parameterwerte eingeben" an, in dem Sie nun den gewünschten Tag im Klartext eingeben können. Anschließend wird für jeden Datensatz die Funktion "WeekdayStr()" aufgerufen, die als Ergebnis den Klartext des Wochentages für das als Parameter übergebene Datum liefert, den Access dann gegen den eingegeben Parameter prüft und bei Übereinstimmung den Datensatz selektiert.

Wenn Sie mehrere Wochentage auf einmal, also beispielsweise Tätigkeiten für Samstag UND Sonntag abfragen möchten, verwenden Sie folgendes Kriterium in der Abfrage:

InStr([Wochentag];WeekdayStr([Tätigkeitsdatum]))<>0

Im Dialog "Parameterwerte eingeben" geben Sie dann "Samstag Sonntag" ein. Anschließend wird für jeden Datensatz die Funktion "WeekdayStr()" aufgerufen, die als Ergebnis den Klartext des Wochentages für das als Parameter übergebene Datum liefert. Mit Hilfe der Funktion "InStr()" wird dann geprüft, ob dieser Wochentag in der Eingabe enthalten, das Ergebnis also ungleich "0" ist.

Im zweiten Teil dieses Tipps der Woche stellen wir eine alternative Lösung vor, die Ihnen die Eingabe von "Woche", "Monat", "Quartal" oder "Halbjahr" erlaubt, so dass Sie bei Auswertungen für diese Zeiträume nicht erst im Kalender nachschlagen müssen.

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

ANZEIGE 
Access-Datenbanken optimieren, analysieren und dokumentieren

Der Total Access Analyzer ist eine mehrfach ausgezeichnete Access-Erweiterung, die tausende von Anwendern und Entwickler mit ihren Datenbanken einsetzen.

Wenn Sie Datenbanken für andere Anwender erstellen oder sich in komplexen Access-Anwendungen zurechtfinden müssen, leistet der Total Access Analyzer unschätzbare Hilfe. Voll automatisch kann diese in Access integrierte Erweiterung:

  1. Ungenutzte Objekte finden
  2. Grafische Übersichten der Zusammenhänge zwischen allen Datenbank-Objekten erstellen
  3. Versteckte Fehler finden
  4. Nützliche Optimierungstipps geben
  5. Eine zuverlässige Cross-Referenz erstellen (welches Objekt wird an welchen Stellen in der Datenbank verwendet)
  6. Alle oder gezielt einige Objekte Ihrer Datenbanken ausführlich dokumentieren
Weitere Informationen zum Total Access Analyzer finden Sie unter:

Total Access Analyzer für Access 2003

Total Access Analyzer für Access 2002/XP

Total Access Analyzer für Access 2000


 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.

Korrekte Sortierung von Doppelnamen
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  In unserer Kundendatei geben wir im Feld "Kundennamen" bei Ehepaaren immer nach dem Bindestrich den Mädchennamen der Ehefrau an, also beispielsweise "Weiss-Moser". Bei der Sortierung berücksichtigt Access den Bindestrich aber nicht und es kommt zu einem Durcheinander, das dann so aussieht:

Alt-Basler
Alt-Duss
Altenbach
Altermatt
Altermatt-Hess
Alt-Oesch
Altunbas
Alt-Zwahlen

Die Reihenfolge sollte jedoch richtigerweise so aussehen:

Alt-Basler
Alt-Duss
Alt-Oesch
Alt-Zwahlen
Altenbach
Altermatt
Altermatt-Hess
Altunbas

Wissen Sie eine Lösung für dieses Problem?
E. Wüthrich

 ANTWORT:  Access ignoriert den Bindestrich leider bei der Sortierung, man kann sich hier nur behelfen, indem ein berechnetes Feld hinzugefügt und für die Sortierung verwendet wird:

Feld: X: Replace([Nachname];"-";"|")
Sortierung: Aufsteigend
Anzeigen: Deaktiviert

Das Zeichen "|" erreichen Sie über AltGr+<.

Umsatzübersicht für Kunden nach Jahr
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Ich möchte gerne per Abfrage eine Übersicht der Bestellungen unserer Kunden pro Jahr anzeigen lassen. Die erste Spalte soll den Firmennamen enthalten, danach sollen dann spaltenweise die summierten Umsätze aller Jahre folgen. Wie erstelle ich eine solche Abfrage?
R. Luft

 ANTWORT:  Dazu verwenden Sie eine Kreuztabellenabfrage, die Sie am einfachsten direkt als SQL-Anweisung eingeben:

  1. Erstellen Sie eine neue Abfrage und wählen Sie die Tabellen mit den Haupt- und Detaildaten, also beispielsweise "Bestellungen" und "Bestelldetails", aus.
  2. Wählen Sie das Menü Ansicht-SQL an.
  3. Kopieren Sie die folgenden Zeilen in den SQL-Editor:
TRANSFORM Sum([Bestelldetails].[Einzelpreis]*[Anzahl])
AS Total
SELECT Kunden.Firma
FROM Kunden INNER JOIN (Bestellungen
INNER JOIN Bestelldetails ON Bestellungen.[Bestell-Nr] =
Bestelldetails.[Bestell-Nr]) ON Kunden.[Kunden-Code] =
Bestellungen.[Kunden-Code]
WHERE (((Kunden.Land)="Frankreich"))
GROUP BY Kunden.Firma
PIVOT Year([Bestelldatum]);

  • Speichern Sie die Abfrage und lassen Sie sie ausführen.
Über "TRANSFORM" spezifizieren Sie die Funktion, die die Werte für die Kreuztabellenabfrage liefert - sie entspricht der Einstellung "Wert" im Abfrageentwurf für Kreuztabellen. Mit "SELECT... FROM... WHERE... GROUP BY" selektieren Sie die Daten, die der Kreuztabelle zugrunde gelegt und nach denen sie gruppiert und zeilenweise ausgegeben werden sollen - dies entspricht der Einstellung "Zeilenüberschrift" im Tabellenentwurf. "PIVOT" legt schließlich fest, nach welchem Kriterium die Spalten der Kreuztabelle gefüllt und sortiert werden - das entspricht der Einstellung "Spaltenüberschrift" im Abfrageentwurf. Die "WHERE"-Klausel ist optional - in diesem Beispiel wird ein Land festgelegt, für das die Auswertung erfolgen soll.

ANZEIGE 
Die komfortable Urlaubs-Datenbank für Access - ungeschützt und beliebig abpassbar

Mit dieser Datenbank haben Sie die Fehlzeiten in Ihrer Firma oder Abteilung optimal im Griff: Urlaub, Krankheit, Sonderurlaub und sonstige Abwesenheiten lassen sich für jeden Mitarbeiter komfortabel mit wenigen Mausklicks erfassen.

Wenn Sie mit dem einen oder anderen Detail nicht zufrieden sind, ändern Sie es einfach ab, denn Sie erhalten die Datenbank ungeschützt mit dem kompletten Sourcecode.

Highlights der aktuellen Version 2.11:

  • Voll netzwerkfähig durch Front- und Backend-Lösung. Im Mehrplatzbetrieb fallen keine weiteren Kosten an!
  • Unterstützung von halben Abwesenheitstagen
  • Erweiterte Druckfunktionen für übersichtliche Berichte
  • Ausführliches deutsches Handbuch
Die Urlaubs-Datenbank für Access 2003, 2002/XP, 2000 und 97 hat sich bereits hundertfach in der Praxis bewährt und ist nach der voll automatischen Installation sofort einsatzbereit:

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


Inkonsistente Ergebnisse des 'Database'-Objektes
Versionen: Access 2003, 2002/XP, 2000 und 97

 FRAGE:  Um den Zugriff per VBA auf verschiedene Objekte der aktuellen Datenbank zu beschleunigen, setze ich über eine per "AutoExec" aufgerufene Funktion einmal eine globale Variable:

Public CurrDB as DAO.Database
Set CurrDB = CurrentDb()

Wird nun bei der Arbeit mit der Datenbank zum Beispiel eine neue Tabelle angelegt, ist diese beim Zugriff über "CurrDB" in der "TableDefs"-Auflistung nicht vorhanden. Wissen Sie, woran das liegt?
T. Schütt

 ANTWORT:  Die oben gezeigte Initialisierung hält in "CurrDB" quasi eine "Momentaufnahme" fest, die dem Zustand der Datenbank zum Zeitpunkt des Öffnens entspricht. Um den aktuellen Stand abzufragen, dürfen Sie eine Objektvariable vom Datentyp "Database" erst direkt vor einer Abfrage initialisieren:

Dim db As DAO.Database
Dim td As DAO.TableDef

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

 Newsletter-Tipp

Office XP und 2003-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 XP und 2003 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 und 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 © 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.