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

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 6/2006.

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

Die Access-Benutzeroberfläche bietet zahlreiche Möglichkeiten für Drag and Drop. Erfahren Sie, wie Sie sich damit die Arbeit erleichtern können.

Techniken

Drag and Drop

Voraussetzungen

Access ab Version 97

Beispieldatei

-

Shortlink

412

Drag and Drop

Sascha Trowitzsch, Berlin

Das Ziehen und Fallenlassen oder Drag and Drop von Objekten mit der Maus innerhalb von Office-Programmen ist ein wichtiges Merkmal der Benutzeroberflächen. Objekte werden damit verschoben, kopiert, ausgeschnitten oder in Verknüpfungen umgewandelt. Unter Word etwa kann markierter Text mit der Maus an andere Stellen verschoben werden. Unter Access hingegen sind die möglichen Drag-and-Drop-Operationen nicht so offensichtlich und leider in der Hilfe auch kaum erläutert. In diesem Beitrag zeigt Access im Unternehmen, wie Sie sich die Arbeit bei der Entwicklung mit einigen solchen Drag-and-Drop-Aktionen erleichtern können.

Was ist Drag and Drop?

Der Vorgang ist immer der gleiche: Objekte wie Listeneintrag, ein Textteil, eine Zelle oder ein Steuerelement werden mit der Maus markiert und anschließend bei gedrückter linker Maustaste auf ein Ziel gezogen, wobei der Mauszeiger sein Aussehen in eine der in Tab. 1 beschriebenen Symbole ändert.

Sie können in vielen Fällen auch mehrere markierte Objekte gleichzeitig ziehen. Falls der Zielbereich das Droppen erlaubt, ändert der Cursor sein Aussehen nicht. Anderenfalls verwandelt sich der Mauszeiger in eine Art „Gesperrt“-Symbol.

Ob ein Objekt kopiert, verschoben oder verknüpft werden soll, lässt sich außerdem mit der Tastatur steuern. Bei gedrückter STRG-Taste wird das Objekt kopiert, bei der Umschalttaste verschoben und bei beiden zusammen eine Verknüpfung erzeugt. In einigen Fällen erlaubt der Zielbereich nur bestimmte Operationen - also etwa das Kopieren, Verschieben oder Verknüpfen.

Eine Drag-Operation lässt sich übrigens mit der ESC-Taste abbrechen.

Hallo, wer da?

Woher weiß nun aber ein Programm, welches Objekt über seine Oberfläche gezogen wird? Dies funktioniert über einen speziellen Mechanismus der Zwischenablage: Zu Beginn des Ziehens eines Objekts übergibt die Ausgangsanwendung eine objektabhängige ID an die Zwischenablage.

Beim Ziehen auf den Zielbereich teilt Windows der passenden Anwendung die gespeicherte ID mit. Die Zielanwendung entscheidet dann, welche Operationen sie zulässt.

Dabei sendet sie ein entsprechendes Feedback an Windows, das sich in einer Änderung des Mauszeigers auswirkt. Akzeptiert die Anwendung den Drop-Vorgang, übergibt die Zwischenablage die Daten des Objekts zur Weiterverarbeitung an die Zielanwendung.

Die folgenden Abschnitte liefern eine Übersicht der unter Access möglichen Operationen.

Tabelle 1: Drag-and-Drop-Symbole

Symbol

Beschreibung

drag_copy.tif

Standardmauszeiger für Drag and Copy (Objekt kopieren)

drag_link.tif

Standardcursor für Drag and Link
(Objektverknüpfung)

drop_forbidden.tif

Standardcursor für Drop not accepted (gesperrt, fallenlassen nicht möglich)

drag_copy_text.tif

Spezieller Cursor bei Drag and Copy einer Textdatei

drag_link_text.tif

Spezieller Cursor bei Drag and Link einer Textdatei

drop_forbidden_text.tif

Spezieller Cursor bei Drop not accepted einer Textdatei

Objekte des Datenbankfensters

Alle Objekte, die im Datenbankfenster von Access aufgelistet sind, lassen sich mit der Maus verschieben. Die Ziele („drop targets“) sind recht vielfältig. Je nach Objekt gibt es jedoch Unterschiede.

