Access-News & Downloads
Access-Helpline
Spotlight: Adressen aus Access und Outlook ganz einfach nach Word übernehmen Der SmartTools Brief- und Fax-Manager 2003 reduziert das Erstellen eines neuen Briefes oder Fax-Anschreibens auf wenige Mausklicks. In Zukunft geben Sie keine Adresse mehr doppelt ein, denn Sie können auf Ihre vorhandenen Datenbestände in jeder beliebigen Access-Datenbank, in Outlook oder auf dem Exchange Server zugreifen. Den ganzen Vorgang steuern Sie aus Word 2003, 2002/XP oder 97.
SmartTools Brief- und Fax-Manager 2003 Download-Tipp: Komfortable Textbausteinverwaltung für Ihre Formulare Wenn Sie bei der Datenerfassung in Access bestimmte Textpassagen immer wieder eingeben, bleibt Ihnen standardmäßig nur die AutoKorrektur-Funktion, um ein kleines Textbaustein-System aufbauen. Die Verwaltung ist allerdings wenig komfortabel und zudem auf einige Hundert Zeichen beschränkt. Mit der kostenlosen Access-Erweiterung SmartTools Textbausteine für Memofelder können Sie beliebig viele Abkürzungen und dazugehörige Textbausteine mit bis zu 32.000 Zeichen pro Textbaustein komfortabel verwalten. Die Anbindung in Ihren Formularen erfolgt mit wenig Aufwand über eine kleine Ereignisprozedur. Anschließend können Sie in Memofeldern zum Beispiel Abkürzungen wie "rg" und danach ein Leerzeichen, ein Satzendezeichen (Punkt, Fragezeichen etc.) oder einfach Return eingeben. Die Abkürzung wird daraufhin automatisch durch den zugehörigen Textbaustein, also beispielsweise eine detaillierte Produktinformation, ersetzt. Alle Formulare und Module sind ungeschützt, so dass Sie die Lösung bei Bedarf problemlos an Ihre eigenen Anforderungen anpassen können:
Techinfo: Neuerungen in ADO.NET 2.0 Mit ADO.NET 2.0 hat Microsoft eine Reihe Neuerungen in die Datenzugriffsmethoden integriert; darunter viele Funktionen speziell für den neuen SQL Server 2005. So wurden beispielsweise die Zugriffsmöglichkeiten auf Datenprovider oder die Auswahl verfügbarer SQL-Server erheblich erweitert und vereinfacht. Spezielle Tools wie zum Beispiel der "Connection String Generator" erlauben die Verbindung zu Datenquellen per Mausklick. Über weitere Tools können Verbindungen komfortabel überwacht und analysiert oder umfangreiche Statistiken abgerufen werden. Für die Migration steht ein spezielles "BulkCopy" bereit, das die Übernahme selbst größter Datenbestände zum Kinderspiel macht. Das deutschsprachige White Paper unter der folgenden Adresse erläutert alle Neuerungen im Detail und verweist gegebenenfalls auf weiterführende Informationen im MSDN oder der Knowledge Base: Techinfo: Neuerungen in ADO.NET 2.0
Alternative Suchfunktion für Access, Teil 1 Versionen: Access 2003, 2002/XP, 2000 und 97 Mit der normalen Suchfunktion von Access klicken Sie zunächst in das Feld, das Sie durchsuchen möchten und dann auf das entsprechende Symbol "Fernglas" in der Symbolleiste. Im daraufhin angezeigten Dialog sind neben der Eingabe des Suchbegriffes noch weitere Einstellungen notwendig. 90% aller Suchvorgänge werden allerdings gestartet, um einen Datensatz zu finden, der in einem bestimmten Feld einen bestimmten Teilbegriff enthält: Man erinnert sich beispielsweise noch daran, dass der Kunde seinen Sitz in einem Ort "irgendwas mit 'Hummer'" oder eine prägnante Ziffernfolge wie "1234" in der Telefonnummer hatte. Es sollen dann also alle Datensätze durchsucht und angezeigt werden, in denen die Telefonnummer irgendwo "1234" oder der Ort die Zeichenkette "Hummer" enthält. Einstellungen im Suchen-Dialog wie zum Beispiel "Vergleichen" oder "Formatierung beachten" sind dabei völlig überflüssig und machen die Suche unnötig umständlich. Mit der Lösung aus diesem zweiteiligen Tipp können Sie eine Suchfunktion in Ihre Formulare einbinden, die ähnlich wie die Access-Suche arbeitet, aber keinerlei Einstellungen mehr erfordert. Alle Parameter legen Sie in der VBA-Routine fest, so dass Sie oder die Anwender Ihrer Datenbanken sich in Zukunft nicht mehr darum kümmern müssen. Zunächst ein paar Worte zum Konzept dieser Lösung: bei der Suche gehen wir so vor, dass zunächst auf den ersten passenden Datensatz positioniert und eine Abfrage "Weitersuchen?" angezeigt wird. Sie können so der Reihe nach alle in Frage kommenden Datensätze durchgehen und die Suche beim gewünschten Datensatz mit einem Klick auf Nein beenden. Sollte sich einmal kein passender Datensatz zum eingegebenen Suchbegriff finden, macht die Lösung per Meldung darauf aufmerksam und fragt, ob erneut gesucht werden soll. Sie können dann einen neuen Suchbegriff eingeben oder die Suche mit Nein beenden. Um diese Lösung in Ihrer Datenbank einzusetzen, übernehmen Sie zunächst die folgende Funktion in ein beliebiges Modul: Function ACWSuchen() Dim Ctl As Control Dim strSuchenNach As String Dim strFeldname As String Dim strTitel As String Dim strPrompt As String Dim intTaste As Integer On Error Resume Next Set Ctl = Screen.PreviousControl Ctl.SetFocus strFeldname = Ctl.Name strTitel = "Suchen in Feld »" & strFeldname & "«:" NeueSuche: strPrompt = "Suchbegriff eingeben " & _ "(Teilbegriff möglich, GROSS/klein spielt keine Rolle):" strSuchenNach = InputBox$(strPrompt, strTitel, "") If strSuchenNach = "" Then Exit Function DoCmd.FindRecord strSuchenNach, acAnywhere, False, _ acSearchAll, False, acCurrent, True If InStr(Ctl, strSuchenNach) = 0 Then 'Nichts gefunden Beep strPrompt = "Keinen Eintrag für Suchbegriff '" & _ strSuchenNach & "' in Feld '" & strFeldname & "' & _ " gefunden!" & vbCrLf & vbCrLf strPrompt = strPrompt & "Neuen Suchbegriff eingeben?" intTaste = MsgBox(strPrompt, _ vbYesNo + vbExclamation, strTitel) If intTaste = vbYes Then GoTo NeueSuche Exit Function End If Weitersuchen: DoEvents Beep intTaste = MsgBox("Weitersuchen?", _ vbYesNo + vbQuestion, strTitel) If intTaste <> vbYes Then Exit Function 'Auf den nächsten Datensatz setzen, 'ab dem gesucht werden soll DoCmd.GoToRecord acActiveDataObject, , acNext DoCmd.FindRecord strSuchenNach, acAnywhere, False, _ acDown, False, acCurrent, False DoEvents If InStr(Ctl, strSuchenNach) <> 0 Then 'Gefunden, gegebenenfalls weitersuchen? GoTo Weitersuchen Else 'Nichts weiter gefunden, zurück zum vorherigen Satz DoCmd.GoToRecord acActiveDataObject, , acPrevious End If End Function
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 Fragen aus und beantwortet Sie an dieser Stelle im Newsletter. Ungültige Zeichen aus Dateinamen entfernen Versionen: Access 2003, 2002/XP, 2000 und 97 FRAGE: In unseren Datenbanken können die Anwender die Namen für Export-Dateien individuell in ein Textfeld eingeben. Dabei kommt es häufig vor, dass beispielsweise Namen wie "Umsatz: I Quartal/2005" eingegeben werden. Der Doppelpunkt und der Schrägstrich führen dann zum Beispiel bei "Open Dateiname For Output As #FNum" oder bei "DoCmd.Transfer..."-Anweisungen dazu, dass ein Laufzeitfehler ausgelöst wird. Haben Sie eine Idee, wie sich dieses Problem lösen lässt? H. Dohse ANTWORT: Geben Sie die folgende Funktion in ein beliebiges Modul ein: Function ProperFilename(strFName As String) As String Dim I As Integer, L As Integer, strX As String For I = 1 To Len(strFName) If InStr("*<>?:\/|" + Chr$(34), _ Mid$(strFName, I, 1)) = 0 Then strX = strX + Mid$(strFName, I, 1) Else strX = strX + "_" End If Next I ProperFilename = strX End Function Die Anweisung zum Auslesen des Dateinamens aus dem Textfeld ändern Sie dann beispielsweise wie folgt: strFName = ProperFilename(me.txtDateiname) Die Funktion geht den als Parameter "strFName" übergebenen Dateinamen in einer Schleife Zeichen für Zeichen durch und prüft per "InStr()", ob das jeweilige Zeichen ungültig ist. Wenn nicht, wird das Zeichen zur Zeichenkette "strX", die später das Funktionsergebnis bildet, hinzugefügt. Andernfalls wird anstelle des aktuellen Zeichens ein Unterstrich "_" zu "strX" hinzugefügt. Das Ergebnis wäre zum Beispiel in Ihrem Beispiel der Dateiname "Umsatz_ I Quartal_2005". Eine zweite Möglichkeit, besteht darin, die Eingabe ungültiger Zeichen direkt im Textfeld abzufangen. Stellen Sie dazu dessen Eigenschaft "Bei Taste" auf "[Ereignisprozedur]", klicken Sie auf die Schaltfläche mit den drei Punkten und geben Sie folgende Anweisungen ein: Private Sub txtDateiname_KeyPress(KeyAscii As Integer) If InStr("*<>?:\/|" + Chr$(34), _ Chr$(KeyAscii)) <> 0 Then Beep KeyAscii = 0 End If End Sub Hier wird bei jedem eingetippten Zeichen per "InStr()" geprüft, ob es ungültig ist. Ist das der Fall, wird ein "Beep" als akustischer Hinweis ausgegeben und "KeyAscii" auf "0" gesetzt - für Access sieht es dann so aus, als wenn keine Taste gedrückt wurde, die ungültigen Zeichen erscheinen nicht im Textfeld.
Unterschiedliche Ausgabe von Memofeldern in Formularen und Berichten Versionen: Access 2003, 2002/XP, 2000 und 97 FRAGE: In einem Formular verwende ich ein Steuerelement, dessen Datenherkunft ein Memofeld ist. Das Eingabentastenverhalten habe ich auf "Neue Zeile im Feld " eingestellt, damit bei der Texteingabe automatisch ein Zeilenumbruch stattfindet. Außerdem habe ich die vertikale Bildlaufleiste aktiviert. Das funktioniert auch gut und ohne Probleme. Allerdings soll dann in einen Bericht dieser Memotext in genau der gleichen Textformation wie er auf den Formular erscheint auch ausgedruckt werden. Dazu habe ich im Bericht ebenfalls das Steuerelement so formatiert wie im Formular. Ich benutze dieselbe Schriftartund dieselben Maße (Höhe, Breite). Der Ausdruck im Bericht sieht aber immer anders aus als im Formular. Die Zeilen werden anders umbrochen und auch wenn ich im Formular passende, zeilenfüllende "Absätze" erstelle, kommen im Bericht dann unterschiedlich lange Zeilen oder umbrochene Zeilen heraus. Wie kann es zu diesen Effekt kommen? Sollten nicht die Schriftarten wie im Formular auch zu demselben Ergebnis im Bericht führen? V. Hein ANTWORT: Access legt beim Formatieren von Textfeldern in Formularen die Auflösung des Bildschirms, beispielsweise 96 dpi, und beim Formatieren von Textfeldern in Berichten die Auflösung des Druckers, zum Beispiel 300 dpi, zugrunde. Aufgrund dieser unterschiedlichen Auflösungen wird es leider niemals gelingen, eine absolute Übereinstimmung der im Formular vorgenommenen Formatierung mit dem späteren Ausdruck herzustellen. Dabei ist zu beachten, dass Access keine Textverarbeitung mit "WYSIWYG"-Anspruch ("WYSIWYG"= "What you see is what you get"), sondern eine Datenbank ist, die ihre Berichte nach ganz anderen Kriterien ausgibt. Mit den Bordmitteln von Access werden Sie dieses Problem leider nicht ohne weiteres in den Griff bekommen. Die einzige Möglichkeit besteht eventuell darin, den Bericht mit den Funktionen "Print", "Line", "PSet", "Circle" und Eigenschaften wie "TextHeight" und "TextWidth" selbst zu formatieren und auszugeben. Dazu müsste bei jedem Datensatz eine umfassende Analyse des Memofeldinhaltes und eine Umrechnung der Auflösungen, Breiten und Höhen per API-Funktionen erfolgen. Der Entwicklungsaufwand und die damit verbundenen Kosten stehen jedoch in keinem vernünftigen Verhältnis zu Lösungen, die auf Basis von ActiveX-Komponenten arbeiten und das Problem durch Einsatz von RTF lösen. Weitere Informationen finden Sie unter den folgenden Adressen: Access 2003, 2002/XP und 2000: http://www.add-in-world.com/katalog/tamemo2003 Access 97: http://www.add-in-world.com/katalog/tamemo2000 Neuer Datensatz per Schaltfläche Versionen: Access 2003, 2002/XP, 2000 und 97 FRAGE: Wir lassen in unseren Formularen keine Navigationsbuttons anzeigen, so dass es keine Möglichkeit gibt, per Mausklick einen neuen Datensatz anzulegen. Wir würden stattdessen gerne eine Schaltfläche Neu einsetzen, wissen aber nicht, welche Anweisungen wir dort ausführen lassen müssen? R. Herrmann ANTWORT: Geben Sie für die Ereignisprozedur der Schaltfläche die folgenden Anweisungen ein: Private Sub btnNeu_Click() If Not Me.NewRecord Then DoCmd.RunCommand acCmdRecordsGoToNew End If End Sub Diese Anweisungen prüfen zunächst über "Me.NewRecord", ob eventuell bereits ein neuer Datensatz bearbeitet wird. Wenn nicht, führt die folgende Anweisung "DoCmd.RunCommand acCmdRecordsGoToNew" zum Anlegen eines neuen Datensatzes.
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.
|