Access-News & Downloads
Access-Helpline
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:
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:
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!
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:
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
Für "Bestelldatum" geben Sie den Namen des Feldes an, das in Ihrer Abfrage geprüft werden soll.
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!
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:
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]);
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!
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:
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.
|