Drag and Drop in Anlagefelder

Wenn Sie ein Abonnement des Magazins 'Access im Unternehmen' besitzen, können Sie sich anmelden und den kompletten Artikel lesen.
Anderenfalls können Sie das Abonnement hier im Shop erwerben.

Drag and Drop in Anlagefelder

Mit den Anlagefeldern hat Microsoft unter Access 2007 eine Möglichkeit zum Speichern von Dateien in Tabellenfeldern eingeführt, die etwas einfacher zugänglich ist als das bis dahin für solche Zwecke verwendete OLE-Feld. Leider fehlt noch eine Möglichkeit, einfach per Drag and Drop eine Datei aus dem Windows Explorer in ein Anlagefeld einer Tabelle zu ziehen. Dieser Beitrag zeigt, wie Sie ein solches Feature nachträglich hinzufügen können.

Anlagefelder sind eigentlich eine prima Sache: Sie können ganz einfach über die Benutzeroberfläche Dateien hinzufügen und darauf ins Dateisystem übertragen. Auch ein Öffnen der Dateien direkt aus dem Anlagefeld heraus ist möglich. Allerdings ist der Zugriff auf die enthaltenen Dateien mitunter etwas mühselig.

Immerhin müssen Sie zunächst auf das Anlage-Steuerelement klicken und dann auf das erscheinende Menü, um überhaupt erst die Liste der enthaltenen Dateien anzuzeigen (s. Bild 1).

Öffnen des Dialogs zum Verwalten von Anlagen

Bild 1: Öffnen des Dialogs zum Verwalten von Anlagen

Dort erwartet Sie dann ein Dialog, der die im Anlagefeld enthaltenen Anlagen anzeigt und verschiedene Möglichkeiten bietet, zum Beispiel zum Hinzufügen, Entfernen oder Öffnen einer der im Anlagefeld gespeicherten Dateien (s. Bild 2).

Dialog zum Verwalten von Anlagen

Bild 2: Dialog zum Verwalten von Anlagen

Was hier für einige Anwendungen fehlen dürfte, ist eine Möglichkeit, mal eben eine Datei aus dem Windows Explorer auf ein Steuerelement zu ziehen und so die Datei im Anlagefeld zu speichern. Das stellen wir uns etwa wie in Bild 3 vor.

Formular mit Drag-and-Drop-Ziel für das Anlagefeld

Bild 3: Formular mit Drag-and-Drop-Ziel für das Anlagefeld

Hier wählen wir komfortabel die Zieltabelle und das darin enthaltene Anlagefeld aus. Das Listenfeld darunter zeigt alle Datensätze der Tabelle an. Hier markieren Sie den Datensatz, dem Sie eine Datei hinzufügen möchten. Dann ziehen Sie die gewünschte Datei aus dem Windows Explorer einfach auf das darunter befindliche ListView-Steuerelement. Das erfolgreiche Speichern wird noch durch eine kurze Meldung bestätigt.

Formular für Drag und Drop

Das Formular der Beispieldatenbank heißt frmDragAndDrop und soll zeigen, wie Sie Dateien flexibel in beliebige Anlagefelder hineinziehen können. Dies ist erstens sinnvoll, weil Sie so die relevanten Codezeilen leicht anpassen können, zweitens können Sie das Formular gleich nutzen, wenn Sie einem Anlagefeld einer beliebigen Tabelle Dateien hinzufügen möchten.

In der Entwurfsansicht sieht das Formular wie in Bild 4 aus. Im oberen Bereich finden Sie die beiden Kombinationsfelder, mit denen Sie die Zieltabelle und das darin enthaltene Anlagefeld auswählen können. Darunter befindet sich ein Listenfeld, das die Inhalte der ersten vier Felder der gewählten Tabelle anzeigt.

Das Formular mit dem Drag-and-Drop-Ziel in der Entwurfsansicht

Bild 4: Das Formular mit dem Drag-and-Drop-Ziel in der Entwurfsansicht

Hier können Sie festlegen, zu welchem Datensatz die Anlage hinzugefügt werden soll. Schließlich folgt das wichtigste Steuerelement – das ListView-Steuerelement, das als Drag-and-Drop-Ziel dient.

