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 Zeichenfolge in das nachfolgende Textfeld ein

Die mit einem * markierten Felder sind Pflichtfelder.

Neues aus unseren Magazinen
Listenfeld: Reihenfolge mehrerer Einträge...

Wir haben bereits in mehreren Beiträgen beschrieben, wie Sie die individuelle Reihenfolge von Elementen einer Tabelle über den Inhalt eines Feldes etwa namens »ReihenfolgeID« einstellen können –... [mehr]

Diagramme mit gefilterten Daten

In Ausgabe 2/2019 haben wir in zwei Artikeln die modernen Diagramme von Access vorgestellt. Im vorliegenen Beitrag zeigen wir Ihnen, wie Sie diese abhängig von den in einem Formular angezeigten... [mehr]

Benutzerverwaltung mit verschlüsselten...

Wenn Sie in einer Access-Anwendung Benutzer verwalten wollen, die sich per Benutzername und Kennwort an die Anwendung anmelden, sollten Sie sehr sensibel mit den in der Anwendung gespeicherten... [mehr]

HTML-Tabellen mit fester Kopfzeile

In den vorherigen Ausgaben von Access im Unternehmen und in der aktuellen Ausgabe arbeiten wir in einigen Beiträgen mit dem Webbrowser-Steuerelement und stellen Daten, die wir mit den Bordmitteln... [mehr]

Flexible HTML-Tabellen mit fester Kopfzeile

Im Beitrag »HTML-Tabellen mit fester Kopfzeile« haben wir gezeigt, wie Sie Daten aus einer bestimmten Abfrage in einem Webbrowser-Steuerelement so anzeigen, dass die Spaltenköpfe oben fixiert... [mehr]

Berechtigungen per HTML verwalten

Im Beitrag »Benutzerverwaltung mit verschlüsselten Kennwörtern« stellen wir eine Lösung vor, in der wir die Berechtigungen von Benutzergruppen an Datenbankobjekten definieren. Dort benötigen wir... [mehr]

Benutzer und Berechtigungen ermitteln

In den Beiträgen »Benutzerverwaltung mit verschlüsselten Kennwörtern« und »Berechtigungen per HTML verwalten« haben wir die Voraussetzungen für eine Benutzerverwaltung geschaffen. Im vorliegenden... [mehr]

Zugriffsrechte mit Datenmakros

Es gibt verschiedene Möglichkeiten, auf Basis des aktuell angemeldeten Benutzers sicherzustellen, dass dieser nur die für ihn vorgesehenen Aktionen mit Daten durchführen darf – beispielsweise durch... [mehr]

Kennwörter generieren

Für den einen oder anderen Zweck möchten Sie vielleicht Kennwörter generieren oder in einer Benutzeroberfläche die Möglichkeit zum Generieren von Kennwörtern anbieten. Wenn Sie etwa Benutzer zu... [mehr]

Neuer Datensatz von Frontend zu Backend

Für manche Themen gibt es keine kurze, prägnante Überschrift. In diesem Fall wollen wir zeigen, wie Sie einen neuen Datensatz anlegen, der in einer temporären Tabelle im Frontend gespeichert wird,... [mehr]