{"id":55000666,"date":"2009-06-01T00:00:00","date_gmt":"2020-05-22T22:23:26","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=666"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Drag_and_Drop_in_der_Datenblattansicht","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/","title":{"rendered":"Drag and Drop in der Datenblattansicht"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg06.met.vgwort.de\/na\/6d5167d8133c4b0d8e3f1f196fa3edef\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Im Beitrag Reihenfolge manuell anpassen (s. Shortlink 652) haben wir verschiedene M&ouml;glichkeiten f&uuml;r das Anpassen der Reihenfolge von Daten nach dem Inhalt eines speziellen ReihenfolgeID-Felds erl&auml;utert. Der vorliegende Beitrag setzt noch eins drauf: Er zeigt, wie Sie die Reihenfolge von Datens&auml;tzen in der Datenblattansicht eines Formulars per Drag and Drop anpassen k&ouml;nnen.<\/b><\/p>\n<p>&#8222;Mit den Techniken aus dem Reihenfolge-Artikel kann ich zwar einfach per Schaltfl&auml;che Datens&auml;tze in der Datenblattansicht nach oben und unten verschieben, aber noch einfacher w&auml;re das doch per Drag and Drop. Und das ListView-Steuerelement, mit dem dies ginge, kommt f&uuml;r mich nicht infrage, weil die Anwendung im Mehrbenutzerbetrieb laufen soll und man so nur mit viel Aufwand die Anzeige aktueller Daten sicherstellen kann.&#8220;<\/p>\n<p>Bild 1 zeigt, was der Leser mit dieser Aussage meint: Er m&ouml;chte einen Datensatz mit der Maus anklicken und diesen dann bei gedr&uuml;ckter Maustaste an eine andere Position im Datenblatt ziehen, wodurch dieser sich dann ober- oder unterhalb des Zieldatensatzes einordnet &#8211; und zwar dar&uuml;ber, wenn der Datensatz nach oben gezogen wird, und darunter, wenn er nach unten gezogen wird.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_03\/DragAndDrop-web-images\/pic001_opt.jpeg\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Drag and Drop in der Datenblattansicht<\/span><\/b><\/p>\n<p><b>Hausgemachtes Drag and Drop<\/b><\/p>\n<p>Welchen Weg geht man, um dieses von Access in keiner Weise unterst&uuml;tzte Verhalten nachzubilden Eine Internetrecherche war wenig hilfreich: Dort gab es bestenfalls Informationen dar&uuml;ber, wie man per Drag and Drop den Inhalt eines Textfeldes in ein anderes verschiebt, aber nicht viel mehr.<\/p>\n<p>Bevor wir Hirnschmalz investieren, nehmen wir erstmal, was der oben erw&auml;hnte Beitrag <b>Reihenfolge manuell anpassen <\/b>liefert, und bauen das Beispielformular zusammen.<\/p>\n<p>Als Tabelle mit zu sortierenden Daten dient die Tabelle <b>tblPersonen<\/b>, die lediglich die Felder <b>ID <\/b>(Prim&auml;rschl&uuml;ssel), <b>Vorname<\/b>, <b>Nachname <\/b>(beides Textfelder) und <b>ReihenfolgeID <\/b>(Zahlenfeld) enth&auml;lt.<\/p>\n<p>Au&szlig;erdem f&uuml;gen Sie aus der Beispieldatenbank des oben genannten Beitrags die Abfrage <b>qryOrder <\/b>und das Modul <b>mdlOrder <\/b>zu der Datenbank hinzu, die Drag and Drop in der Datenblattansicht erm&ouml;glichen soll. Die Abfrage <b>qryOrder <\/b>passen Sie wie in Bild 2 an, damit sie sich auf die relevanten Felder der Tabelle <b>tblPersonen <\/b>bezieht und als Grundlage der Routinen des Moduls <b>mdlOrder <\/b>dienen kann.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2009_03\/DragAndDrop-web-images\/pic002_opt.jpeg\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Diese Abfrage liefert die Grundlage f&uuml;r das Sortieren der Datens&auml;tze.<\/span><\/b><\/p>\n<p>Das Formular <b>frmDragAndDrop <\/b>der Beispieldatenbank zu diesem Beitrag statten Sie nicht etwa mit der Tabelle <b>tblPersonen <\/b>als Datenherkunft aus, sondern mit einer Abfrage, die zwar alle Felder der Tabelle <b>tblPersonen <\/b>enth&auml;lt, diese aber in aufsteigender Reihenfolge nach dem Feld <b>ReihenfolgeID <\/b>sortiert:<\/p>\n<pre>SELECT ID, Vorname, Nachname, ReihenfolgeID\r\nFROM tblPersonen ORDER BY ReihenfolgeID;<\/pre>\n<p><b>Ereignisreich<\/b><\/p>\n<p>Schauen wir nun, was Access so an Einstiegspunkten f&uuml;r Drag and Drop in Formularen und speziell in der Datenblattansicht bietet. Da die Datenblattansicht im Prinzip komplett mit Steuerelementen bedeckt ist, konzentrieren wir uns auf die Ereigniseigenschaften der Steuerelemente. F&uuml;r den Nachbau der Drag-and-Drop-Funktionalit&auml;t brauchen wir mindestens zwei Ereignisse, die beim Anklicken und beim Loslassen der linken Maustaste ausgel&ouml;st werden. Wahrscheinlich brauchen wir auch noch das Ereignis, das beim Bewegen des Mauszeigers reagiert.<\/p>\n<p>Bestenfalls soll es so laufen: Der Benutzer klickt auf die linke Maustaste, w&auml;hrend sich der Mauszeiger auf dem zu verschiebenden Datensatz befindet. Dies l&ouml;st die Ereignisprozedur <b>Bei Maustaste ab <\/b>aus und ist ein guter Zeitpunkt, um sich den betroffenen Datensatz zu merken. Dann zieht der Benutzer den Mauszeiger bei gedr&uuml;ckter Maustaste auf den Zieldatensatz und l&auml;sst die Maustaste wieder los. Hier tritt das Ereignis <b>Bei Maustaste auf <\/b>auf den Plan: Eine prima Gelegenheit, um den Datensatz zu ermitteln, auf dem sich der Mauszeiger aktuell befindet.<\/p>\n<p>Zwischendurch kann man noch die Ereignisprozedur bem&uuml;hen, die durch das Ereignis <b>Bei Mausbewegung <\/b>ausgel&ouml;st wird und, falls die linke Maustaste angeklickt ist, ein alternatives Mauszeigersymbol zur Verdeutlichung des Drag-and-Drop-Vorgangs einblendet.<\/p>\n<p>So weit die Theorie &#8211; fangen wir also mit ein paar Finger&uuml;bungen an und sorgen daf&uuml;r, dass der Mauszeiger sich beim Ziehen eines Datensatzes in ein anderes Symbol verwandelt. Diese Funktion soll in einer Routine namens <b>MouseMove <\/b>untergebracht werden, die von den entsprechenden Ereignisprozeduren aller im Datenblatt enthaltenen Steuerelemente aufgerufen werden kann. Der Aufruf sieht im Beispiel des Textfelds <b>txtID <\/b>mit dem Steuerelementinhalt <b>ID <\/b>so aus:<\/p>\n<pre>Private Sub txtID_MouseMove(button As Integer, &micro;\r\n    Shift As Integer, X As Single, Y As Single)\r\n    MouseMove button\r\n    End Sub<\/pre>\n<p>Die eigentliche Routine verwendet eine Funktion des Access-Entwicklers <b>Terry Kreft <\/b>(<b>http:\/\/www.mvps.org\/access\/api\/api0044.htm<\/b>), die als Parameter eine Konstante f&uuml;r das gew&uuml;nschte Aussehen des Mauszeigers erwartet &#8211; und das je nachdem, ob gerade die linke Maustaste gedr&uuml;ckt ist oder nicht. Diese Information liefert die als Parameter &uuml;bergebene Variable <b>intButton<\/b>, wobei der Wert <b>1 <\/b>f&uuml;r die linke Maustaste, <b>2 <\/b>f&uuml;r die rechte und <b>0 <\/b>f&uuml;r gar keine gedr&uuml;ckte Maustaste steht:<\/p>\n<pre>Private Sub MouseMove(intButton As Integer)\r\n    If intButton = 1 Then\r\n        MouseCursor IDC_MouseCursor.HAND\r\n    Else\r\n        MouseCursor IDC_MouseCursor.ARROW\r\n    End If\r\n    End Sub<\/pre>\n<p><!--30percent--><\/p>\n<p>Die Funktion <b>MouseCursor <\/b>finden Sie &uuml;brigens im Modul <b>mdlCustomMouseIcon <\/b>der Beispieldatenbank. Damit der Mauszeiger beim Drag and Drop in allen Steuerelementen umgewandelt wird, legen Sie entsprechende Aufrufe in der Ereignisprozedur <b>Bei Mausbewegung <\/b>der einzelnen Steuerelemente an.<\/p>\n<p><b>Draggen, das ist gar nicht schwer &#8230;<\/b><\/p>\n<p>Auch f&uuml;r die Ereignisprozeduren <b>Bei Maustaste ab <\/b>und <b>Bei Maustaste auf <\/b>legen Sie je einen Aufruf der nachfolgend vorgestellten Funktionen <b>MouseUp <\/b>und <b>MouseDown <\/b>an, die im Beispiel des Textfelds <b>txtID <\/b>so aussehen:<\/p>\n<pre>Private Sub txtID_MouseDown(button As Integer, &micro;\r\n    Shift As Integer, X As Single, Y As Single)\r\n    MouseDown\r\n    End Sub\r\nPrivate Sub txtID_MouseUp(button As Integer, &micro;\r\n    Shift As Integer, X As Single, Y As Single)\r\n    MouseUp\r\n    End Sub<\/pre>\n<p>Schlie&szlig;lich ben&ouml;tigen wir noch zwei Variablen, in denen wir die Prim&auml;rschl&uuml;sselwerte des zu verschiebenden und des Zieldatensatzes speichern k&ouml;nnen und die im vorliegenden Fall als <b>Long<\/b>-Variablen ausgelegt werden (falls Sie beispielsweise ein Textfeld als Prim&auml;rschl&uuml;sselfeld verwenden, m&uuml;ssen Sie die Variablen und den nachfolgend vorgestellten Code entsprechend anpassen):<\/p>\n<pre>Dim lngDragID As Long\r\nDim lngDropID As Long<\/pre>\n<p>Der Rest ist doch einfach: Die beiden Routinen <b>MouseUp <\/b>und <b>MouseDown <\/b>sollen sich einfach die Start- und die Ziel-<b>ReihenfolgeID <\/b>merken und die Reihenfolge mit der Funktion <b>InterchangeOrder <\/b>aus dem Modul <b>mdlOrder <\/b>(siehe Beitrag <b>Reihenfolge manuell anpassen<\/b>, Shortlink 652) entsprechend vertauschen, was ja wohl so funktioniert:<\/p>\n<pre>Private Sub MouseDown()\r\n    lngDragID = Nz(Me.ReihenfolgeID)\r\n    End Sub\r\nPrivate Sub MouseUp()\r\n    lngDropID = Nz(Me.ReihenfolgeID)\r\n    InterchangeOrder lngDrag, lngDrop\r\n    Me.Requery\r\n    End Sub<\/pre>\n<p><b>&#8230; Droppen daf&uuml;r umso mehr!<\/b><\/p>\n<p>So, schnell ausprobieren und &#8211; nichts passiert! Was ist denn da schiefgelaufen Nun, das ist ganz einfach: Access verschiebt beim Loslassen der linken Maustaste einfach nicht den Fokus auf den Zieldatensatz und so k&ouml;nnen wir diesen auch nicht identifizieren. Um es kurz zu machen: Es gibt keine wirklich triviale L&ouml;sung, um den unter dem Mauszeiger befindlichen Datensatz zu identifizieren, wenn dieser nicht der gleiche ist, den man bereits angeklickt hat. Es gibt zum Beispiel die folgenden beiden M&ouml;glichkeiten, dies zu erledigen:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Sie begeben sich auf die Koordinatenebene. Dort erfassen Sie die Position des Mauszeigers beim Herunterdr&uuml;cken und beim Loslassen der linken Maustaste und gleichen diese mit den Positionen und Fl&auml;chen der Datens&auml;tze ab. Diese L&ouml;sung schien zu aufwendig.<\/li>\n<li class=\"aufz-hlung\">Sie ermitteln den Zieldatensatz genau wie den zu verschiebenden Datensatz: Indem Sie diesen anklicken und dann einfach den Wert des Feldes <b>ReihenfolgeID <\/b>auslesen. Dieser Mausklick muss nat&uuml;rlich programmgesteuert erfolgen, und zwar durch die Routine <b>MouseDown<\/b>. Das machen wir &#8211; wie es funktioniert und welche Probleme es dabei noch gibt, erfahren Sie gleich.<\/li>\n<\/ul>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Doppel-Klick<\/p>\n<p>Wir m&uuml;ssen also nach dem ersten Anklicken des zu verschiebenden Datensatzes auch noch einen Klick simulieren, wenn der Benutzer die Maustaste &uuml;ber dem Zieldatensatz losl&auml;sst.<\/p>\n<p>Dies l&auml;sst sich leicht erledigen, indem man die API-Funktion <b>mouse_event <\/b>einsetzt:<\/p>\n<pre>Private Declare Sub mouse_event Lib \"user32&euro; (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)<\/pre>\n<p>Mit dem Wert <b>&amp;H2 <\/b>als erstem Parameter simulieren Sie das Herunterdr&uuml;cken der linken Maustaste (Routine <b>LeftDown<\/b>), mit <b>&amp;H2<\/b> das Loslassen der linken Maustaste (Routine <b>LeftUp<\/b>):<\/p>\n<pre>Public Sub LeftDown()\r\nmouse_event &amp;H2, 0, 0, 0, 0\r\nEnd Sub\r\nPublic Sub LeftUp()\r\nmouse_event &amp;H4, 0, 0, 0, 0\r\nEnd Sub<\/pre>\n<p>Der n&auml;chste Plan sieht also so aus: Die Routine <b>MouseDown <\/b>schreibt beim ersten Durchlauf, also beim Bet&auml;tigen der linken Maustaste durch den Benutzer, die <b>ReihenfolgeID <\/b>des Ausgangsdatensatzes in die Variable <b>lngDragID<\/b>.<\/p>\n<p>Nach dem Loslassen &uuml;ber einem anderen Datensatz f&uuml;hrt die Routine <b>MouseUp <\/b>einen Aufruf der beiden Methoden <b>LeftDown <\/b>aus und simuliert so einen einfachen linken Mausklick auf den Zieldatensatz. Nun reicht dies nicht aus, denn <b>LeftDown <\/b>sorgt nat&uuml;rlich auch daf&uuml;r, dass das Ereignis <b>Bei Maustaste ab <\/b>erneut ausgel&ouml;st wird und das ganze Spielchen von vorn beginnt.<\/p>\n<p>Und da ja auch die Prozedur <b>MouseDown <\/b>zweimal aufgerufen wird (einmal durch den Benutzer und einmal durch <b>LeftDown<\/b>) und dort zwei unterschiedliche Aktionen ausf&uuml;hren soll, m&uuml;ssen wir eine Variable zur Fallunterscheidung einf&uuml;hren, die so deklariert wird:<\/p>\n<pre>Dim bolDragging As Boolean<\/pre>\n<p>Und damit funktionieren dann auch die beiden folgenden Routinen <b>MouseDown <\/b>und <b>MouseUp<\/b>. Die erste liest beim ersten Durchgang die <b>ReihenfolgeID <\/b>des angeklickten Datensatzes aus und stellt <b>bolDragging <\/b>auf <b>True <\/b>ein.<\/p>\n<p>Letzteres geschieht zun&auml;chst auf jeden Fall, auch wenn gar kein Drag and Drop zustande kommt. Danach wird <b>MouseUp <\/b>durch das Ereignis <b>Bei Maustaste auf <\/b>des Steuerelements im Zieldatensatz ausgel&ouml;st. Hat <b>bolDragging <\/b>den Wert <b>True<\/b>, l&ouml;st die Routine durch den Aufruf von <b>LeftDown <\/b>die Simulation des linken Mausklicks aus.<\/p>\n<p>Die dadurch zum zweiten Mal ausgel&ouml;ste Routine <b>MouseDown <\/b>geht nun mit dem Wert <b>True <\/b>f&uuml;r die Variable <b>bolDragging <\/b>in den zweiten Teil der <b>If&#8230;Then<\/b>-Bedingung, wo die <b>ReihenfolgeID <\/b>des Zieldatensatzes in <b>lngDropID <\/b>eingelesen wird. Entspricht <b>lngDropID <\/b>dem Wert von <b>lngDragID<\/b>, dann erfolgt das Loslassen der Maustaste auf dem gleichen Datensatz, auf dem diese auch angeklickt wurde &#8211; es hat also kein Drag-and-Drop-Vorgang stattgefunden und die Prozedur kann mit dem Setzen von <b>bolDragging <\/b>auf <b>False <\/b>beendet werden.<\/p>\n<p>Anderenfalls sorgt <b>InterchangeOrder <\/b>f&uuml;r das Anpassen der <b>ReihenfolgeID<\/b>-Werte der betroffenen Datens&auml;tze.<\/p>\n<pre>Private Sub MouseDown()\r\nIf bolDragging = False Then\r\nlngDragID = Nz(Me.ReihenfolgeID)\r\nbolDragging = True\r\nElse\r\nlngDropID = Nz(Me.ReihenfolgeID)\r\nIf Not lngDragID = lngDropID Then\r\n InterchangeOrder lngDropID, lngDragID\r\n    Me.Requery\r\nEnd If\r\nbolDragging = False\r\nEnd If\r\nEnd Sub\r\nPrivate Sub MouseUp()\r\nIf bolDragging Then\r\nLeftDown\r\nEnd If\r\nEnd Sub<\/pre>\n<p>Leider funktioniert so zwar Drag and Drop, aber das normale Anklicken will nicht mehr so recht gelingen. Haben Sie ein Feld angeklickt und wollen zu einem anderen Feld wechseln, m&uuml;ssen Sie dieses zweimal anklicken.<\/p>\n<p>Das liegt daran, dass Access das zweite Loslassen der Maustaste fehlt, das in der Programmierung ausgelassen wurde. F&uuml;llen wir die Routine <b>MouseUp <\/b>mit diesen Zeilen, sollte es nun funktionieren:<\/p>\n<pre>If bolDragging Then\r\nLeftDown\r\nLeftUp\r\nEnd If<\/pre>\n<p>Aber weit gefehlt: Es gelingt immer noch nicht, stattdessen flackert die Einf&uuml;gemarke nach jedem Klick f&uuml;r Bruchteile einer Sekunde auf. Das liegt offensichtlich daran, dass die Simulation der Mausklicks asynchron zu den nachfolgend ausgef&uuml;hrten Anweisungen erfolgt und die folgenden Aufrufe nicht mit den richtigen Variablenwerten etwa f&uuml;r <b>bolDragging <\/b>arbeiten und der automatische Aufruf der Mausklick-Simulation somit mehrfach erfolgt, bis sich der Wert <b>False <\/b>der Variablen <b>bolDragging <\/b>irgendwann herumgesprochen hat und die Routinen beendet werden k&ouml;nnen.<\/p>\n<p>Diesen Effekt beheben Sie, indem Sie eine weitere Variable einf&uuml;hren:<\/p>\n<pre>Dim intCount As Integer<\/pre>\n<p>Diese wird beim ersten Mausklick auf den Wert <b>0 <\/b>gesetzt. Die Routine <b>MouseUp <\/b>erh&ouml;ht den Wert dieser Variablen bei jedem Aufruf um <b>1<\/b>, was dazu f&uuml;hrt, dass diese beim zweiten Aufruf den Wert <b>2 <\/b>aufweist.<\/p>\n<p>Genau in diesem Fall setzt eine in einer <b>If&#8230;Then<\/b>-Bedingung in <b>MouseUp<\/b> befindliche Anweisung <b>bolDragging <\/b>auf <b>False<\/b>, was zum sauberen Abbruch der Aufrufkette f&uuml;hrt. Nachfolgend die funktionierende Fassung des Codes:<\/p>\n<pre>Private Sub MouseDown()\r\nintCount = 0\r\nIf bolDragging = False Then\r\nlngDragID = Nz(Me.ReihenfolgeID)\r\nbolDragging = True\r\nElse\r\nlngDropID = Nz(Me.ReihenfolgeID)\r\nIf Not lngDragID = lngDropID Then\r\n InterchangeOrder lngDropID, lngDragID\r\n    Me.Requery\r\nEnd If\r\nbolDragging = False\r\nEnd If\r\nEnd Sub\r\nPrivate Sub MouseUp()\r\nintCount = intCount + 1\r\nIf intCount &gt; 1 Then\r\nbolDragging = False\r\nEnd If\r\nIf bolDragging Then\r\nLeftDown\r\nLeftUp\r\nEnd If\r\nEnd Sub<\/pre>\n<p><b>Reihenfolge in Schuss halten<\/b><\/p>\n<p>Damit das Beispiel reibungslos funktioniert, m&uuml;ssen Sie noch daf&uuml;r sorgen, dass f&uuml;r neue Datens&auml;tze ein entsprechender Wert in das Feld <b>ReihenfolgeID <\/b>eingetragen wird. Dies erledigt die folgende Routine, die durch das Ereignis <b>Vor Aktualisierung <\/b>des Datensatzes ausgel&ouml;st wird.<\/p>\n<p>Die Routine pr&uuml;ft, ob das Feld <b>Reihenfolge <\/b>bereits einen Wert aufweist, und f&uuml;llt es, wenn dies nicht der Fall ist.<\/p>\n<pre>Private Sub Form_BeforeUpdate(Cancel As Integer)\r\nIf Nz(Me.ReihenfolgeID, 0) = 0 Then\r\nMe.ReihenfolgeID = _\r\nDMax(\"OrderID\", \"qryOrder\") + 1\r\nEnd If\r\nEnd Sub<\/pre>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>DragAndDropImDatenblatt.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{B22AAE2C-032A-4182-AC53-EDD657171DC4}\/aiu_666.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im Beitrag Reihenfolge manuell anpassen (s. Shortlink 652) haben wir verschiedene M&ouml;glichkeiten f&uuml;r das Anpassen der Reihenfolge von Daten nach dem Inhalt eines speziellen ReihenfolgeID-Felds erl&auml;utert. Der vorliegende Beitrag setzt noch einen oben drauf: Er zeigt, wie Sie die Reihenfolge von Datens&auml;tzen in der Datenblattansicht eines Formulars per Drag and Drop anpassen k&ouml;nnen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662009,66032009,44000028,44000023],"tags":[],"class_list":["post-55000666","post","type-post","status-publish","format-standard","hentry","category-662009","category-66032009","category-Ergonomie_und_Benutzeroberflaeche","category-Mit_Formularen_arbeiten"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Drag and Drop in der Datenblattansicht - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Drag and Drop in der Datenblattansicht\" \/>\n<meta property=\"og:description\" content=\"Im Beitrag Reihenfolge manuell anpassen (s. Shortlink 652) haben wir verschiedene M&ouml;glichkeiten f&uuml;r das Anpassen der Reihenfolge von Daten nach dem Inhalt eines speziellen ReihenfolgeID-Felds erl&auml;utert. Der vorliegende Beitrag setzt noch einen oben drauf: Er zeigt, wie Sie die Reihenfolge von Datens&auml;tzen in der Datenblattansicht eines Formulars per Drag and Drop anpassen k&ouml;nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T22:23:26+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg06.met.vgwort.de\/na\/6d5167d8133c4b0d8e3f1f196fa3edef\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"11\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Drag_and_Drop_in_der_Datenblattansicht\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Drag_and_Drop_in_der_Datenblattansicht\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Drag and Drop in der Datenblattansicht\",\"datePublished\":\"2020-05-22T22:23:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Drag_and_Drop_in_der_Datenblattansicht\\\/\"},\"wordCount\":1888,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Drag_and_Drop_in_der_Datenblattansicht\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/6d5167d8133c4b0d8e3f1f196fa3edef\",\"articleSection\":[\"2009\",\"3\\\/2009\",\"Ergonomie und Benutzeroberfl\u00e4che\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Drag_and_Drop_in_der_Datenblattansicht\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Drag_and_Drop_in_der_Datenblattansicht\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Drag_and_Drop_in_der_Datenblattansicht\\\/\",\"name\":\"Drag and Drop in der Datenblattansicht - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Drag_and_Drop_in_der_Datenblattansicht\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Drag_and_Drop_in_der_Datenblattansicht\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/6d5167d8133c4b0d8e3f1f196fa3edef\",\"datePublished\":\"2020-05-22T22:23:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Drag_and_Drop_in_der_Datenblattansicht\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Drag_and_Drop_in_der_Datenblattansicht\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Drag_and_Drop_in_der_Datenblattansicht\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/6d5167d8133c4b0d8e3f1f196fa3edef\",\"contentUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/6d5167d8133c4b0d8e3f1f196fa3edef\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Drag_and_Drop_in_der_Datenblattansicht\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Drag and Drop in der Datenblattansicht\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Drag and Drop in der Datenblattansicht - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/","og_locale":"de_DE","og_type":"article","og_title":"Drag and Drop in der Datenblattansicht","og_description":"Im Beitrag Reihenfolge manuell anpassen (s. Shortlink 652) haben wir verschiedene M&ouml;glichkeiten f&uuml;r das Anpassen der Reihenfolge von Daten nach dem Inhalt eines speziellen ReihenfolgeID-Felds erl&auml;utert. Der vorliegende Beitrag setzt noch einen oben drauf: Er zeigt, wie Sie die Reihenfolge von Datens&auml;tzen in der Datenblattansicht eines Formulars per Drag and Drop anpassen k&ouml;nnen.","og_url":"https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T22:23:26+00:00","og_image":[{"url":"http:\/\/vg06.met.vgwort.de\/na\/6d5167d8133c4b0d8e3f1f196fa3edef","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"11\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Drag and Drop in der Datenblattansicht","datePublished":"2020-05-22T22:23:26+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/"},"wordCount":1888,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/6d5167d8133c4b0d8e3f1f196fa3edef","articleSection":["2009","3\/2009","Ergonomie und Benutzeroberfl\u00e4che","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/","url":"https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/","name":"Drag and Drop in der Datenblattansicht - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/6d5167d8133c4b0d8e3f1f196fa3edef","datePublished":"2020-05-22T22:23:26+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/#primaryimage","url":"http:\/\/vg06.met.vgwort.de\/na\/6d5167d8133c4b0d8e3f1f196fa3edef","contentUrl":"http:\/\/vg06.met.vgwort.de\/na\/6d5167d8133c4b0d8e3f1f196fa3edef"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Drag_and_Drop_in_der_Datenblattansicht\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Drag and Drop in der Datenblattansicht"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000666","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000666"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000666\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000666"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000666"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000666"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}