Alle Objekte (Tabellen, Abfragen, Formulare und so weiter) können auf den Explorer oder auf den Desktop gezogen werden. Angezeigt wird dabei ausschließlich der Verknüpfungs-Cursor. Beim Fallenlassen entsteht eine Verknüpfung mit der Bezeichnung „Verknüpfung mit [Objektname] in [Datenbankname]“. Als Icon hat sie das Symbol des Objekts im Datenbankfenster. Ein Doppelklick auf diese Verknüpfung öffnet daraufhin das Objekt der entsprechenden Datenbank in Access.

Beispiel: Sie ziehen die Tabelle tblKunden der Datenbank KundenDB.mdb auf den Desktop. Die Verknüpfung heißt dann Verknüpfung zu tblKunden in KundenDB, zeigt das Tabellensymbol an und öffnet per Doppelklick die Datenbank mit der passenden Tabelle in Access.

Das Ziehen eines Datenbankobjekts in den grauen Arbeitsbereich (MDI-Bereich) von Access öffnet das Objekt.

Wenn Sie ein Objekt auf einen Gruppenordner des Navigationsbereichs des Datenbankfensters ziehen, legt Access darin eine Verknüpfung zu diesem Objekt an. Falls sie Objektgruppen noch nicht verwendet haben sollten: Das ist eine Reihe von Ordnern, die Sie links im Datenbankfenster im „Outlookbar“ unter dem Reiter Gruppen anlegen können. Standardmäßig enthält die Liste nur den Eintrag
Favoriten. Einen anderen Gruppenordner können Sie über das Kontextmenü erstellen. Solche Gruppen eignen sich in umfangreicheren Projekten etwa dazu, Objekte mit zusammengehöriger Funktionalität übersichtlich darzustellen. Sie können beispielsweise alle Tabellen, Abfragen, Formulare und Berichte, die mit Kunden zu tun haben, in einer neuen Gruppe „Kunden“ zusammenfassen. Die Einträge in den eingebauten Ordnern wie Tabellen, Abfragen etc. bleiben natürlich erhalten.

Auch auf Menü- und Symbolleisten lassen sich Datenbankobjekte ziehen. Dies erzeugt einen neuen Menüeintrag mit einer Verknüpfung zum Objekt und zum passenden Symbol. Ein Klick auf den Eintrag öffnet das Objekt. Ausnahme: Module lassen sich nicht in Menüleisten ziehen.

Auf diese Weise füllen Sie auf einfache Weise benutzerdefinierte Symbolleisten. Zu öffnende Formulare etwa werden einfach in eine neue Leiste gezogen; die neuen Buttons können anschließend weiterbearbeitet werden. Das geht schneller, als wenn Sie die Menüelemente über den Anpassen-Dialog manuell erstellen.

Von Datenbank zu Datenbank

Eine weitere Arbeitserleichterung bringt das Kopieren von Objekten zwischen zwei Datenbanken. Dazu ziehen Sie einfach ein Objekt aus dem Datenbankfenster der ersten Datenbank in das der zweiten Datenbank. Access aktiviert sogar automatisch die richtige Seite des Datenbankfensters.Dieser Vorgang ist eine sehr fixe Alternative zum Export oder Import eines Objekts über die Assistenten des Dateimenüs.

Übrigens wird das Objekt bei gleichzeitig gedrückter Umschalttaste nicht kopiert, sondern verschoben - es ist also danach nicht mehr in der Quelldatenbank enthalten!

Tabellen und Abfragen draggen

Die folgenden Vorgehensweisen in Zusammenhang mit Tabellen gelten komplett auch für den Umgang mit Abfragen - soweit diese aktualisierbar sind.

Tabelle nach Word ...

Öffnen Sie Microsoft Word und ziehen Sie eine Tabelle oder Abfrage aus dem Datenbankfenster auf ein geöffnetes Dokument. Das Ergebnis ist die Darstellung der Daten in einer wohl formatierten Tabelle. Einfacher geht‘s nicht! Das funktioniert auch korrekt mit einer Kreuztabellenabfrage.

... und nach Excel

