Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 2/2013.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Erfahren Sie, wie Sie Dateinamen so kürzen, dass diese in Textfeldern und anderen Steuerelementen angezeigt werden können.

Techniken

VBA, Formulare

Voraussetzungen

Access 2000 und höher

Beispieldateien

KurzeDateinamen.mdb

Shortlink

www.access-im-unternehmen.de/876

Dateinamen kürzen und anzeigen

André Minhorst, Duisburg

Die Darstellung von Dateinamen inklusive Pfad ist in Access (und auch in anderen Anwendungen) problematisch, wenn dazu lediglich ein Textfeld, ein Kombinationsfeld oder ein Listenfeld zur Verfügung steht. In der Regel reicht der Platz nicht, um den kompletten Dateinamen darzustellen. Dieser Beitrag zeigt, wie Sie Dateinamen entsprechend gekürzt darstellen und dennoch bei Bedarf die Bearbeitung in Text- oder Kombinationsfeldern erlauben.

Beginnen wir mit einem einfachen Textfeld namens txtDateiname, das einen mit einem Datei öffnen-Dialog ausgewählten Dateinamen aufnehmen soll. Dies erledigen Sie in der Regel mit einer Konstellation wie in Abb. 1. Die Schaltfläche rechts löst beim Anklicken das Ereignis Beim Klicken aus, das wiederum die folgende Ereignisprozedur startet:

pic001.png

Abb. 1: Einfaches Textfeld zum Aufnehmen eines Dateinamens plus Schaltfläche

Private Sub cmdDateiAuswaehlen_Click()

    Me!txtDateiname = OpenFileName(CurrentProject.Path, , "Access-Datenbank (*.mdb,*.accdb)|Alle Dateien (*.*)")

    End Sub

Die Prozedur verwendet die Funktion OpenFilename, um einen Datei öffnen-Dialog anzuzeigen. Die Datei, die der Benutzer mit diesem Dialog auswählt, wird dann als Wert des Textfeldes txtDateiname eingetragen.

Dies funktioniert auch reibungslos, allerdings zeigt das Textfeld zu lange Dateinamen wie in Abb. 2 an.

pic002.png

Abb. 2: Anzeige eines zu langen Dateinamens

Dateiname kürzen

Was also tun? Ganz einfach: Sie nutzen eine kleine Funktion, die den Dateinamen für unsere Zwecke aufbereitet. Das Ergebnis soll so wie in Abb. 3 aussehen. Zwischen dem ersten und dem letzten Backslash sollen so viele Verzeichnisse durch drei Punkte (...) ersetzt werden, bis der Ausdruck eine bestimmte Zeichenlänge erreicht - die dann vom Textfeld dargestellt werden kann.

pic003.png

Abb. 3: Textfeld mit gekürztem Dateinamen

In diesem Fall hat die Funktion tatsächlich alle Elemente bis auf den Laufwerksbuchstaben und den Dateinamen entfernt.

Bevor wir einen Blick auf die Funktion werfen, welche die Kürzung vornimmt, schauen wir uns noch an, welche Möglichkeiten es zur weiteren Verarbeitung des Dateinamens gibt. So möchte der Benutzer gegebenenfalls doch noch den kompletten Dateinamen sehen oder diesen sogar weiterverwenden. Das Betrachten des Dateinamens lässt sich ganz einfach realisieren, indem Sie den Dateinamen nach dem Einlesen als Wert der Eigenschaft ControlTipText einstellen. Der Dateiname erscheint dann nach dem Überfahren des Textfeldes mit der Maus (s. Abb. 4).

pic004.png

Abb. 4: Anzeige des vollständigen Dateinamens

Wenn Sie den Wert des Textfeldes weiterverarbeiten möchten, könnten Sie erstens auf den Inhalt der Eigenschaft ControlTipText zugreifen. Wenn Sie diese gar nicht nutzen möchten, legen Sie entweder ein weiteres Steuerelement an, das den Dateinamen zwischenspeichert, oder Sie verwenden die Tag-Eigenschaft des Steuerelements.

Die Prozedur cmdDateiAuswaehlen2_Click, die beim Mausklick auf die Schaltfläche neben dem zweiten Textfeld ausgelöst wird, liest zunächst den Dateinamen in die Variable strDateiname ein (s. Listing 1).

Listing 1: Füllen des Textfeldes mit gekürztem Dateinamen

Private Sub cmdDateiAuswaehlen2_Click()

    Dim strDateiname As String

    strDateiname = OpenFileName(CurrentProject.Path, , "Access-Datenbank (*.mdb,*.accdb)|Alle Dateien (*.*)")

    If Len(strDateiname) > 0 Then

        Me!txtDateiKurz = DateinameKuerzen(strDateiname, 50, True)

        Me!txtDateiKurz.ControlTipText = strDateiname

        Me!txtDateiKurz.Tag = strDateiname

    End If

End Sub

Nach einer Prüfung, ob ein Dateiname eingelesen wurde, führt die Prozedur drei Schritte durch: Sie wendet die weiter unten beschriebene Funktion DateinameKuerzen auf den Wert von strDateiname an und trägt das Ergebnis in das Textfeld txtDateiKurz ein und fügt den vollen Dateinamen als Wert der Eigenschaften ControlTipText und Tag ein.

Manuelle Änderung des Dateinamens

Was geschieht, wenn der Benutzer den Dateinamen manuell ändern möchte? Dazu wird der Benutzer in das Textfeld klicken und die gewünschten Änderungen vornehmen. Nun müsste man allerdings zu diesem Zeitpunkt den gekürzten Eintrag entfernen und den vollen Dateinamen anzeigen, damit eine Bearbeitung möglich wird.

Dazu verwenden wir die beiden Ereignisse, die beim Eintreten in das Textfeld und beim Verlassen ausgelöst werden: Bei Fokuserhalt und Bei Fokusverlust.

Das Ereignis Bei Fokuserhalt des Textfeldes txtDateiKurz soll die folgende Ereignisprozedur auslösen:

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.