{"id":55000708,"date":"2010-04-01T00:00:00","date_gmt":"2020-05-22T22:11:26","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=708"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Individuelle_Datenauswahl","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Individuelle_Datenauswahl\/","title":{"rendered":"Individuelle Datenauswahl"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/b52246a8385b4f999eed1fcd709b7584\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>In Foren und Newsgroups wird immer wieder nach M&ouml;glichkeiten gefragt, einen oder mehrere Datens&auml;tze individuell auszuw&auml;hlen, um anschlie&szlig;end irgendetwas mit diesen Datens&auml;tzen zu erledigen &#8211; beispielsweise um einen Bericht auf Basis der ausgew&auml;hlten Daten zu f&uuml;llen oder die Empf&auml;nger eines Serienbriefs zu bestimmen. Dieser Beitrag stellt verschiedene M&ouml;glichkeiten vor, um dies zu realisieren.<\/b><\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Datens&auml;tze ausw&auml;hlen<\/p>\n<p>Manchmal streckt selbst der ausgekl&uuml;geltste Filter-Mechanismus die Fl&uuml;gel &#8211; n&auml;mlich dann, wenn die Auswahl von Daten auf Informationen basiert, welche die Datenherkunft nicht hergibt.<\/p>\n<p>Der simpelste Fall: Sie m&ouml;chten allen Kunden, die letztes Jahr besonders nett zu Ihnen waren, einen lieben Brief zu Weihnachten schicken. Und solange Ihre Kundentabelle kein Feld namens &#8222;Nettigkeit&#8220; enth&auml;lt, m&uuml;ssen Sie die Auswahl wohl von Hand treffen.<\/p>\n<p>Zum Ausw&auml;hlen bestimmter Datens&auml;tze nach individuellen Kriterien gibt es verschiedene Ans&auml;tze, deren Einsatz davon abh&auml;ngt, wie die Ergebnismenge weiterverarbeitet werden soll und wie Sie die Daten anzeigen m&ouml;chten.<\/p>\n<p>Letzteres ist einfach, zumindest wenn Sie sich auf die Bordmittel von Access beschr&auml;nken: Sie k&ouml;nnen die auszuw&auml;hlenden Daten dann entweder in einem Unterformular in der Datenblattansicht anzeigen oder in einem Listenfeld. Das Listenfeld bietet dank Mehrfachauswahl eigentlich die schickere Variante, da die ausgew&auml;hlten Datens&auml;tze automatisch farbig hinterlegt werden.<\/p>\n<p>Das Unterformular in der Datenblattansicht k&ouml;nnen Sie eigentlich nur f&uuml;r die Mehrfachauswahl einsetzen, wenn Sie der Datenherkunft ein Ja\/Nein-Feld zum Festlegen des Zustands hinzuf&uuml;gen. Auch dort gibt es eine M&ouml;glichkeit, ausgew&auml;hlte Datens&auml;tze farbig hervorzuheben.<\/p>\n<p><b>Ziel der Mehrfachauswahl<\/b><\/p>\n<p>Unter Ziel verstehen wir die Art des Dokuments oder der Aktion, f&uuml;r welche die Datens&auml;tze ausgew&auml;hlt werden. Davon h&auml;ngt ma&szlig;geblich ab, welche der nachfolgend vorgestellten Techniken zum Ausw&auml;hlen mehrerer Datens&auml;tze Sie einsetzen k&ouml;nnen.<\/p>\n<p>F&uuml;r einen Word-Serienbrief, den Sie auf klassische Weise von Word aus mit den Daten einer Access-Tabelle oder -Abfrage f&uuml;llen m&ouml;chten, brauchen Sie beispielsweise eine entsprechende Tabelle oder Abfrage als Datenquelle. Dies bedeutet, dass Sie die Informationen &uuml;ber die Auswahl in einer Tabelle speichern m&uuml;ssen.<\/p>\n<p>Wenn Sie den Serienbrief anders erstellen, etwa indem Sie von der Access-Anwendung aus jeweils eine Dokumentvorlage &ouml;ffnen, diese per VBA automatisiert mit den ausgew&auml;hlten Daten f&uuml;llen und dann speichern und\/oder drucken, brauchen Sie die Information &uuml;ber die ausgew&auml;hlten Datens&auml;tze nicht in einer Tabelle zu speichern: Sie k&ouml;nnen diese dann direkt aus dem f&uuml;r die Auswahl verwendeten Element der Benutzeroberfl&auml;che, also dem Unterformular in der Datenblattansicht oder dem Listenfeld, entnehmen.<\/p>\n<p><b>Beispieldaten und Beispiele<\/b><\/p>\n<p>Der Einfachheit halber verwenden wir zu Testzwecken eine Tabelle namens <b>tblPersonen <\/b>mit den drei Feldern <b>ID<\/b>, <b>Vorname <\/b>und <b>Nachname<\/b>, die wir mit einigen Datens&auml;tzen gef&uuml;llt haben.<\/p>\n<p>In den nachstehenden Abschnitten schauen wir uns die folgenden Beispiele f&uuml;r die individuelle Auswahl von Daten an:<\/p>\n<ul>\n<li class=\"aufz-hlung\">Mehrfachauswahl im Listenfeld<\/li>\n<li class=\"aufz-hlung\">Mehrfachauswahl im Datenblatt mit Ja\/Nein-Feld in der Datenherkunft<\/li>\n<li class=\"aufz-hlung\">Mehrfachauswahl im Datenblatt mit 1:1-Beziehung<\/li>\n<li class=\"aufz-hlung\">Mehrfachauswahl im Datenblatt mit Markierung<\/li>\n<li class=\"aufz-hlung\">Mehrfachauswahl im Datenblatt mit tempor&auml;rem Recordset<\/li>\n<\/ul>\n<p>Ziel aller Beispiele ist es, &uuml;ber eine Schaltfl&auml;che namens <b>cmdStart<\/b> eine Liste der Prim&auml;rschl&uuml;sselfelder der ausgew&auml;hlten Datens&auml;tze im Direktfenster auszugeben. Wenn dies m&ouml;glich ist, k&ouml;nnen Sie auch alle weiteren geplanten Aktionen mit den ausgew&auml;hlten Daten durchf&uuml;hren.<\/p>\n<p><b>Mehrfachauswahl im Listenfeld<\/b><\/p>\n<p>Die Mehrfachauswahl im Listenfeld bietet sich eher f&uuml;r solche F&auml;lle an, in denen Sie die Daten ad hoc verarbeiten und nicht speichern wollen. Dazu f&uuml;llen Sie das Listenfeld namens <b>lstMehrfachauswahl <\/b>mit der gew&uuml;nschten Datenherkunft <b>tblPersonen<\/b>.<\/p>\n<p>Stellen Sie die beiden Eigenschaften <b>Spaltenanzahl <\/b>und <b>Spaltenbreiten <\/b>auf <b>3 <\/b>und <b>1cm;4cm;4cm <\/b>ein, damit alle drei Spalten angezeigt werden. Au&szlig;erdem legen Sie f&uuml;r die Eigenschaft <b>Mehrfachauswahl <\/b>den Wert <b>Erweitert <\/b>fest.<\/p>\n<p>Dies bedeutet, dass der Benutzer bei gedr&uuml;ckter <b>Strg<\/b>-Taste einzelne Eintr&auml;ge aus- und abw&auml;hlen und durch zweimaliges Bet&auml;tigen der Maustaste bei gedr&uuml;ckter Umschalttaste alle Elemente vom ersten bis zum zweiten angeklickten Element ausw&auml;hlen kann. Ein einfacher Klick ohne Umschalt- oder <b>Strg<\/b>-Taste hebt die Auswahl wieder auf.<\/p>\n<p>Die <b>Start<\/b>-Schaltfl&auml;che des Formulars aus Bild 1 l&ouml;st die folgende Ereignisprozedur aus Listing 1 aus.<\/p>\n<p class=\"kastentabelleheader\">Listing 1: Ausgew&auml;hlte Eintr&auml;ge des Listenfelds auslesen<\/p>\n<pre>Private Sub cmdStart_Click()\r\n    Dim varIndex As Variant\r\n    Dim lngPersonID As Long\r\n    For Each varIndex In Me!lstMehrfachauswahl.ItemsSelected\r\n        lngPersonID = _\r\n        Me!lstMehrfachauswahl.ItemData(varIndex)\r\n        ''Hier etwas mit lngPersonID erledigen\r\n        Debug.Print lngPersonID\r\n    Next varIndex\r\nEnd Sub<\/pre>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_02\/IndividuelleDatenauswahl-web-images\/pic001.png\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Individuelle Mehrfachauswahl im Listenfeld<\/span><\/b><\/p>\n<p>Die <b>For Each<\/b>-Schleife durchl&auml;uft alle markierten Datens&auml;tze, auf die sie &uuml;ber die Auflistungs-Eigenschaft <b>ItemsSelected <\/b>des Listenfelds zugreift. Die Laufvariable <b>varIndex <\/b>liefert jeweils den Index der aktuell durchlaufenen Zeile zur&uuml;ck.<\/p>\n<p>Um dar&uuml;ber auf den Wert der gebundenen Spalte, in diesem Falle mit dem Feld <b>ID <\/b>der Datenherkunft ausgestattet, zuzugreifen, verwenden Sie die <b>ItemData<\/b>-Eigenschaft unter Angabe von <b>varIndex<\/b>.<\/p>\n<p><b>Einfache Mehrfachauswahl<\/b><\/p>\n<p>F&uuml;r weniger gewandte Benutzer mag die Einstellung <b>Einfach <\/b>f&uuml;r die Eigenschaft <b>Mehrfachauswahl <\/b>eine sinnvolle Alternative sein. Mit dieser Einstellung braucht man einen Eintrag einfach nur anzuklicken, um ihn auszuw&auml;hlen, und wenn man ihn nicht mehr will, klickt man einfach erneut darauf.<\/p>\n<p>Die Funktion zur Ermittlung der markierten Eintr&auml;ge funktioniert genau so wie bei der Einstellung <b>Erweitert<\/b>.<\/p>\n<p><b>Mehrfachauswahl im Datenblatt mit Ja\/Nein-Feld in der Datenherkunft<\/b><\/p>\n<p>Die einfachste M&ouml;glichkeit, die Datens&auml;tze unserer Tabelle <b>tblPersonen <\/b>in der Datenblattansicht eines Unterformulars zu markieren, ist ein <b>Ja\/Nein<\/b>-Feld in der betroffenen Tabelle (siehe Bild 2).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_02\/IndividuelleDatenauswahl-web-images\/pic002.png\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Kopie der Beispieltabelle mit einem Ja\/Nein-Feld zum Speichern des Markiert-Status<\/span><\/b><\/p>\n<p>Erstellen Sie ein Formular namens <b>sfmPersonenJaNein <\/b>und weisen Sie die Tabelle <b>tblMehrfachauswahlJaNein <\/b>der Eigenschaft <b>Datenherkunft <\/b>zu.<\/p>\n<p>Ziehen Sie alle Felder aus der Feldliste in den Detailbereich der Entwurfsansicht und stellen Sie die Eigenschaft <b>Standardansicht <\/b>auf <b>Datenblatt <\/b>ein. Schlie&szlig;en Sie das Formular.<\/p>\n<p>Erstellen Sie ein weiteres Formular, ziehen Sie das Unterformular aus dem Datenbankfenster beziehungsweise dem Navigationsbereich in den Detailbereich des Formularentwurfs und f&uuml;gen Sie eine Schaltfl&auml;che namens <b>cmdStart <\/b>hinzu.<\/p>\n<p>Speichern Sie das Formular, das in der Formularansicht nun wie in Bild 3 aussehen sollte, unter dem Namen <b>frmMehrfachauswahlJaNein<\/b>.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_02\/IndividuelleDatenauswahl-web-images\/pic003.png\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Mehrfachauswahl per Ja\/Nein-Feld im Datenblatt<\/span><\/b><\/p>\n<p>Die Ereignisprozedur, die durch die Schaltfl&auml;che ausgel&ouml;st wird, hat leichtes Spiel:<\/p>\n<p>Sie braucht einfach nur ein Recordset auf Basis der Tabelle <b>tblPersonen <\/b>zu erzeugen, wobei eine <b>WHERE<\/b>-Bedingung die Datens&auml;tze auf diejenigen beschr&auml;nkt, deren Feld <b>Markiert <\/b>den Wert <b>True <\/b>aufweist.<\/p>\n<p>Diese durchl&auml;uft man einfach &uuml;ber die g&auml;ngige <b>Do While<\/b>-Schleife und stellt mit dem Datensatz an, was auch immer man m&ouml;chte (s. Listing 2).<\/p>\n<p class=\"kastentabelleheader\">Listing 2: Durchlaufen der Datens&auml;tze der Datenherkunft eines Unterformulars<\/p>\n<pre>Private Sub cmdStart_Click()\r\n    Dim db As DAO.Database\r\n    Dim rst As DAO.Recordset\r\n    Dim lngPersonID As Long\r\n    Set db = CurrentDb\r\n    Set rst = db.OpenRecordset(&quot;SELECT * FROM\r\n    tblPersonenJaNein WHERE Markiert = True&quot;, _\r\n    dbOpenDynaset)\r\n    Do While Not rst.EOF\r\n        lngPersonID = rst!ID\r\n        ''Etwas mit lngPerson erledigen\r\n        Debug.Print lngPersonID\r\n        rst.MoveNext\r\n    Loop\r\n    Set db = Nothing\r\nEnd Sub<\/pre>\n<p><!--30percent--><\/p>\n<p>Der Vorteil dieser Variante ist, dass Sie damit auch leicht die Serienbrieferstellung aus Word heraus mit einer Datenherkunft versehen k&ouml;nnen. Sie brauchen einfach nur eine Abfrage zu erstellen, die alle markierten Datens&auml;tze zur&uuml;ckliefert und wie in Bild 4 aussieht.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_02\/IndividuelleDatenauswahl-web-images\/pic004.png\" alt=\"pic004.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Diese Abfrage liefert alle markierten Datens&auml;tze der Tabelle tblPersonenJaNein.<\/span><\/b><\/p>\n<p>Wenn Sie die Markierung der Datens&auml;tze aufheben m&ouml;chten, k&ouml;nnen Sie dies leicht durch eine kleine Ereignisprozedur erledigen, die beispielsweise durch eine Schaltfl&auml;che namens <b>cmdAuswahlLoeschen <\/b>im gleichen Hauptformular ausgel&ouml;st wird (s. Listing 3).<\/p>\n<p class=\"kastentabelleheader\">Listing 3: Aufheben der Markierung von Datens&auml;tzen<\/p>\n<pre>Private Sub cmdAuswahlLoeschen_Click()\r\n    Dim db As DAO.Database\r\n    Set db = CurrentDb\r\n    db.Execute &quot;UPDATE tblPersonenJaNein SET\r\n    Markiert = FALSE&quot;, dbFailOnError\r\n    Me!sfmMehrfachauswahlJaNein.Form.Requery\r\n    Set db = Nothing\r\nEnd Sub<\/pre>\n<p><b>Mehrfachauswahl im Datenblatt mit 1:1-Beziehung<\/b><\/p>\n<p>M&ouml;glicherweise k&ouml;nnen oder d&uuml;rfen Sie die Tabelle mit den auszuw&auml;hlenden Daten nicht &auml;ndern, um beispielsweise ein <b>Ja\/Nein<\/b>-Feld zum Speichern des <b>Markiert<\/b>-Status hinzuzuf&uuml;gen. Auch dies ist kein Problem: Wir legen einfach eine zus&auml;tzliche Tabelle an, die per 1:1-Beziehung mit der urspr&uuml;nglichen Tabelle verkn&uuml;pft ist.<\/p>\n<p>Diese Tabelle hei&szlig;t <b>tblPersonenMarkiert <\/b>und sieht im Entwurf wie in Bild 5 aus. Das Feld <b>PositionID <\/b>ist ein Fremdschl&uuml;sselfeld zum Eintragen der <b>ID <\/b>des Datensatzes der Tabelle <b>tblPersonen<\/b>, auf den sich der Inhalt des <b>Ja\/Nein<\/b>-Feldes <b>Markiert <\/b>bezieht.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_02\/IndividuelleDatenauswahl-web-images\/pic005.png\" alt=\"pic005.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5: Diese Tabelle speichert, ob ein Datensatz der Tabelle tblPersonen markiert ist oder nicht.<\/span><\/b><\/p>\n<p>Damit das Feld <b>PersonID <\/b>der Tabelle <b>tblPersonenMarkiert <\/b>nur Werte enth&auml;lt, die auch im Feld <b>ID <\/b>der Tabelle <b>tblPersonen <\/b>vorliegen, erstellen Sie eine Beziehung wie in Bild 6. Legen Sie die Beziehung an, indem Sie das Feld <b>ID <\/b>der Tabelle <b>tblPersonen <\/b>auf das Feld <b>PersonID <\/b>der Tabelle <b>tblPersonenMarkiert <\/b>ziehen &#8211; andersherum funktioniert es nicht, weil Access dann davon ausginge, dass das Feld <b>ID <\/b>der Tabelle <b>tblPersonen <\/b>das Fremdschl&uuml;sselfeld der Beziehung ist und nicht umgekehrt.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_02\/IndividuelleDatenauswahl-web-images\/pic006.png\" alt=\"pic006.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6: Diese Beziehung stellt sicher, dass der Markiert-Status nur f&uuml;r vorhandene Datens&auml;tze der Tabelle tblPersonen angelegt werden kann.<\/span><\/b><\/p>\n<p>Legen Sie in den Beziehungseigenschaften referenzielle Integrit&auml;t fest und aktivieren Sie die L&ouml;schweitergabe, damit beim L&ouml;schen von Daten aus <b>tblPersonen <\/b>auch direkt die damit verkn&uuml;pften Datens&auml;tze der Tabelle <b>tblPersonenMarkiert <\/b>gel&ouml;scht werden.<\/p>\n<p>Bauen Sie das Formular <b>frmMehrfachauswahl1zu1<\/b> und das Unterformular <b>sfmMehrfachauswahl1zu1 <\/b>genau so auf wie die beiden Formulare aus dem vorherigen Beispiel.<\/p>\n<p>Allein die Datenherkunft des Unterformulars sieht anders aus. Hier kommt eine Abfrage zum Einsatz, welche die beiden Tabellen <b>tblPersonen <\/b>und <b>tblPersonenMarkiert <\/b>enth&auml;lt. Sie m&uuml;ssen allerdings die Verkn&uuml;pfungseigenschaften ein wenig anpassen: Stellen Sie diese so ein, dass alle Datens&auml;tze der Tabelle <b>tblPersonen <\/b>angezeigt werden und nur diejenigen der Tabelle <b>tblPersonenMarkiert<\/b>, bei denen die Inhalte der verkn&uuml;pften Felder gleich sind (siehe Bild 7).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_02\/IndividuelleDatenauswahl-web-images\/pic007.png\" alt=\"pic007.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7: Die Tabellen tblPersonen und tblPersonenMarkiert m&uuml;ssen auf spezielle Art verkn&uuml;pft werden.<\/span><\/b><\/p>\n<p>Das bedeutet, dass die Abfrage auf jeden Fall alle Datens&auml;tze der Tabelle <b>tblPersonen <\/b>liefert. Selbst wenn die Tabelle <b>tblPersonenMarkiert <\/b>gar keine Datens&auml;tze enth&auml;lt, werden die darin enthaltenen Felder im Abfrageergebnis angezeigt &#8211; wenn auch als leere Felder.<\/p>\n<p>Wenn Sie dort Werte eintragen, also etwa das <b>Ja\/Nein<\/b>-Feld <b>Markiert <\/b>mit einem Haken f&uuml;llen, legt Access automatisch den verkn&uuml;pften Datensatz an. Der einzige Sch&ouml;nheitsfehler ist, dass das Kombinationsfeld vor dem Anhaken gar keinen Wert anzeigt, also weder einen Haken noch ein leeres K&auml;stchen (siehe Bild 8).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_02\/IndividuelleDatenauswahl-web-images\/pic008.png\" alt=\"pic008.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8: Das Ja\/Nein-Feld einer 1:1-Beziehung kann drei Zust&auml;nde aufweisen.<\/span><\/b><\/p>\n<p>Die Auswertung der markierten Daten erfolgt fast genau so wie im vorherigen Beispiel. Der einzige Unterschied ist, dass als Datenherkunft die gleiche Abfrage dient, die Sie auch als Datenherkunft des Unterformulars angegeben haben:<\/p>\n<pre>Private Sub cmdStart_Click()\r\n    ...\r\n    Set rst = db.OpenRecordset(&quot;SELECT * FROM\r\n    qryMehrfachauswahl1zu1 WHERE\r\n    Markiert = True&quot;, dbOpenDynaset)\r\n    ...\r\nEnd Sub<\/pre>\n<p>Um den kleinen Sch&ouml;nheitsfehler zu beheben, k&ouml;nnen Sie beim &Ouml;ffnen des Formulars die Ereignisprozedur aus Listing 4 ausl&ouml;sen.<\/p>\n<p class=\"kastentabelleheader\">Listing 4: Beim &Ouml;ffnen des Formulars werden die Datens&auml;tze der Tabelle zum Markieren der Datens&auml;tze gel&ouml;scht und neu angelegt.<\/p>\n<pre>Private Sub Form_Open(Cancel As Integer)\r\n    Dim db As DAO.Database\r\n    Set db = CurrentDb\r\n    db.Execute &quot;DELETE FROM tblPersonenMarkiert&quot;, _\r\n    dbFailOnError\r\n    db.Execute &quot;INSERT INTO tblPersonenMarkiert(PersonID,\r\n    Markiert) SELECT ID, False AS Markiert\r\n    FROM tblPersonen&quot;, dbFailOnError\r\n    Me.Requery\r\n    Set db = Nothing\r\nEnd Sub<\/pre>\n<p>Die Routine l&ouml;scht alle Eintr&auml;ge der Tabelle <b>tblPersonenMarkiert <\/b>und f&uuml;gt dann f&uuml;r jeden Datensatz der Tabelle <b>tblPersonen <\/b>je einen Datensatz in die Tabelle <b>tblPersonenMarkiert <\/b>ein. Gleichzeitig stellt sie den Wert des Feldes <b>Markiert <\/b>der neuen Datens&auml;tze auf <b>False <\/b>ein.<\/p>\n<p>Auch das Zur&uuml;cksetzen der Markierung funktioniert &auml;hnlich wie beim vorherigen Beispiel. Sie m&uuml;ssen lediglich die SQL-Anweisung wie in der folgenden Zeile austauschen und das Unterformular mit der <b>Requery<\/b>-Methode zu aktualisieren:<\/p>\n<pre>db.Execute &quot;UPDATE tblPersonenMarkiert SET Markiert = FALSE&quot;, dbFailOnError<\/pre>\n<p><b>Mehrfachauswahl im Datenblatt mit Markierung<\/b><\/p>\n<p>Die bisherigen Vorschl&auml;ge sind zwar nicht schlecht, aber eigentlich w&auml;re eine Kombination sinnvoll:<\/p>\n<p>Die Vorz&uuml;ge der Datenblattansicht mit ihrer M&ouml;glichkeit, Daten gleich noch zu bearbeiten gepaart mit der Markierung der kompletten Zeile, wenn ein Datensatz zur Auswahl hinzugef&uuml;gt wurde &#8211; immerhin kann es vorkommen, dass ein Datensatz mehr Felder als in unserem Beispiel enth&auml;lt, und dann muss das Auge schon einige Meter wandern, um jeweils anhand der links liegenden Felder zu pr&uuml;fen, ob das rechts befindliche <b>Ja\/Nein<\/b>-Feld zum Markieren des Datensatzes auch zu Recht angehakt ist.<\/p>\n<p>Wie w&auml;re es also, wenn wir eine Ansicht wie in Bild 9 realisieren k&ouml;nnten Dazu bedarf es gar nicht viel: Wir setzen einfach die bedingte Formatierung ein, indem wir f&uuml;r jedes Feld des Entwurfs mit Ausnahme des Feldes <b>Markiert <\/b>die bedingte Formatierung aus Bild 10 definieren.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_02\/IndividuelleDatenauswahl-web-images\/pic009.png\" alt=\"pic009.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 9: Mehrfachauswahl im Datenblatt ohne Kontrollk&auml;stchen<\/span><\/b><\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2010_02\/IndividuelleDatenauswahl-web-images\/pic010.png\" alt=\"pic010.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 10: Die bedingte Formatierung sorgt f&uuml;r die Hervorhebung markierter Datens&auml;tze.<\/span><\/b><\/p>\n<p>Au&szlig;erdem m&uuml;ssen wir daf&uuml;r sorgen, dass das Feld <b>Markiert<\/b> aus der Datenblattansicht verschwindet, ohne es aus dem Entwurf zu entfernen, denn die in der bedingten Formatierung definierte Bedingung bezieht sich genau auf dieses Feld.<\/p>\n<p>Doch das ist kein Problem. Wir erledigen dies in der Ereignisprozedur, die beim &Ouml;ffnen des Unterformulars ausgel&ouml;st wird und in der wir zugleich die Markierung der Datens&auml;tze zur&uuml;cksetzen (s. Listing 5).<\/p>\n<p class=\"kastentabelleheader\">Listing 5: Bei &Ouml;ffnen des Formulars wird die Markierungen der Datenherkunft gel&ouml;scht.<\/p>\n<pre>Private Sub Form_Open(Cancel As Integer)\r\n    Dim db As DAO.Database\r\n    Set db = CurrentDb\r\n    db.Execute &quot;UPDATE tblPersonenJaNein\r\n    SET Markiert = FALSE&quot;, dbFailOnError\r\n    Me.Requery\r\n    Me!Markiert.ColumnHidden = True\r\n    Set db = Nothing\r\nEnd Sub<\/pre>\n<p>Gleichzeitig sei erw&auml;hnt, dass wir uns auf die gleiche Datenherkunft beziehen wir im Formular <b>frmMehrfachauswahlJaNein<\/b>.<\/p>\n<p>Danach sorgen wir daf&uuml;r, dass wir die Datens&auml;tze auch ohne sichtbares Kontrollk&auml;stchen markieren und abw&auml;hlen k&ouml;nnen.<\/p>\n<p>Da die Daten mitunter noch bearbeitbar sein sollen, geht dies nicht durch einfaches Anklicken eines Elements der Zeile.<\/p>\n<p>Stattdessen verwenden wir das Ereignis der enthaltenen Steuerelemente, das durch einen Doppelklick ausgel&ouml;st wird. Legen Sie also die entsprechenden Ereignisprozeduren an und f&uuml;llen Sie diese wie folgt:<\/p>\n<pre>Private Sub ID_DblClick(Cancel As Integer)\r\n    Me!Markiert = Not Me!Markiert\r\nEnd Sub\r\nPrivate Sub Nachname_DblClick(Cancel As Integer)\r\n    Me!Markiert = Not Me!Markiert\r\nEnd Sub\r\nPrivate Sub Vorname_DblClick(Cancel As Integer)\r\n    Me!Markiert = Not Me!Markiert\r\nEnd Sub<\/pre>\n<p>Die Anweisung ist in allen drei Prozeduren gleich und sorgt daf&uuml;r, dass der aktuelle Datensatz markiert wird, wenn er dies zuvor nicht war, und umgekehrt.<\/p>\n<p>Durch die damit verbundene &auml;nderung des Wertes im Feld <b>Markiert <\/b>reagiert auch die bedingte Formatierung und f&auml;rbt die Felder des Datensatzes entsprechend ein.<\/p>\n<p>Die Prozeduren zum Ausgeben der markierten Datens&auml;tze und zum Abw&auml;hlen der ausgew&auml;hlten Datens&auml;tze funktionieren genau so wie im Formular <b>frmMehrfachauswahlJaNein<\/b>.<\/p>\n<p><b>Mehrfachauswahl im Datenblatt mit tempor&auml;rem Recordset<\/b><\/p>\n<p>Vielleicht ist es auch gar nicht m&ouml;glich oder auch nicht erw&uuml;nscht, eine weitere Tabelle anzulegen. Dann m&uuml;ssen Sie mit einem kleinen Trick vorlieb nehmen, zu dem Sie im Beitrag <b>Tempor&auml;re Datensatzgruppen <\/b>mehr erfahren (<b>www.access-im-unternehmen.de\/711<\/b>).<\/p>\n<p>Die Konfiguration basiert wieder auf dem Formular <b>frmMehrfachauswahlJaNein<\/b>. Diesmal hei&szlig;en die Formulare jedoch <b>frmMehrfachauswahlTemporaer <\/b>und <b>sfmMehrfachauswahlTemporaer<\/b>.<\/p>\n<p>Das Unterformular erh&auml;lt diesmal nicht gleich zu Beginn eine Datenherkunft. Diese weisen wir erst sp&auml;ter &uuml;ber die <b>Recordset<\/b>-Eigenschaft per VBA zu.<\/p>\n<p>Als Datenherkunft dient diesmal grunds&auml;tzlich wieder die zu Beginn eingef&uuml;hrte Tabelle <b>tblPersonen<\/b>, denn wir wollen ja ohne ein spezielles Feld zum Speichern des <b>Markiert<\/b>-Zustandes arbeiten.<\/p>\n<p>Grunds&auml;tzlich deshalb, weil die Daten zwar aus dieser Tabelle stammen, aber nicht direkt an das Unterformular gebunden werden.<\/p>\n<p>In der Routine, die durch das Ereignis <b>Beim &Ouml;ffnen <\/b>des Unterformulars ausgel&ouml;st wird, geschieht Folgendes (s. Listing 6):<\/p>\n<ul>\n<li class=\"aufz-hlung\">Die Prozedur erzeugt zwei Datensatzgruppen: Eine f&uuml;r die tats&auml;chlichen Daten der Tabelle <b>tblPersonen<\/b> und eine f&uuml;r die als Recordset des Unterformulars verwendete Datenherkunft.<\/li>\n<li class=\"aufz-hlung\"><b>rstTemp <\/b>wird als tempor&auml;re Datensatzgruppe ausgef&uuml;hrt und mit den entsprechenden Feldern ausgestattet &#8211; und einem zus&auml;tzlichen <b>Ja\/Nein<\/b>-Feld namens <b>Markiert<\/b>.<\/li>\n<li class=\"aufz-hlung\">Dann wird <b>rstPersonen <\/b>auf Basis der Tabelle <b>tblPersonen <\/b>ge&ouml;ffnet. Diese Datensatzgruppe enth&auml;lt somit die Datens&auml;tze der zugrunde liegenden Tabelle.<\/li>\n<li class=\"aufz-hlung\">Danach durchl&auml;uft die Prozedur alle Datens&auml;tze des Recordsets <b>rstPersonen <\/b>und schreibt alle darin enthaltenen Daten in jeweils neue Datens&auml;tze im Recordset <b>rstTemp<\/b>.<\/li>\n<li class=\"aufz-hlung\">Schlie&szlig;lich weist die Prozedur <b>rstTemp <\/b>der Eigenschaft <b>Recordset <\/b>des Unterformulars zu und f&uuml;llt dieses somit auf Umwegen mit den Daten der Tabelle <b>tblPersonen<\/b>.<\/li>\n<\/ul>\n<p class=\"kastentabelleheader\">Listing 6: F&uuml;llen eines Unterformulars mit einem tempor&auml;ren Recordset<\/p>\n<pre>Private Sub Form_Open(Cancel As Integer)\r\n    Dim cnn As ADODB.Connection\r\n    Dim rstPersonen As ADODB.Recordset\r\n    Dim rstTemp As ADODB.Recordset\r\n    Dim fld As ADODB.Field\r\n    Set cnn = CurrentProject.Connection\r\n    Set rstTemp = New ADODB.Recordset\r\n    Set rstPersonen = New ADODB.Recordset\r\n    rstTemp.CursorLocation = adUseClient\r\n    rstTemp.LockType = adLockOptimistic\r\n    rstTemp.Fields.Append &quot;ID&quot;, adInteger\r\n    rstTemp.Fields.Append &quot;Vorname&quot;, adVarWChar, 255\r\n    rstTemp.Fields.Append &quot;Nachname&quot;, adVarWChar, 255\r\n    rstTemp.Fields.Append &quot;Markiert&quot;, adBoolean, False\r\n    rstTemp.Open\r\n    rstPersonen.Open &quot;tblPersonen&quot;, cnn\r\n    Do While Not rstPersonen.EOF\r\n        rstTemp.AddNew\r\n        For Each fld In rstPersonen.Fields\r\n            rstTemp(fld.Name) = rstPersonen(fld.Name)\r\n        Next fld\r\n        rstTemp.Update\r\n        rstPersonen.MoveNext\r\n    Loop\r\n    Set Me.Recordset = rstTemp\r\n    Set rstPersonen = Nothing\r\n    Set cnn = Nothing\r\nEnd Sub<\/pre>\n<p>Nat&uuml;rlich m&uuml;ssen wir uns auch wieder um das Zur&uuml;cksetzen der Markierungen k&uuml;mmern. Dies geschieht in der Prozedur, die durch die bereits bekannte Schaltfl&auml;che <b>cmdAuswahlLoeschen<\/b> ausgel&ouml;st wird.<\/p>\n<p>Diese Prozedur speichert zun&auml;chst die aktuelle Position des Datensatzzeigers in der Variablen <b>lngPos<\/b>, damit der betroffene Datensatz nach dem Zur&uuml;cksetzen der Daten wieder markiert werden kann.<\/p>\n<p>Das Zur&uuml;cksetzen geschieht dann durch Durchlaufen eines Recordsets mit den betroffenen Daten. Dazu ben&ouml;tigten wir keine eigene Objektvariable, wir k&ouml;nnen gleich auf die <b>Recordset<\/b>-Eigenschaft des Unterformulars zugreifen, um die darin enthaltenen Daten anzupassen.<\/p>\n<p>Zuerst setzt die Prozedur den Datensatzzeiger auf den ersten Datensatz. Dann durchl&auml;uft sie alle im Recordset des Unterformulars enthaltenen Datens&auml;tze und setzt jeweils den Wert des Feldes <b>Markiert <\/b>auf <b>False<\/b>.<\/p>\n<p>Schlie&szlig;lich wird die Eigenschaft <b>AbsolutePosition <\/b>wieder auf den zu Beginn gespeicherten Datensatz eingestellt (s. Listing 7).<\/p>\n<p class=\"kastentabelleheader\">Listing 7: Operation am offenen Herzen &#8211; hier am Recordset eines Formulars<\/p>\n<pre>Private Sub cmdAuswahlLoeschen_Click()\r\n    Dim lngPos As Long\r\n    lngPos = Me.sfmMehrfachauswahlTemporaer.Form.ID\r\n    With Me.sfmMehrfachauswahlTemporaer.Form.Recordset\r\n    .MoveFirst\r\n    Do While Not .EOF\r\n        !Markiert = False\r\n        .Update\r\n        .MoveNext\r\n    Loop\r\n    .AbsolutePosition = lngPos\r\n    End With\r\nEnd Sub<\/pre>\n<p>Das Auslesen der markierten Datens&auml;tze erfolgt auch etwas anders als in den vorherigen Beispielen &#8211; immerhin k&ouml;nnen wir nicht auf die in einer Tabelle gespeicherten Daten zugreifen (s. Listing 8).<\/p>\n<p class=\"kastentabelleheader\">Listing 8: Ermitteln der markierten Datens&auml;tze eines Recordsets<\/p>\n<pre>Private Sub cmdStart_Click()\r\n    Dim rst As New ADODB.Recordset\r\n    Dim lngPersonID As Long\r\n    Set rst = Me.sfmMehrfachauswahlTemporaer.Form.Recordset\r\n    rst.Filter = &quot;Markiert = True&quot;\r\n    Do While Not rst.EOF\r\n        lngPersonID = rst!ID\r\n        ''Etwas mit lngPerson erledigen\r\n        Debug.Print lngPersonID\r\n        rst.MoveNext\r\n    Loop\r\nEnd Sub<\/pre>\n<p>Also definieren wir zun&auml;chst ein <b>Recordset<\/b>-Objekt auf Basis des Recordsets des Unterformulars und weisen dieses der neu erstellten Objektvariablen zu.<\/p>\n<p>Die folgende Zeile weist der <b>Filter<\/b>-Eigenschaft des <b>Recordset<\/b>-Objekts den Ausdruck <b>Markiert = True <\/b>zu, denn nur diese Datens&auml;tze interessieren uns.<\/p>\n<p>Das Recordset wird dadurch direkt gefiltert und wir k&ouml;nnen im Anschluss ganz einfach per <b>Do While<\/b>-Schleife durch die gefilterten Datens&auml;tze streifen, um deren ID zu ermitten und zu verwerten.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>IndividuelleDatenauswahl.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{B4BF1429-1574-4F66-B20D-B316E0CCEC9E}\/aiu_708.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In Foren und Newsgroups wird immer wieder nach M&ouml;glichkeiten gefragt, einen oder mehrere Datens&auml;tze individuell auszuw&auml;hlen, um anschlie&szlig;end irgendetwas mit diesen Datens&auml;tzen zu erledigen &#8211; beispielsweise um einen Bericht auf Basis der ausgew&auml;hlten Daten zu f&uuml;llen oder die Empf&auml;nger eines Serienbriefs zu bestimmen. Dieser Beitrag stellt verschiedene M&ouml;glichkeiten vor, um dies zu realisieren.<\/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":[66022010,662010,44000023],"tags":[],"class_list":["post-55000708","post","type-post","status-publish","format-standard","hentry","category-66022010","category-662010","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>Individuelle Datenauswahl - 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\/Individuelle_Datenauswahl\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Individuelle Datenauswahl\" \/>\n<meta property=\"og:description\" content=\"In Foren und Newsgroups wird immer wieder nach M&ouml;glichkeiten gefragt, einen oder mehrere Datens&auml;tze individuell auszuw&auml;hlen, um anschlie&szlig;end irgendetwas mit diesen Datens&auml;tzen zu erledigen - beispielsweise um einen Bericht auf Basis der ausgew&auml;hlten Daten zu f&uuml;llen oder die Empf&auml;nger eines Serienbriefs zu bestimmen. Dieser Beitrag stellt verschiedene M&ouml;glichkeiten vor, um dies zu realisieren.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Individuelle_Datenauswahl\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T22:11:26+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/b52246a8385b4f999eed1fcd709b7584\" \/>\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=\"17\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Individuelle_Datenauswahl\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Individuelle_Datenauswahl\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Individuelle Datenauswahl\",\"datePublished\":\"2020-05-22T22:11:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Individuelle_Datenauswahl\\\/\"},\"wordCount\":2961,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Individuelle_Datenauswahl\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/b52246a8385b4f999eed1fcd709b7584\",\"articleSection\":[\"2\\\/2010\",\"2010\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Individuelle_Datenauswahl\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Individuelle_Datenauswahl\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Individuelle_Datenauswahl\\\/\",\"name\":\"Individuelle Datenauswahl - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Individuelle_Datenauswahl\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Individuelle_Datenauswahl\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/b52246a8385b4f999eed1fcd709b7584\",\"datePublished\":\"2020-05-22T22:11:26+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Individuelle_Datenauswahl\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Individuelle_Datenauswahl\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Individuelle_Datenauswahl\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/b52246a8385b4f999eed1fcd709b7584\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/b52246a8385b4f999eed1fcd709b7584\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Individuelle_Datenauswahl\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Individuelle Datenauswahl\"}]},{\"@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":"Individuelle Datenauswahl - 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\/Individuelle_Datenauswahl\/","og_locale":"de_DE","og_type":"article","og_title":"Individuelle Datenauswahl","og_description":"In Foren und Newsgroups wird immer wieder nach M&ouml;glichkeiten gefragt, einen oder mehrere Datens&auml;tze individuell auszuw&auml;hlen, um anschlie&szlig;end irgendetwas mit diesen Datens&auml;tzen zu erledigen - beispielsweise um einen Bericht auf Basis der ausgew&auml;hlten Daten zu f&uuml;llen oder die Empf&auml;nger eines Serienbriefs zu bestimmen. Dieser Beitrag stellt verschiedene M&ouml;glichkeiten vor, um dies zu realisieren.","og_url":"https:\/\/access-im-unternehmen.de\/Individuelle_Datenauswahl\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T22:11:26+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/b52246a8385b4f999eed1fcd709b7584","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"17\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Individuelle_Datenauswahl\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Individuelle_Datenauswahl\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Individuelle Datenauswahl","datePublished":"2020-05-22T22:11:26+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Individuelle_Datenauswahl\/"},"wordCount":2961,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Individuelle_Datenauswahl\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/b52246a8385b4f999eed1fcd709b7584","articleSection":["2\/2010","2010","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Individuelle_Datenauswahl\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Individuelle_Datenauswahl\/","url":"https:\/\/access-im-unternehmen.de\/Individuelle_Datenauswahl\/","name":"Individuelle Datenauswahl - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Individuelle_Datenauswahl\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Individuelle_Datenauswahl\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/b52246a8385b4f999eed1fcd709b7584","datePublished":"2020-05-22T22:11:26+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Individuelle_Datenauswahl\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Individuelle_Datenauswahl\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Individuelle_Datenauswahl\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/b52246a8385b4f999eed1fcd709b7584","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/b52246a8385b4f999eed1fcd709b7584"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Individuelle_Datenauswahl\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Individuelle Datenauswahl"}]},{"@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\/55000708","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=55000708"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000708\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000708"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000708"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}