In gleicher Weise können Sie mit Microsoft Excel verfahren. Wenn ein Arbeitsblatt geöffnet ist, dann kann als Drag-Ziel eine Zelle anvisiert werden, die dann die linke obere Ecke der eingefügten Daten bildet.

Die anderen Office-Programme erlauben zwar Drag-and-Drop-Operationen aus Access heraus, dies führt aber nicht zu sinnvollen Ergebnissen. So kann ein Tabellenobjekt zwar in eine Powerpoint-Präsentation (Entwurf) gezogen werden, es wird dort aber nur als Inhalt von Textfeldern akzeptiert. Heraus kommt keineswegs eine ansprechende Tabelle, sondern ein CSV-artiger Text mit Trennzeichen.

Outlook nimmt ebenfalls in diversen Ordnern und im E-Mail-Entwurf Tabellenobjekte aus Access an. Ein Doppelklick auf den entstehenden Eintrag oder Anhang führt aber lediglich zur Meldung, dass der Inhalt des Objekts wegen „potenzieller Gefährdung“ nicht geöffnet werden kann.

Auch andere Programme akzeptieren Tabellen- und Abfrageobjekte, sofern sie OLE-fähige Textfelder enthalten. Hier werden dann, wie auch bei Powerpoint, die Daten als Fließtext eingefügt, was ohne Nachbearbeitung eine wenig brauchbare Ansicht ergibt.

Innerhalb von Access

Beim Erstellen von Abfragen erleichtert Drag and Drop Ihnen die Arbeit insofern, als dass Sie Tabellen und Abfragen direkt aus dem Datenbankfenster in den Abfrageentwurf ziehen können. Komplizierter wird es, wenn Sie eine Tabelle oder Abfrage selbst wieder auf eine geöffnete Tabelle oder ein geöffnetes Formular ziehen. Dann versucht Access nämlich so intelligent wie möglich die Quelldaten an die Datensätze der Zieltabelle anzufügen. Einfach ist das, wenn Quelltabelle und Zieltabelle im Aufbau übereinstimmen, sie also die gleiche Zahl von Feldern mit identischen Datentypen in der gleichen Reihenfolge aufweisen. Die Daten der Quelltabelle oder -abfrage werden dann in die Zieltabelle gefüllt.

Das funktioniert auch über unterschiedliche Datenbanken hinweg: Ist in der ersten Datenbank eine Tabelle geöffnet, dann können Sie ihr per Drag and Drop Datensätze aus einer gleichartigen Tabelle aus der zweiten Datenbank hinzufügen.

Was aber, wenn die Zahl der Felder beider Tabellen nicht übereinstimmt, sie in anderer Reihenfolge vorkommen oder andere Datentypen haben? Zunächst schaut Access hier, ob die Feldbezeichnungen übereinstimmen. Falls ja, werden die Datensätze in den übereinstimmenden Feldern angehängt. Falls nein, versucht es, die Daten in der Reihenfolge der Felder einzufügen, was jedoch nur gut funktioniert, wenn die Datentypen identisch sind. Autowert-Felder in der Zieltabelle werden dabei übrigens ignoriert. Nicht übernommene Daten schreibt Access in eine neue Tabelle namens „Einfügefehler“.

Objekte in Tabellen droppen

Eine geöffnete Tabelle akzeptiert in den Spalten dreier Feldtypen ein Drag-Objekt: Text, Memo und OLE-Objekt.

Sie können etwa Text in einem Word-Dokument markieren und anschließend in ein Text- oder Memofeld einer Tabelle ziehen. Aber Vorsicht: Der markierte Text wird dabei nicht nur kopiert, sondern ausgeschnitten, falls Sie nicht gleichzeitig die STRG-Taste gedrückt halten!

Wenn Sie denselben markierten Text hingegen in ein Feld des Typs OLE-Objekt ziehen, erzeugt dies im Datensatz ein neues (!) Word-Dokument mit dem markierten Text. Ein Doppelklick auf dieses OLE-Feld öffnet diesen Text in Word.

