Access-News & Downloads
Access-Helpline
Weihnachtsaktion: 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: Zeitplanungsvorlagen + CD 'Personalplanung und Dienstpläne' Download-Tipp: So vermeiden Sie doppelte Datensätze Das Erfassen von doppelten Datensätzen gehört zu den alltäglichen Problemen vor allem bei der Eingabe von Adressen. Arbeiten dann auch noch mehrere Mitarbeiter beispielsweise in der Auftragsannahme, sind die unerwünschten Zwillinge in Ihrer Datenbank vorprogrammiert und müssen später mühsam entfernt werden. Wie aber können Sie die Doppel bereits bei der Eingabe möglichst effektiv erkennen? In unserer kostenlosen Techinfo stellen wir Techniken vor, mit denen Sie in Zukunft die Datenerfassung noch effizienter gestalten können, weil doppelte Datensätze bereits während der Eingabe erkannt werden. Sie erhalten dazu fertige VBA-Lösungen, die Sie direkt in Ihre Datenbanken einbinden können:
Techinfo: Access-Daten per VBA in Excel-Diagramme umsetzen Wenn Sie Ihre Access-Daten mit Hilfe von Excel grafisch darstellen möchten, werden die Daten in der Regel zunächst in eine Arbeitsmappe exportiert, dann in Excel geöffnet und anschließend umgesetzt. Dieser Umweg ist aber nicht unbedingt nötig: Diagramme können Sie per VBA auch auf direktem Weg erstellen. Excel stellt dazu spezielle Objekten, Eigenschaften und Methoden bereit. Wie Sie diese Möglichkeiten am effektivsten nutzen, ist Inhalt eines White Papers der MSDN-Spezialisten: Access-Daten per VBA in Excel-Diagramme umsetzen Die Autoren vermitteln zunächst Grundlagen, die für die Nutzung des Objektmodells und zur programmatischen Erstellung von Diagrammen notwenig sind. Dabei geben sie nützliche Tipps und Hinweise und zeigen beispielsweise, dass es mitunter einfacher ist, eine Diagrammerstellung zunächst per Makrorecorder aufzuzeichnen und die daraus resultierende Routine anzupassen, als eine VBA-Routine komplett neu zu entwickeln. Ergänzend dazu empfiehlt sich eine Techinfo, die sowohl den lesenden als auch den schreibenden Zugriff auf Excel-Tabellen sehr detailliert und Schritt für Schritt erläutert: Techinfo: Zugriff auf Excel-Tabellen Anhand praktischer, direkt nachvollziehbarer Beispiele zeigen die TechNet-Spezialisten, wie Sie beispielsweise einzelne Zellen adressieren, um deren Inhalte, Formeln oder Formatierungen auszulesen oder zu setzen.
Formulare schneller laden Versionen: Access 2003, 2002/XP, 2000 und 97 Wenn das Öffnen eines Formulars einige Augenblicke dauert, wissen Sie als Entwickler was im Hintergrund abläuft. Sie kennen die Abfrage, die Access zunächst ausführen muss oder die Datenmengen der Tabelle, auf der das Formular basiert. Anwender haben aber meistens wenig Verständnis dafür und daher zeigen wir Ihnen in dieser Woche einen kleinen Trick, mit dessen Hilfe Sie Formulare auf den ersten Blick ohne Wartezeit sofort zur Verfügung stellen können. Tatsächlich wird der Ladevorgang nur verlagert, aber Sie werden sehen: die Umstellung wirkt Wunder! Das Konzept: In einer Tabelle legen Sie fest, welche Formulare der Datenbank beim Start direkt geöffnet werden sollen. Über eine zusätzliche Einstellung können Sie angeben, in welchem Modus ein Formular geöffnet werden soll. Über "AutoExec" wird dann beim Start der Datenbank eine Funktion aufgerufen, die die gewünschten Formulare öffnet. Wechseln Sie später zur Datenbank, können Sie direkt mit den benötigten Formularen arbeiten, ohne lange Wartezeiten in Kauf nehmen zu müssen. Um die Lösung in Ihre Datenbank einzubauen, gehen Sie wie folgt vor:
AnzeigeModus: Datentyp "Zahl", Feldgröße: "Byte"
Herkunftstyp: Werteliste Datensatzherkunft: Versteckt;0;Minimiert;1;Normal;2 Gebundene Spalte: 2 Anzahl Spalten: 2 Spaltenbreiten: 3cm;0cm
Dim db As DAO.Database Dim rs As DAO.Recordset Dim strForm As String Dim bModus As Byte Dim Anz As Long, I As Long On Error Resume Next Set db = CurrentDb() Set rs = db.OpenRecordset("AutoLaden_Formulare") Err = 0 rs.MoveLast If Err = 0 Then Anz = rs.RecordCount rs.MoveFirst For I = 1 To Anz strForm = rs("FormularName") bModus = rs("AnzeigeModus") Select Case bModus Case 0 DoCmd.OpenForm strForm, , , , , acHidden Case 1 DoCmd.OpenForm strForm, , , , , acIcon Case 2 DoCmd.OpenForm strForm, , , , , acWindowNormal End Select rs.MoveNext Next I End If 'Err= 0... rs.Close Set rs = Nothing Set db = Nothing DoEvents End Function Im ersten Schritt öffnen wir hier die Tabelle "AutoLaden_Formulare" als Recordset und ermitteln zur Begrenzung der folgenden Schleife die Anzahl vorhandener Datensätze. Kommt es dabei zu einem Fehler, ist die Tabelle leer beziehungsweise es sollen keine Formulare angezeigt werden. Die entsprechenden Anweisungen werden also nur bei "Err = 0" ausgeführt. In einer Schleife gehen wir dann alle Datensätze durch, lesen den Formularnamen und den Anzeigemodus aus und rufen dann je nach Anzeigemodus "DoCmd.OpenForm" mit einem der Parameter "acHidden", "acIcon" oder "acWindowNormal" auf.
Über die Tabelle "AutoLaden_Formulare" legen Sie fest, welche Formulare in welchem Modus automatisch beim Start geladen werden sollen. Dazu geben Sie den Namen des Formulars, so wie er im Datenbankfenster angezeigt wird, im Feld "FormularName" ein. Über das Feld "AnzeigeModus", für das ein Nachschlage-Kombinationsfeld eingerichtet ist, wählen Sie dann den gewünschten Modus "Versteckt", "Minimiert" oder "Normal" aus. Beim Modus "Versteckt" wird das Formular geladen, bleibt aber komplett unsichtbar. Es ist aber, wenn Sie es benötigen, bereits komplett initialisiert und einsatzbereit. Sie können es entweder über das Menü Fenster-Einblenden anzeigen lassen oder es einfach per Doppelklick im Datenbankfenster öffnen - Access macht dann die bereits im Speicher befindliche, initialisierte Kopie sichtbar. Beim Modus "Minimiert" wird das Formular als Symbol am unteren Fensterrand von Access abgelegt. Sie können sich auf diesem Wege beispielsweise Verwaltungsformulare, die nicht sofort benötigt werden, vorab als Symbol zurechtlegen. Im Modus "Normal" wird das Formular wie gewohnt zur direkten Bearbeitung angezeigt. In Kombinationen aus "Normal" und "Minimiert" können Sie also zum Beispiel ein Formular zur Terminverwaltung für die sofortige Prüfung anstehender Termine und Aufgaben normal öffnen und Artikelinfos und Kundenadressen für den späteren Einsatz minimiert ablegen.
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 Fragen aus und beantwortet Sie an dieser Stelle im Newsletter. Verweise auf Word richtig setzen Versionen: Access 2003, 2002/XP, 2000 und 97 FRAGE: Wir haben eine Access 2002-Datenbank entwickelt, die unter anderem Adressen in ein Word-Dokument einfügt. Das geschieht per Office Automation über eine Objektvariable vom Typ "Word.Application". Einen entsprechenden Verweis auf "Microsoft Word 10.0 Object Library" haben wir gesetzt. Diese Datenbank soll jetzt in unserer Firma in verschiedenen Abteilungen und bei Kunden eingesetzt werden. Dort sind jedoch unterschiedliche Word-Versionen vorhanden. Müssen wir nun für jede eventuell vorhandene Word-Version eine spezielle Datenbank mit Verweisen auf Word 97, 2000, 2002/XP oder 2003 erstellen? T. Pfahl ANTWORT: Nein, das ist nicht notwendig. Ein Verweis wie "Microsoft Word 10.0 Object Library" wird nicht als Text, sondern als Anwendungs-ID festgehalten. Diese Anwendungs-ID ist bei allen Word-Versionen gleich. Wird die Datenbank geöffnet, versucht Access zunächst, die VBA-Umgebung zu initialisieren und die Verweise aufzulösen. Dazu sucht Access in der Registry nach dieser Anwendungs-ID und setzt den Verweis automatisch auf die entsprechende Anwendung um. So spielt es keine Rolle, welche Word-Version installiert ist. Sie können das prüfen, indem Sie Ihre Datenbank einmal auf einem Office 2003-System öffnen, in die VBA-Entwicklungsumgebung wechseln und dort das Menü Extras-Verweise anwählen - hier wird nun korrekterweise "Microsoft Word 11.0 Object Library" und damit Word 2003 referenziert. MS-FlexGrid mit Access einsetzen Versionen: Access 2003, 2002/XP und 2000 FRAGE: Ich möchte das MS FlexGrid in einer Access-Datenbank verwenden. Alle Komponenten sind im Verzeichnis "Windows/System32" vorhanden. Verweis ist auch gesetzt. Beim Aufziehen des FlexGrids in einem Access-Formular erscheint die Meldung: "Sie verfügen nicht über die Lizenz, die erforderlich ist, um dieses ActiveX-Steuerelement einzusetzen." Was muss getan werden, damit man das MS FlexGrid in Access problemlos eingebunden kann? A. Theusner ANTWORT: Microsoft weist ausdrücklich darauf hin, dass die ActiveX-Komponente "MS FlexGrid" nicht für Access konzipiert ist, weil die Funktionalität dort mit Unterformularen bzw. mit der Datenblattansicht bereits zur Verfügung steht. Dass es trotzdem mit Access ab Version 2000 in der Version 6.x eingesetzt werden kann, können wir aus praktischer Erfahrung bestätigen. Der Einsatz ist jedoch recht problematisch, da es sehr viele Abhängigkeiten von anderen Windows-Komponenten sowie eine sprachspezifische Support-DLL (FlxGdDE.DLL) gibt. Sobald eine der Komponenten in einer falschen Version vorliegt oder zum Beispiel ein Tool eine anderssprachige Support-DLL installiert und registriert hat, funktioniert die Einbindung nicht mehr und es wird unter anderem die o.g. Fehlermeldung angezeigt. Der sicherste Weg für den zuverlässigen Einsatz des FlexGrid-Controls mit Access ist die Installation des deutschen Service Packs für Visual Basic 6 auf der Entwickler-Maschine. Sie finden es unter der folgenden Adresse: Service Pack für Visual Basic 6 Anschließend lässt sich das FlexGrid-Control problemlos in Access einbinden. Um die Datenbank weiterzugeben, kopieren Sie FLXGDDE.DLL und MSFLXGRD.OCX auf den Zielrechner und registrieren beides über REGSVR32.EXE.
Excel-Tabellen dynamisch verknüpfen Versionen: Access 2003, 2002/XP, 2000 und 97 FRAGE: Ich habe Folgendes Problem: Ich habe eine Access Datenbank, die Daten aus zwei Excel Tabellen bezieht. Wenn ich den Ordner, in dem sich die Access-Datenbank und die Excel-Arbeitsmappen befinden, in ein ZIP-Archiv packe und per Mail verschicke, kann der Empfänger nicht mit der Datenbank arbeiten, da beim Empfänger der Pfad zu den Excel-Arbeitsmappen nicht mehr stimmt. Wie lässt sich das verhindern? B. Lietzmann ANTWORT: Das Problem lässt sich lösen, indem Sie die Excel-Tabellen dynamisch verknüpfen. Gehen Sie wie folgt vor:
Dim db As Database, L As Integer, aPath As String Set db = CurrentDb() aPath = db.Name L = Len(aPath) While Mid$(aPath, L, 1) <> "\" And L > 0 L = L - 1 Wend If L > 1 Then aPath = Left$(aPath, L) Else aPath = "" End If GetMDBPath = AddSlash(aPath) End Function Function AddSlash(aPath As String) AddSlash = aPath If Trim$(aPath) = "" Then Exit Function If Right$(aPath, 1) = "\" Then Exit Function AddSlash = aPath & "\" End Function
Warnmeldungen An: Nein Aktion: LöschenObjekt Objekttyp: Tabelle Objektname: XLSTab1 Aktion: LöschenObjekt Objekttyp: Tabelle Objektname: XLSTab2 Aktion: TransferArbeitsblatt Dateiformat: Microsoft Excel Tabellenname: XLSTab1 Dateiname: =GetMDBPath() & "Mappe1.xls" Besitzt Feldnamen: Ja/Nein Aktion: TransferArbeitsblatt Dateiformat: Microsoft Excel Tabellenname: XLSTab2 Dateiname: =GetMDBPath() & "Mappe2.xls" Besitzt Feldnamen: Ja/Nein "Mappe1.xls" und "Mappe2.xls" sowie "XLSTab1" und "XLSTab2" ersetzen Sie durch die aktuellen Namen der Arbeitsmappen bzw. der verknüpften Excel-Tabellen, "Besitzt Feldnamen" stellen Sie je nachdem auf "Ja" oder "Nein" ein. Die Lösung bindet beim Öffnen der Datenbank automatisch die beiden Excel-Tabellen dynamisch neu ein. Dazu werden de vorhandenen Verknüpfungen zunächst gelöscht. Zwei "TransferArbeitsblatt"-Anweisungen binden die Excel-Tabellen dann neu ein, wobei der Pfad über die Funktion "GetMDBPath()" nun gemäß den aktuellen Gegebenheiten und unabhängig davon, wohin der Inhalt des ZIP-Archivs entpackt wurde, ermittelt wird.
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.
|