Access-News & Downloads
Access-Helpline
Sonderaktion: Kalender- und Zeitplanungsvorlagen + CD 'Personalplanung und Dienstpläne' als kostenlose Zugabe! Mit dem Digitalen Zeitplaner können Sie Excel schnell und komfortabel für Zeit- und Projektplanungen aller Art einsetzen. Die Vorlagen sind komplett ungeschützt: Kopieren Sie die Vorlagen also beliebig oft, um Ihre individuellen Planungskalender für Projekte, Veranstaltungen usw. zu erstellen. Zum Beispiel:
Weitere Informationen finden Sie unter: http://www.add-in-world.com/katalog/zeitplaner/ Download-Tipp: Komfortabler Kalender für Access-Formulare Wenn Sie das Kalender-Steuerelement von Access einsetzen, haben Sie mit vielen Einschränkungen zu kämpfen. So lassen sich Samstage, Sonntage, Feiertage oder Termine nicht besonders kenntlich machen, die aktuelle Kalenderwoche fehlt in der Anzeige ganz und es gibt keine Möglichkeit, ohne zusätzliche Programmierung zum aktuellen oder einem individuellen Datum zu springen. Außerdem ist zu natürlich beachten, dass das Kalender-Steuerelement bei der Weitergabe einer Datenbank auf dem Zielrechner registriert sein muss. Der kostenlose SmartTools Kalender ist eine interessante Alternative: Sie können ihn flexibel in Ihre Datenbank einbinden, ohne zusätzliche Steuerelemente oder Komponenten zu benötigen. Dabei können Sie ihn vollkommen frei formatieren und beispielsweise Wochenenden, Feiertage und Termine mit speziellen Farben hervorheben:
Techinfo: Access-Datenbanken optimal entwickeln und verteilen Wenn Sie Ihre Datenbanken nicht nur für sich selbst und den lokalen Einsatz auf Ihrem Rechner entwickeln, sondern sie beispielsweise an Kollegen oder Kunden weitergeben möchten, sind bei der Entwicklung viele Dinge beispielsweise in Bezug auf die Benutzeroberfläche oder zur Absicherung zu beachten. Zu diesem Thema haben die MSDN-Spezialisten einen zweiteiligen Leitfaden verfasst, der Ihnen bei der Entwicklung solcher Datenbanken hilfreich zur Seite steht: Leitfaden zur Datenbankentwicklung - Teil 1 Leitfaden zur Datenbankentwicklung - Teil 1 Der Leitfaden ist für Access 2003 ausgelegt, lässt sich auch auf ältere Access-Versionen anwenden. In Teil 1 helfen die Autoren zunächst bei der Beantwortung der Frage, ob die Access Runtime-Umgebung notwendig ist oder nicht. Abhängig davon erhalten Sie nützliche Tipps und Hinweise zur weiteren Entwicklung der Datenbank. Weitere Abschnitte zeigen, wie Sie eine kontextsensitive Hilfe in die Datenbank einbauen oder die Steuerung der Datenbank und deren Funktionen über Symbolleisten vereinfachen. Teil 2 erläutert zunächst Optionen, die das Startverhalten von Access beeinflussen und wie Sie darüber beispielsweise Menüs oder andere Elemente der Benutzeroberfläche ausblenden oder durch eigene ersetzen. Weitere Abschnitte erklären Details zur Absicherung einer Datenbank, zum Einsatz der Access Runtime-Umgebung und zur Verwendung einer MDE-Datenbank in diesem Umfeld. Den Abschluss bilden dann praktische Ratschläge, wie Sie Ihre Datenbank mit Hilfe des Verpackungs- und Weitergabe-Assistenten in ein Setup verwandeln und verteilen. News: Wahl zum Tipp und Tool des Jahres 2005 In der letzten Ausgabe des vergangenen Jahres haben wir Sie um die Teilnahme an einer kleinen Umfrage teilzunehmen, in der der Access-Tipp und das Access-Tool des Jahres 2005 gewählt wird. Auf vielfachen Wunsch haben wir die Umfrage noch nicht geschlossen, sondern bieten noch eine Woche die Möglichkeit, uns Ihre Meinung zu den Tipps und Tools des vergangenen Jahres mitzuteilen. Unter der folgenden Adresse finden Sie unseren virtuellen Fragebogen, den Sie ganz kurz mit wenigen Mausklicks ausfüllen können: Wahl zum Tipp und Tool des Jahres 2005
Word-Dokumente in Memofelder einlesen Versionen: Access 2003, 2002/XP, 2000 und 97 Eine Möglichkeit, die Inhalte von Word-Dokumenten in eine Datenbank zu integrieren, besteht im Einsatz von Feldern des Datentyps "OLE". Oftmals erhalten Sie aber Word-Dokumente, deren Inhalte einfach nur in ein Memofeld übertragen werden sollen. Dazu müssen Sie Word starten, das Dokument öffnen, den Text markieren, in die Zwischenablage kopieren, nach Access wechseln und dort den Text aus der Zwischenablage in das Memofeld einfügen. Mit Hilfe von Office Automation lässt sich dieser Aufwand jedoch drastisch reduzieren: Eine kleine Funktion stellt eine Verbindung zu Word her, präsentiert hier den "Datei öffnen"-Dialog zur Auswahl des Dokumentes, öffnet die Datei und liefert dessen Inhalt als Ergebnis, das dann in ein Memofeld eingefügt werden kann. Um eine solche Lösung in Ihrer Datenbank zu nutzen, gehen Sie wie folgt vor:
Dim appWord As Word.Application Dim objDOC As Word.Document Dim dlg As Word.Dialog Dim R As Variant, I As Long Dim strFName As String, strNew As String Set appWord = CreateObject("Word.Application") With appWord .Visible = True .Activate Set dlg = .Dialogs(wdDialogFileOpen) R = dlg.Display If R = -1 Then strFName = dlg.Name Set objDOC = .Documents.Open(strFName) .Selection.WholeStory R = .Selection.Range.Text objDOC.Close wdDoNotSaveChanges End If .Quit End With Set appWord = Nothing For I = 1 To Len(R) If Asc(Mid$(R, I, 1)) = 13 Then strNew = strNew & vbCrLf Else strNew = strNew & Mid$(R, I, 1) End If Next I GetWordDOC = strNew End Function
Dim strText As String strText = GetWordDOC() If strText <> "" Then Me.Memofeld = strText End Sub "Memofeld" ersetzen Sie dabei durch den Namen des Memofeldes, in das in Ihrem Formular das Word-Dokument eingelesen werden soll.
Dabei gehen wir so vor, dass zunächst Pfad und Name der ausgewählten Datei aus dem Dialog ausgelesen und in eine Variable "strFName" übertragen werden. Über "Documents.Open" wird dieses Dokument dann geöffnet. Die Anweisung "Selection.WholeStory" markiert danach den kompletten Inhalt des Dokumentes, den wir dann schließlich der Variablen "R" zuweisen. Im Anschluss beenden wir Word und setzen die Objektvariable "appWord" zurück, um reservierten Speicher wieder freizugeben. Den Rest der Funktion bildet eine Schleife, in der wir den eingelesenen Text auf die Absatzendemarke (ASCII-Code "13") prüfen und gegebenenfalls durch "vbCrLf" ersetzen, damit der Text im Memofeld mit korrekten Zeilenumbrüchen angezeigt wird. Achtung! Bitte beachten Sie, dass Word-Dokumente möglicherweise Grafiken, Bilder, AutoFormen oder andere Elemente enthalten, die in einem Memofeld nicht angezeigt werden können. Sie sehen dort dann anstelle der Grafik ein kleines Rechteck oder ein kryptisches Sonderzeichen. Nach dem Einlesen eines Word-Dokumentes muss also der Inhalt des Memofeldes auf solche Elemente geprüft werden.
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. Datensätze per SQL verschieben Versionen: Access 2003, 2002/XP, 2000 und 97 FRAGE: Ich möchte gerne Datensätze, deren Feld "Erledigt" auf "Ja" gesetzt ist, von einer Tabelle in eine andere Tabelle verschieben und anschließend in der Ursprungstabelle löschen. Wie müssen die SQL-Anweisungen dazu aussehen? G. Abraham ANTWORT: Eine Lösung könnte folgendermaßen aussehen: DoCmd.RunSQL "INSERT INTO [Erledigte Vorgänge] " & _ "SELECT [Vorgänge].* FROM " & _ "[Vorgänge] " & _ "WHERE [Vorgänge].[Erledigt] = Yes" Diese Anweisung selektiert zunächst alle Datensätze der Tabelle "Vorgänge", bei denen "Erledigt" auf "Ja" steht und fügt sie in die Tabelle "Erledigte Vorgänge" ein. DoCmd.RunSQL "INSERT INTO [Erledigte Vorgänge] " & _ "SELECT [Vorgänge].* FROM " & _ "[Vorgänge] " & _ "WHERE [Vorgänge].[Erledigt] = Yes" Diese Anweisung löscht anschließend alle Datensätze aus der Ursprungstabelle "Vorgänge", bei denen "Erledigt" auf "Ja" steht. Ausgabe von Nullwerten in Berichtsfeldern vermeiden Versionen: Access 2003, 2002/XP, 2000 und 97 FRAGE: In Berichten wird bei numerischen Feldern, die keinen Inhalt haben, standardmäßig "0" ausgegeben. Wir möchten die Inhalte solcher Felder im Bericht aber einfach nur "leer" ausgegeben, um die Übersicht zu erhöhen. Wie können wir das erreichen? K. Blohm ANTWORT: Der Bericht "Rechnungen" in der bei Access mitgelieferten Beispieldatenbank "Nordwind" liefert dazu ein schönes Beispiel: Hier gibt es ein Feld "Rabatt", das bei Artikeln ohne Rabatt jeweils "0%" anzeigt. Dies und das oben geschilderte Problem lässt sich mit dem Einsatz benutzerdefinierter Formate lösen, die Sie einem Textfeld über dessen Eigenschaft "Format" zuweisen. Benutzerdefinierte Formate umfassen vier jeweils durch Semikolon getrennte Abschnitte: 1. Abschnitt für positive Zahlen 2. Abschnitt für negative Zahlen 3. Abschnitt für leere Werte 4. Abschnitt für Null-Werte Um nun beispielsweise die Ausgabe von "0%" im Bericht "Rechnungen" zu vermeiden, käme folgendes Format zum Einsatz: #.###%;#.###%;"";"" Dieses Format sorgt bei positiven und negativen Werten für eine Ausgabe der Form "20%" oder "-45%". Bei Leer- oder Null-Werten wird hingegen eine leere Zeichenkette ausgegeben und "0%" somit vermieden. Analog dazu verwenden Sie nun in Ihren Berichten beispielsweise folgendes Format: #.###,00;#.###,00;"";"" Auf diese Weise zeigen Sie positive und negative Werte mit Tausendertrenner und zwei Nachkommastellen an, Leer- und Null-Werte werden unterdrückt. Detaillierte Informationen zu benutzerdefinierten Formaten können Sie abrufen, indem Sie den Cursor ins Feld "Format" des Eigenschaftenfenster eines Textfeldes setzen und F1 drücken.
Dateien und Verzeichnisse auf Existenz prüfen Versionen: Access 2003, 2002/XP, 2000 und 97 FRAGE: Wir möchten gerne folgende Routine nutzen, um Datensicherungskopien von Datenbanken anzulegen, sofern die Datenbank nicht im Zielverzeichnis vorhanden ist: strPath = "Z:\Test\" strDatsi = "Z:\Datsi\" strFName = Dir$(strPath & "*.mdb") While strFName<> "" DoEvents If Dir$(strDatsi & strFName) = "" Then FileCopy strPath & strFName, strDatsi & strFName End if strFName = Dir$() Wend Die Routine funktioniert immer nur bis zur ersten Datenbank, die nicht im Zielverzeichnis vorhanden ist, danach wird das Nichtvorhandensein weiterer, ggf. zu sichernder Datenbanken nicht mehr erkannt. Was ist daran falsch? U. Roth ANTWORT: Sie können "Dir$()" nicht verschachtelt einsetzen, da der Aufruf ohne Parameter (strFName = Dir$()) sich immer am letzten Aufruf mit Parameter (If Dir$(strDatsi & strFName) = "" Then...) orientiert und so das ursprüngliche Ziel (strFName = Dir$(strPath & "*.mdb")) "vergisst". Abhilfe können Sie schaffen, indem Sie für die Abfrage auf Vorhandensein einer Datei (oder eines Verzeichnisses) eine Alternative einsetzen: Die Microsoft Scripting Runtime Library. Diese Systemerweiterung stellt Objekte bereit, über die Sie unter anderem auf das Dateisystem zugreifen und so Dateien und Verzeichnisse auf Vorhandensein prüfen können:
As Boolean Dim fso As Scripting.FileSystemObject Set fso = CreateObject("Scripting.FileSystemObject") If Right$(strName, 1) = "\" Then 'Verzeichnis CheckFileOrDirExists = fso.FolderExists(strName) Else CheckFileOrDirExists = fso.FileExists(strName) End If End Function
strPath = "Z:\Test\" strDatsi = "Z:\Datsi\" strFName = Dir$(strPath & "*.mdb") While strFName<> "" DoEvents If Not CheckFileOrDirExists(strDatsi & strFName) Then FileCopy strPath & strFName, strDatsi & strFName End if strFName = Dir$() Wend Sie übergeben der Funktion also entweder den Namen der zu prüfenden Datei wahlweise mit Laufwerk und/oder Pfad oder den Pfad des zu prüfenden Verzeichnisses mit abschließendem Backslash. An einem eventuell vorhandenen abschließenden Backslash erkennt die Funktion zunächst, ob ein Verzeichnis oder eine Datei zu prüfen ist. Abhängig davon wird entweder die Funktion "FolderExists()" oder die Funktion "FileExitsts()" des FileSystemObjects aufgerufen.
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:
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.
|