Halten Sie während dieser Drag-and-Drop-Operation gleichzeitig die Umschalt- und STRG-Taste gedrückt, entsteht im OLE-Feld keine Einbettung, sondern eine Verknüpfung zum Word-Dokument. Ein Doppelklick auf das OLE-Feld öffnet dann das Ursprungsdokument und markiert dabei direkt den zuvor markierten Text. Sollte das Dokument inzwischen nicht mehr existieren, erscheint eine entsprechende Fehlermeldung.

Etwas anders verhält es sich mit Zellbereichen, die aus Excel in ein OLE-Feld einer Tabelle gezogen werden. Auch hier wird ein neues Excel-Arbeitsblatt im Feld angelegt. Es enthält aber nicht nur den markierten Zellbereich, sondern eine Kopie des kompletten Arbeitsblattes. Eine Verknüpfung zur Ursprungsmappe ist hier nicht möglich.

Dateien können Sie aus dem Explorer ebenfalls in ein OLE-Feld einer geöffneten Tabelle ziehen. Bei nicht OLE-fähigen Objekten zeigt das Feld dann den Eintrag „Paket“, sonst den Namen des OLE-Servers an. Für Word etwa wäre das die Be-zeichnung „Microsoft Word Dokument“. Ein Doppelklick auf den Feldinhalt öffnet dann die mit der Dateiendung verknüpfte Anwendung, falls es sich um ein Paket handelt, oder den zuständigen OLE-Server (also ein ActiveX-Programm wie Word), soweit dieser auf dem System installiert ist.

Formulare und Berichte

Etwas beschränkter sind die Drag-and-Drop-Möglichkeiten für Formulare und Berichte. Wenn Sie aus dem Datenbankfenster ein Formular in den geöffneten Entwurf eines anderen Formulars ziehen, legen Sie damit automatisch ein Unterformular mit dem passenden Formular als Herkunftsobjekt an. Sie können Formulare auch als Unterformular in einem Bericht positionieren. Für Berichte gilt analog: Ein auf den Berichtsentwurf gezogener anderer Bericht legt einen Unterbericht in diesem an.

Bliebe noch das Drag and Drop von Dateien auf Formular- oder Berichtsentwürfe. Eine Datei etwa aus dem Explorer wird dabei in ein ungebundenes Objektfeld eingebettet.

Draggen im VBA-Editor

Auch der VBA-Editor erlaubt einige hilfreiche Drag-and-Drop-Operationen. Das gilt nicht nur für VBA-Projekte unter Access, sondern für alle Office-VBA-Programme.

Markieren Sie ein Modul im Projekt-Explorer und ziehen Sie es auf einen Ordner des Windows-Explorers oder auf den Desktop, legt Windows eine .bas- oder .cls-Datei an. Schneller können Sie Standard- oder Klassenmodule und Userforms nicht exportieren - das gilt allerdings nicht für die Module von Formularen und Berichten.

Nützlich ist das etwa zum Anlegen von Modul- und Funktionsbibliotheken in Dateiform, auf die später für andere Projekte zugegriffen werden kann. Denn auch der umgekehrte Vorgang wird unterstützt: Ziehen Sie eine .bas- oder .cls-Datei aus dem Explorer auf den Projekt-Explorer von VBA, wird das Modul importiert. Das funktioniert im Übrigen auch mit sonstigen Textdokumenten.

Statt Module über den Umweg der physischen Speicherung in Dateien zwischen zwei VBA-Projekten auszutauschen, kann man sie auch gleich direkt transferieren. Ziehen Sie ein Modul aus dem Projekt-Explorer in den Projekt-Explorer eines anderen geöffneten. Dabei wird es kopiert. Standardmodule, die man immer wieder in Datenbanken braucht, lassen sich so schnell in ein neues Datenbankprojekt übertragen. Man könnte damit auch eine Datenbank als Modulbibliothek für häufig benötigte Funktionen anlegen.

Um VBA-Code aus dem Code- oder dem Direktfenster in Anwendungen wie Word oder Texteditoren zu ziehen, muss in den Optionen des VBA-Editors (Extras/Optionen) die Option Drag/Drop-Textverarbeitung aktiviert sein. Beachten Sie, dass Sie zum Kopieren des Textes die STRG-Taste gedrückt halten müssen, anderenfalls wird der markierte Ausschnitt aus dem Quelldokument entfernt.

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.