{"id":55000285,"date":"2005-08-01T00:00:00","date_gmt":"2020-05-06T15:18:02","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=285"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Listenfelder_individuell_sortieren","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Listenfelder_individuell_sortieren\/","title":{"rendered":"Listenfelder individuell sortieren"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/0e6522953c7a45c1ad05c13f0adc0bf4\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<h3>Zusammenfassung<\/h3>\n<p>Sie lernen, wie Sie einer Tabelle ein Feld zur individuellen Sortierung hinzuf&uuml;gen und die enthaltenen Datens&auml;tze per Listenfeld und einigen weiteren Schaltfl&auml;chen komfortabel sortieren k&ouml;nnen.<\/p>\n<h3>Techniken<\/h3>\n<p>Formulare, Listenfelder, SQL, VBA<\/p>\n<h3>Voraussetzungen<\/h3>\n<p>Access 97 oder h&ouml;her<\/p>\n<h3>Beispieldateien<\/h3>\n<p><a href=''fileadmin\/files\/08_12_acc0405kh02.zip''>Listenfelder97.mdb (Access 97)<\/a><\/p>\n<p>ListenfelderI2000.mdb (Access 2000 und h&ouml;her)<\/p>\n<h3><\/h3>\n<p><b>Andr&eacute; Minhorst, Duisburg<\/b><\/p>\n<p><b>Die Reihenfolge von Datens&auml;tzen passt man normalerweise wie auch Filterkriterien zur wunschgem&auml;&szlig;en Anzeige von Daten mit Hilfe der OrderBy-Klausel in SQL oder direkt mit den entsprechenden Eigenschaften von Formularen, Berichten oder Steuerelementen an. Manchmal enthalten die Daten aber einfach kein geeignetes Feld, mit dem sich die gew&uuml;nschte Reihenfolge bewerkstelligen lie&szlig;e. In diesem Fall hei&szlig;t es dann: Hand anlegen und nachr&uuml;sten! Alles &uuml;ber zus&auml;tzliche Kriterienfelder und ihre manuelle Anpassung in Formularen, Kombinations- und Listenfeldern erfahren Sie hier.<\/b><\/p>\n<p><b><\/b><\/p>\n<p>Die meisten Tabellen oder Abfragen enthalten ausreichend &#8222;nat&uuml;rliche&#8220; Felder, nach denen sich die Daten sinnvoll sortieren lassen &#8211; Textfelder nach dem Alphabet, Datumsfelder nach dem Datum, Preise und andere Zahlenangaben nach dem Wert. Die in diesen Feldern genannten Daten sind vorrangig wegen ihres Inhalts interessant. Es gibt aber auch Felder, die nur der Sortierung dienen. Diese k&ouml;nnen etwa zum Sortieren folgender Daten n&uuml;tzlich sein:<\/p>\n<li>Tracklisten von CDs<\/li>\n<li>Positionen von Rechnungen<\/li>\n<li>Tagesordnungspunkte von Besprechungen<\/li>\n<p>In manchen F&auml;llen arbeitet man vielleicht sorgf&auml;ltig genug und gibt die Datens&auml;tze direkt in der richtigen Reihenfolge ein &#8211; dann verwendet man einfach den Prim&auml;rschl&uuml;ssel als Kriterium. Sobald aber die Position eines Punktes ver&auml;ndert werden soll oder ein zus&auml;tzlicher Punkt hinzukommt, der zwischen bestehenden Punkten eingef&uuml;gt werden soll, ist der Prim&auml;rschl&uuml;ssel als Kriterium nicht mehr zu gebrauchen.<\/p>\n<p>An dieser Stelle m&uuml;ssen Sie ein zus&auml;tzliches Feld als Sortierkriterium verwenden, das Sie ganz einfach &#8222;ReihenfolgeID&#8220; oder vielleicht auch &#8222;Tracknummer&#8220;, &#8222;Rechnungsposition&#8220; oder &#8222;TOP&#8220; nennen, um bei unseren Beispielen zu bleiben.<\/p>\n<p>Die oben genannten Beispiele werden allesamt durch 1:n-Beziehungen realisiert: CDs und Tracks, Rechnungen und deren Positionen und Besprechungen und Tagesordnungspunkte. Zur Beschreibung der notwendigen Schritte zur individuellen Sortierung einer Tabelle dient eine einfache Telefonliste. Die sortiert man zwar normalerweise nach dem Alphabet, aber um spezielle Eintr&auml;ge an den Anfang oder das Ende der Liste zu bringen, muss man sich solcher Tricks wie dem Voranstellen von Ausdr&uuml;cken (&#8222;aaa&#8220;, &#8222;zzz&#8220;) vor dem Nachnamen bedienen. Mit einem individuellen Sortierkriterium geht das viel einfacher.<\/p>\n<p><b>Quellcode 1: Initialisieren der Reihenfolge <\/b><\/p>\n<pre>Public Sub InitializeOrder(strTable As String, _    strSortField As String)\r\n    Dim cnn As ADODB.Connection\r\n    Dim rst As ADODB.Recordset\r\n    Dim lngSortID As Long\r\n    Set cnn = CurrentProject.Connection\r\n    Set rst = New ADODB.Recordset\r\n    lngSortID = 1\r\n    rst.Open \"SELECT * FROM \" & strTable & \" ORDER BY \" _        & strSortField, cnn, adOpenDynamic, adLockOptimistic\r\n    Do While Not rst.EOF\r\n        rst(strSortField) = lngSortID\r\n        lngSortID = lngSortID + 1\r\n        rst.Update\r\n        rst.MoveNext\r\n    Loop\r\nEnd Sub<\/pre>\n<p>Als Telefonliste dient eine Tabelle namens tblKontakte. Sie ist wie in Bild 1 aufgebaut. Wichtig ist das Feld ReihenfolgeID &#8211; es enth&auml;lt den Zahlenwert, der die Position jedes einzelnen Kontakts festlegt.<\/p>\n<p><IMG height=\"170\" src=\"..\/fileadmin\/_temp_\/{65B477DF-E1E2-4B43-BE9F-EB633B069BA1}\/pic001.png\" width=\"306\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Diese Tabelle enth&auml;lt Namen und Telefonnummern.<\/span><\/b><\/p>\n<p>Um die Liste in einem Listenfeld anzuzeigen, f&uuml;gt man dem gew&uuml;nschten Formular zun&auml;chst ein solches hinzu und versieht es mit dem Namen lstTelefon. Anschlie&szlig;end legt man als Datensatzherkunft eine auf der Tabelle tblKontakte basierende Abfrage an. Diese enth&auml;lt alle Felder der Tabelle und ist aufsteigend nach dem Feld ReihenfolgeID sortiert. Der SQL-Ausdruck f&uuml;r diese Abfrage sieht wie folgt aus:<\/p>\n<pre>SELECT KontaktID, Vorname, Nachname, Telefon, Telefax, ReihenfolgeID\r\nFROM tblKontakte\r\nORDER BY ReihenfolgeID;<\/pre>\n<p>Die Datensatzherkunft enth&auml;lt sieben Felder, davon zeigt das Listenfeld aber derzeit nur das erste an &#8211; und das soll gerade nicht erscheinen. Damit es die gew&uuml;nschten Felder anzeigt, stellen Sie die Eigenschaft Spaltenanzahl auf den Wert 6 und die Eigenschaft Spaltenbreiten auf den Wert 0cm;2,503cm;2,503cm;3cm;3cm;3cm ein. Das erste Feld des zugrunde liegenden SQL-Ausdrucks wird durch die Spaltenbreite 0cm ausgeblendet. Das letzte Feld ReihenfolgeID ist zwar wichtig f&uuml;r die Anzeige, soll aber selbst auch nicht im Listenfeld erscheinen. Daher zeigt das Listenfeld auch nur sechs statt der in der Datensatzherkunft enthaltenen sieben Felder an.<\/p>\n<p><!--30percent--><\/p>\n<p>Die individuelle Sortierung erfolgt &uuml;ber das Feld ReihenfolgeID der Tabelle tblKontakte. Das Feld enth&auml;lt zu diesem Zeitpunkt noch keinen Wert. F&uuml;r die Sortierung muss aber jeder Datensatz einen eindeutigen Wert im Feld ReihenfolgeID besitzen. Um dies zu realisieren, bedient man sich der Prozedur aus Quellcode 1.<\/p>\n<p>Die Prozedur ReihenfolgeInitialisieren durchl&auml;uft per ADO alle Datens&auml;tze der Tabelle tblKontakte und weist jedem Datensatz einen Wert zu, der jeweils um 1 erh&ouml;ht wird. Als voreingestellte Reihenfolge verwendet die Routine den bisherigen Wert des Feldes ReihenfolgeID. Interessant ist das Aufrufen der Prozedur nur, wenn Datens&auml;tze entfernt oder hinzugef&uuml;gt wurden.<\/p>\n<p><IMG height=\"231\" src=\"..\/fileadmin\/_temp_\/{65B477DF-E1E2-4B43-BE9F-EB633B069BA1}\/pic002.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Listenfeld mit Schaltfl&auml;chen zum &auml;ndern der Sortierreihenfolge<\/span><\/b><\/p>\n<p>Damit neue Datens&auml;tze sich hinten anreihen, legen Sie als Standardwert f&uuml;r das Feld ReihenfolgeID einen Wert fest, der gr&ouml;&szlig;er als die zu erwartende Datensatzanzahl ist. Wenn neue Datens&auml;tze vorne in der Liste zu finden sein sollen, verwenden Sie einfach 0 als Standardwert.<\/p>\n<p>Da die Prozedur recht fix arbeitet (auch mit 1.500 Datens&auml;tzen ben&ouml;tigt sie nur Bruchteile einer Sekunde), soll das Formular mit dem Listenfeld sie bei jedem &ouml;ffnen aufrufen. Daf&uuml;r sorgt die folgende Prozedur:<\/p>\n<pre>Private Sub Form_Open(Cancel As Integer)\r\n    ReihenfolgeInitialisieren\r\nEnd Sub<\/pre>\n<p><b>Quellcode 2: Dieses Ereignis wird beim Klick auf die Schaltfl&auml;che cmdUp ausgel&ouml;st. <\/b><\/p>\n<pre>Private Sub cmdUp_Click()\r\n    Dim lngID As Long\r\n    If Not IsNull(Me.lstTelefon) Then\r\n        If Not Me.lstTelefon.ListIndex = 0 Then\r\n            lngID = Me.lstTelefon\r\n            SwapNeighbours lngID, True, \"tblKontakte\", \"KontaktID\", \"ReihenfolgeID\"\r\n            Me.lstTelefon.Requery\r\n        End If\r\n    End If\r\nEnd Sub<\/pre>\n<p>Um die Eintr&auml;ge des Listenfeldes verschieben zu k&ouml;nnen, verwenden Sie vier Schaltfl&auml;chen mit folgenden Funktionen:<\/p>\n<li>eine Position nach oben verschieben<\/li>\n<li>eine Position nach unten verschieben<\/li>\n<li>ganz nach oben verschieben<\/li>\n<li>ganz nach unten verschieben<\/li>\n<p>Dazu legen Sie zun&auml;chst vier Schaltfl&auml;chen an, die Sie wahlweise mit einer entsprechenden Beschriftung oder einem Icon versehen. Das Formular sieht mit den vier Schaltfl&auml;chen cmdUp, cmdDown, cmdTop und cmdBottom wie in Bild 2 aus.<\/p>\n<h2>Eintrag mit dem oberen Nachbarn tauschen<\/h2>\n<p>Die Prozeduren zum Vertauschen der Position zweier Eintr&auml;ge &auml;hneln sich sehr, sodass hier nur eine der beiden vorgestellt wird. Die Prozedur cmdUp_Click (s. Quellcode 2) wird durch die Schaltfl&auml;che cmdUp ausgel&ouml;st und erf&uuml;llt im Wesentlichen zwei Aufgaben: Sie pr&uuml;ft, ob &uuml;berhaupt ein Listeneintrag ausgew&auml;hlt ist und ob dieser sich nicht bereits an der ersten Position der Liste befindet. Dazu pr&uuml;ft sie die aktuelle Position des markierten Datensatzes mit der ListIndex-Eigenschaft. Anschlie&szlig;end ruft die Routine die Prozedur SwapNeighbours auf (s. Quellcode 3). Diese Prozedur erwartet f&uuml;nf Parameter:<\/p>\n<li>die ID des zu tauschenden Datensatzes<\/li>\n<li>einen Bool&#8220;schen Wert, der angibt, ob mit dem oberen oder dem unteren Nachbarn getauscht werden soll<\/li>\n<p><b>Quellcode 3: Vertauschen zweier Listeneintr&auml;ge <\/b><\/p>\n<pre>Private Sub SwapOrder(lngID As Long, bolUp As Boolean, strTable As String, _    strPrimaryKey As String, strSortField As String)\r\n    Dim cnn As ADODB.Connection\r\n    Dim lngUp As Long\r\n    Dim lngDown As Long\r\n    Set cnn = CurrentProject.Connection\r\n    If bolUp = True Then\r\n        lngUp = DLookup(strSortField, strTable, strPrimaryKey & \" = \" & lngID)\r\n        lngDown = DMax(strSortField, strTable, strSortField & \" &lt; \" & lngUp)\r\n        cnn.Execute \"UPDATE tblKontakte SET ReihenfolgeID = \" & lngUp _            & \" WHERE ReihenfolgeID = \" & lngDown\r\n        cnn.Execute \"UPDATE tblKontakte SET ReihenfolgeID = \" & lngDown & \" WHERE KontaktID = \" _            & lngID\r\n    Else\r\n        lngDown = DLookup(strSortField, strTable, strPrimaryKey & \" = \" & lngID)\r\n        lngUp = DMin(strSortField, strTable, strSortField & \" &gt; \" & lngDown)\r\n        cnn.Execute \"UPDATE tblKontakte SET ReihenfolgeID = \" & lngDown _            & \" WHERE ReihenfolgeID = \" & lngUp\r\n        cnn.Execute \"UPDATE tblKontakte SET ReihenfolgeID = \" & lngUp & \" WHERE KontaktID = \" _            & lngID\r\n    End If\r\n    Set cnn = Nothing\r\nEnd Sub<\/pre>\n<li>die Herkunftstabelle der zu tauschenden Daten<\/li>\n<li>den Namen des Prim&auml;rschl&uuml;sselfeldes<\/li>\n<li>und den Namen des Feldes, das die Informationen &uuml;ber die Reihenfolge enth&auml;lt.<\/li>\n<p>Mit diesen Informationen ermittelt die Prozedur den Reihenfolge-Wert der zu tauschenden Datens&auml;tze und nimmt den Tausch dann in zwei Schritten vor: Der Reihenfolge-Wert des nicht markierten am Tausch beteiligten Datensatzes wird auf den Reihenfolge-Wert des markierten Datensatzes und dann der Reihenfolge-Wert von letzterem auf denjenigen des nicht markierten Datensatzes gesetzt. Diese Funktion ist in der Prozedur f&uuml;r beide F&auml;lle enthalten &#8211; also f&uuml;r den Tausch mit dem oberen als auch f&uuml;r den Tausch mit dem unteren Nachbarn.<\/p>\n<h3>Integrierbar in eigene Anwendungen<\/h3>\n<p>Die Prozedur SwapNeighbours ist so ausgelegt, dass Sie diese leicht in eigene Anwendungen einbauen k&ouml;nnen. Sie m&uuml;ssen lediglich die f&uuml;nf Parameter entsprechend den Gegebenheiten Ihrer Anwendung an die Prozedur &uuml;bergeben und anschlie&szlig;end das Listenfeld aktualisieren; den Rest erledigt die Prozedur.<\/p>\n<h2>Eintrag mit dem unteren Nachbarn tauschen<\/h2>\n<p>Die Routine, die durch die Schaltfl&auml;che cmdDown ausgel&ouml;st wird, &uuml;bernimmt prinzipiell die gleiche Funktion wie die der Schaltfl&auml;che cmdUp. Den Quellcode finden Sie im Klassenmodul Form_frmTelefonliste in der Beispieldatenbank.<\/p>\n<h2>Eintrag auf die erste Position verschieben<\/h2>\n<p>Das Verschieben eines Eintrags auf die erste Position betrifft einige Datens&auml;tze mehr, als es das Tauschen zweier benachbarter Datens&auml;tze erfordert: Hier wird der Reihenfolge-Wert des betroffenen Datensatzes auf den Wert 1 eingestellt, damit dieser an erster Stelle positioniert wird; alle Datens&auml;tze, die zuvor vor dem betroffenen Datensatz positioniert waren, r&uuml;cken eine Position nach hinten.<\/p>\n<p>Die eigentliche Funktionalit&auml;t befindet sich wiederum in einer eigenen Prozedur, die sowohl zum Verschieben eines Elements auf die erste als auch auf die letzte Position dient. Die Prozedur cmdTop_Click (s. Quellcode 4) pr&uuml;ft, ob &uuml;berhaupt ein Listeneintrag markiert ist, und ruft gegebenenfalls die Routine SwapWithTopOrBottom auf. <\/p>\n<p>Diese Routine erwartet die gleichen Parameter wie die Prozedur zum Vertauschen zweier Listenelemente. <\/p>\n<p>Sie ermittelt den Wert des Sortierfeldes des zu verschiebenden Elements und speichert diesen zwischen. Dann erh&ouml;ht sie mit einer SQL-Anweisung den Reihenfolge-Wert aller &uuml;ber dem betroffenen Element liegenden Datens&auml;tze. Im letzten Schritt schlie&szlig;lich stellt sie den Reihenfolge-Wert des zu verschiebenden Elements auf 1 ein.<\/p>\n<p>Auch diese Prozedur k&ouml;nnen Sie leicht in eigene Anwendungen &uuml;bernehmen.<\/p>\n<h2>Element auf die letzte Position verschieben<\/h2>\n<p>Die Prozedur cmdBottom_Click, die durch die Schaltfl&auml;che cmdBottom ausgel&ouml;st wird, ruft ebenfalls die Routine SwapWithTopOrBottom auf. Sie &uuml;bergibt allerdings den Wert False f&uuml;r den Parameter bolTop, damit die Prozedur SwapWithTopOrBottom das Element nach unten verschiebt.<\/p>\n<p><b>Quellcode 4: Aufruf der Prozedur zum Verschieben eines Listenelements per Mausklick <\/b><\/p>\n<pre>Private Sub cmdTop_Click()\r\n    Dim lngID As Long\r\n    If Not IsNull(Me.lstTelefon) Then\r\n        lngID = Me.lstTelefon\r\n        SwapWithTopOrBottom lngID, True, \"tblKontakte\", \"KontaktID\", \"ReihenfolgeID\"\r\n        Me.lstTelefon.Requery\r\n    End If\r\nEnd Sub<\/pre>\n<p><b>Quellcode 5: Verschieben eines Listeneintrags an die erste Stelle <\/b><\/p>\n<pre>Private Sub SwapWithTopOrBottom(lngID As Long, bolTop As Boolean, strTable As String, _    strPrimaryKey As String, strSortField As String)\r\n    Dim cnn As ADODB.Connection\r\n    Dim lngMove As Long\r\n    Set cnn = CurrentProject.Connection\r\n    lngMove = DLookup(strSortField, strTable, strPrimaryKey & \" = \" & lngID)\r\n    If bolTop = True Then\r\n        cnn.Execute \"UPDATE tblKontakte SET ReihenfolgeID = ReihenfolgeID + 1 \" _            & \"WHERE ReihenfolgeID &lt; \" & lngMove\r\n        cnn.Execute \"UPDATE tblKontakte SET ReihenfolgeID = 1 WHERE KontaktID = \" & lngID\r\n    Else\r\n        cnn.Execute \"UPDATE tblKontakte SET ReihenfolgeID = ReihenfolgeID - 1 \" _            & \"WHERE ReihenfolgeID &gt; \" & lngMove\r\n        cnn.Execute \"UPDATE tblKontakte SET ReihenfolgeID = \" & DMax(\"ReihenfolgeID\", _            \"tblKontakte\") + 1 & \" WHERE KontaktID = \" & lngID\r\n    End If\r\n    Set cnn = Nothing\r\nEnd Sub<\/pre>\n<p>Wann immer Sie ein spezielles Reihenfolge-Feld ben&ouml;tigen, um die gew&uuml;nschte Ordnung in Ihre Daten zu bringen, k&ouml;nnen Sie die hier vorgestellten Funktionen SwapNeighbours, SwapWithTopOrBottom oder InitializeOrder einbauen und problemlos aufrufen.<\/p>\n<p>Sie m&uuml;ssen dazu nur das Standardmodul mdlSortLists in das gew&uuml;nschte Projekt importieren und das Listenfeld mit den entsprechenden Schaltfl&auml;chen und Prozeduren versehen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Reihenfolge von Datens&auml;tzen passt man normalerweise wie auch Filterkriterien zur wunschge-m&auml;&szlig;en Anzeige von Daten mit Hilfe der OrderBy-Klausel in SQL oder direkt mit den entsprechenden Eigenschaften von Formularen, Berichten oder Steuerelementen an. Manchmal enthalten die Daten aber einfach kein geeignetes Feld, mit dem sich die gew&uuml;nschte Reihenfolge bewerkstelligen lie&szlig;e. In diesem Fall hei&szlig;t es dann: Hand anlegen und nachr&uuml;sten! Alles &uuml;ber zus&auml;tzliche Kriterienfelder und ihre manuelle Anpassung in Formularen, Kombinations- und Listenfeldern erfahren Sie hier.<\/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":[662005,66042005,44000023],"tags":[],"class_list":["post-55000285","post","type-post","status-publish","format-standard","hentry","category-662005","category-66042005","category-Mit_Formularen_arbeiten"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Listenfelder individuell sortieren - 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\/Listenfelder_individuell_sortieren\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Listenfelder individuell sortieren\" \/>\n<meta property=\"og:description\" content=\"Die Reihenfolge von Datens&auml;tzen passt man normalerweise wie auch Filterkriterien zur wunschge-m&auml;&szlig;en Anzeige von Daten mit Hilfe der OrderBy-Klausel in SQL oder direkt mit den entsprechenden Eigenschaften von Formularen, Berichten oder Steuerelementen an. Manchmal enthalten die Daten aber einfach kein geeignetes Feld, mit dem sich die gew&uuml;nschte Reihenfolge bewerkstelligen lie&szlig;e. In diesem Fall hei&szlig;t es dann: Hand anlegen und nachr&uuml;sten! Alles &uuml;ber zus&auml;tzliche Kriterienfelder und ihre manuelle Anpassung in Formularen, Kombinations- und Listenfeldern erfahren Sie hier.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Listenfelder_individuell_sortieren\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T15:18:02+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/0e6522953c7a45c1ad05c13f0adc0bf4\" \/>\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=\"10\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Listenfelder_individuell_sortieren\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Listenfelder_individuell_sortieren\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Listenfelder individuell sortieren\",\"datePublished\":\"2020-05-06T15:18:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Listenfelder_individuell_sortieren\\\/\"},\"wordCount\":1626,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Listenfelder_individuell_sortieren\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/0e6522953c7a45c1ad05c13f0adc0bf4\",\"articleSection\":[\"2005\",\"4\\\/2005\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Listenfelder_individuell_sortieren\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Listenfelder_individuell_sortieren\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Listenfelder_individuell_sortieren\\\/\",\"name\":\"Listenfelder individuell sortieren - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Listenfelder_individuell_sortieren\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Listenfelder_individuell_sortieren\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/0e6522953c7a45c1ad05c13f0adc0bf4\",\"datePublished\":\"2020-05-06T15:18:02+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Listenfelder_individuell_sortieren\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Listenfelder_individuell_sortieren\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Listenfelder_individuell_sortieren\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/0e6522953c7a45c1ad05c13f0adc0bf4\",\"contentUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/0e6522953c7a45c1ad05c13f0adc0bf4\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Listenfelder_individuell_sortieren\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Listenfelder individuell sortieren\"}]},{\"@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":"Listenfelder individuell sortieren - 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\/Listenfelder_individuell_sortieren\/","og_locale":"de_DE","og_type":"article","og_title":"Listenfelder individuell sortieren","og_description":"Die Reihenfolge von Datens&auml;tzen passt man normalerweise wie auch Filterkriterien zur wunschge-m&auml;&szlig;en Anzeige von Daten mit Hilfe der OrderBy-Klausel in SQL oder direkt mit den entsprechenden Eigenschaften von Formularen, Berichten oder Steuerelementen an. Manchmal enthalten die Daten aber einfach kein geeignetes Feld, mit dem sich die gew&uuml;nschte Reihenfolge bewerkstelligen lie&szlig;e. In diesem Fall hei&szlig;t es dann: Hand anlegen und nachr&uuml;sten! Alles &uuml;ber zus&auml;tzliche Kriterienfelder und ihre manuelle Anpassung in Formularen, Kombinations- und Listenfeldern erfahren Sie hier.","og_url":"https:\/\/access-im-unternehmen.de\/Listenfelder_individuell_sortieren\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-06T15:18:02+00:00","og_image":[{"url":"http:\/\/vg07.met.vgwort.de\/na\/0e6522953c7a45c1ad05c13f0adc0bf4","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"10\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Listenfelder_individuell_sortieren\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Listenfelder_individuell_sortieren\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Listenfelder individuell sortieren","datePublished":"2020-05-06T15:18:02+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Listenfelder_individuell_sortieren\/"},"wordCount":1626,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Listenfelder_individuell_sortieren\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/0e6522953c7a45c1ad05c13f0adc0bf4","articleSection":["2005","4\/2005","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Listenfelder_individuell_sortieren\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Listenfelder_individuell_sortieren\/","url":"https:\/\/access-im-unternehmen.de\/Listenfelder_individuell_sortieren\/","name":"Listenfelder individuell sortieren - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Listenfelder_individuell_sortieren\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Listenfelder_individuell_sortieren\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/0e6522953c7a45c1ad05c13f0adc0bf4","datePublished":"2020-05-06T15:18:02+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Listenfelder_individuell_sortieren\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Listenfelder_individuell_sortieren\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Listenfelder_individuell_sortieren\/#primaryimage","url":"http:\/\/vg07.met.vgwort.de\/na\/0e6522953c7a45c1ad05c13f0adc0bf4","contentUrl":"http:\/\/vg07.met.vgwort.de\/na\/0e6522953c7a45c1ad05c13f0adc0bf4"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Listenfelder_individuell_sortieren\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Listenfelder individuell sortieren"}]},{"@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\/55000285","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=55000285"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000285\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000285"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000285"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}