Warum ausgerechnet ein ListView-Steuerelement? Nun: Dieses bietet im Gegensatz zu den Standardsteuerelementen von Access die Möglichkeit, auf Drag-and-Drop-Ereignisse zu reagieren und diese zu implementieren.

Tabelle und Feld auswählen

Das Kombinationsfeld cboTabellen erhält als Datenherkunft die folgende Abfrage:

SELECT Name FROM MSysObjects WHERE Type = 1 
AND NOT Name LIKE 'MSys*' AND NOT Name LIKE '~*' 
AND NOT Name LIKE 'f_*' ORDER BY Name;

Diese liefert alle Einträge der Systemtabelle MSysObjects, deren Feld Type den Wert 1 enthält (für lokale Access-Tabellen) und deren Feld Name nicht mit MSys..., F_... oder ~... beginnt. Erstere sind die Systemtabellen, Letztere für den internen Gebrauch verwendete Tabellen.

Nach der Auswahl soll das zweite Kombinationsfeld die Felder der gewählten Tabelle anzeigen.

Dazu legen wir für cboTabellen eine Ereignisprozedur an, die durch das Ereignis Nach Aktualisierung ausgelöst wird:

Private Sub cboTabellen_AfterUpdate()
     Me!cboFelder.RowSource = Me!cboTabellen
     Me!lstDatensaetze.RowSource = Me!cboTabellen
End Sub

Die erste Anweisung stellt die Datensatzherkunft des Kombinationsfeldes zur Anzeige der Felder auf den Wert des ersten Kombinationsfeldes ein, also den Namen der Tabelle.

Die zweite legt die gleiche Tabelle als Datensatzherkunft des Listenfeldes lstDatensaetze zur Anzeige der enthaltenen Daten fest. Damit das zweite Kombinationsfeld nach der Angabe eines Tabellennamens als Datensatzherkunft auch die enthaltenen Felder anzeigt, stellen Sie zuvor noch die Eigenschaft Herkunftsart auf den Wert Feldliste ein (s. Bild 5).

Einstellen der Herkunftsart für das Kombinationsfeld cboFelder

Bild 5: Einstellen der Herkunftsart für das Kombinationsfeld cboFelder

Dies war die Leseprobe dieses Artikels.
Melden Sie sich an, um auf den vollständigen Artikel zuzugreifen.

Bitte geben Sie die Zahlenfolge in das nachfolgende Textfeld ein

Die mit einem * markierten Felder sind Pflichtfelder.

Aktuell im Blog
Onlinebanking mit Access

Es ist geschafft: Endlich ist das Buch Onlinebanking mit Access fertiggeschrieben. Das war... [mehr]

Direktzugriff auf Tabellen und Felder

Die IntelliSense-Erweiterung für Tabellen und Felder hat mir soviel Spaß gemacht, dass ich gleich... [mehr]

IntelliSense für Tabellen und Felder

Wenn Sie mit dem VBA-Editor arbeiten und dort gelegentlich SQL-Anweisungen eingeben, müssen Sie... [mehr]

Download Access und SQL Server

Erfahren Sie, welche Schritte zum Download des aktuellen Stands des Buchs "Access und SQL Server"... [mehr]

Bilder in Access 2013

Wer die Bibliothek mdlOGL0710 von Sascha Trowitzsch oder ein ähnliches Modul aus meinen... [mehr]

Dynamische Ribbons

Immer wieder fragen Leser, wie man Ribbon-Elemente wie etwa Schaltflächen in Abhängigkeit... [mehr]

Die Blogmaschine

Einen kleinen Blog zusätzlich zum Shop zu betreiben ist eine tolle Sache. Hier lassen sich... [mehr]

Wegwerfadressen für die Newsletteranmeldung

Die Verwendung von Wegwerf-Adressen für die Nutzung aller möglichen Online-Dienste nimmt... [mehr]

Access und Facebook

Facebook und Access - das ist eine der wenigen Kombinationen, die ich noch nicht in die Mangel... [mehr]

Access und SQL Server - das Projekt

Mein neues Buch Access und SQL Server (gemeinsam mit Bernd Jungbluth) geht in die Endphase. Wer... [mehr]