{"id":55000165,"date":"2013-04-01T00:00:00","date_gmt":"2020-01-24T15:58:38","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=165"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Zugriff_auf_Daten_im_ListViewSteuerelement","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Daten_im_ListViewSteuerelement.html","title":{"rendered":"Zugriff auf Daten im ListView-Steuerelement"},"content":{"rendered":"<p class='introduction'>Genau wie beim Listenfeld oder auch in einem Datenblatt gibt es M&ouml;glichkeiten, Eintr&auml;ge anzuklicken, den markierten Eintrag auszuwerten oder auch per Code bestimmte Eintr&auml;ge zu markieren. Wie dies gelingt, zeigt dieser Artikel.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1208_ListView_Zugriff.mdb<\/b>.<\/p>\n<h2>Eigenschaften zur Markierung <\/h2>\n<p>Zun&auml;chst schauen wir uns die Eigenschaft <b>FullRowSelect <\/b>an. Mit dieser legen Sie fest, auf welchen Bereich der Benutzer klicken muss, um einen Eintrag zu markieren und wie der markierte Eintrag hervorgehoben wird.<\/p>\n<p>Im Beispiel im Formular <b>frmListViewMarkieren <\/b>k&ouml;nnen Sie diese Eigenschaft mit der Umschaltfl&auml;che <b>tglKompletteZeile <\/b>ein- und ausschalten. Das Formular basiert auf dem Formular <b>frmListViewMitDatenAusTabelle<\/b>, das Listenfeld wird wie im Artikel <b>ListView-Steuerelement mit Daten f&uuml;llen <\/b>mit den Daten der Tabelle <b>tblPersonal <\/b>gef&uuml;llt.<\/p>\n<p>&uuml;ber dem <b>List-View<\/b>-Steuerelement haben wir eine Umschaltfl&auml;che platziert, welche die Eigenschaft <b>FullRowSelect <\/b>des <b>ListView<\/b>-Steuerelements abwechselnd auf die Werte <b>True <\/b>und <b>False <\/b>einstellt.<\/p>\n<p>Damit dies geschieht, legen Sie f&uuml;r die Umschaltfl&auml;che mit dem Namen <b>tblKompletteZeile <\/b>eine Ereignisprozedur an, die durch das Ereignis <b>Nach Aktualisierung <\/b>ausgel&ouml;st wird (Markieren der Eigenschaft, Auswahl von <b>[Ereignisprozedur]<\/b>, Klick auf die Schaltfl&auml;che mit den drei Punkten). Diese Prozedur f&uuml;llen Sie wie folgt:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>tglKompletteZeile_AfterUpdate()\r\n     Select Case Me!tglKompletteZeile\r\n         <span style=\"color:blue;\">Case <\/span>-1\r\n             objLvwPersonal.FullRowSelect = <span style=\"color:blue;\">True<\/span>\r\n         <span style=\"color:blue;\">Case <\/span>0\r\n             objLvwPersonal.FullRowSelect = <span style=\"color:blue;\">False<\/span>\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Beim Laden des Formulars wird die Eigenschaft <b>FullRowSelect <\/b>auf den Wert <b>False<\/b> eingestellt, was die folgende Zeile in der Prozedur <b>Form_Load <\/b>bewirkt:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     <span style=\"color:blue;\">Set<\/span> objLvwPersonal = Me!lvwPersonal.Object\r\n     <span style=\"color:blue;\">With<\/span> objLvwPersonal\r\n&nbsp;&nbsp;&nbsp;&nbsp;          ...\r\n         .FullRowSelect = <span style=\"color:blue;\">False<\/span>\r\n         ...\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Dies sorgt au&szlig;erdem daf&uuml;r, dass nur ein Klick auf den Text in der ersten Spalte des <b>ListView<\/b>-Steuerelements den gew&uuml;nschten Eintrag markiert &#8211; und hier auch nur den Inhalt der ersten Spalte (siehe Bild 1).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_165_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_165_001.png\" alt=\"Einstellen der Spalten im ListView-Steuerelement\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Einstellen der Spalten im ListView-Steuerelement<\/p>\n<p>Die &uuml;brigen hier nicht abgebildeten Anweisungen finden Sie im Klassenmodul <b>Form_frmListViewMarkieren <\/b>der Beispieldatenbank, die Erl&auml;uterung dazu im Artikel <b>ListView-Steuerelement mit Daten f&uuml;llen<\/b>.<\/p>\n<p>Da die Umschaltfl&auml;che beim &ouml;ffnen des Formulars standardm&auml;&szlig;ig den Wert <b>Null <\/b>enth&auml;lt, &auml;ndert ein erster Klick den Wert auf <b>-1<\/b>, also <b>True<\/b>. Dies l&ouml;st die Ereignisprozedur <b>tblKompletteZeile_AfterUpdate <\/b>aus und stellt die Eigenschaft <b>FullRowSelect <\/b>ebenfalls auf <b>True <\/b>ein. Ein weiterer Klick stellt die Eigenschaft wieder auf <b>False <\/b>ein. Wenn <b>FullRowSelect <\/b>den Wert <b>True <\/b>enth&auml;lt, kann der Benutzer den Eintrag an einer beliebigen Stelle anklicken. Dies markiert dann auch die komplette Zeile (siehe Bild 2).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_165_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_165_002.png\" alt=\"Markieren der kompletten Zeile im ListView\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Markieren der kompletten Zeile im ListView<\/p>\n<h2>Den markierten Datensatz ermitteln<\/h2>\n<p>Wenn der Benutzer einen Datensatz markiert, dann zum Durchf&uuml;hren einer bestimmten Aktion: Vielleicht m&ouml;chte er die Detailansicht aufrufen, den Datensatz l&ouml;schen oder etwas anderes damit erledigen. In jedem Fall ben&ouml;tigen wir dann einen eindeutigen Hinweis auf diesen Datensatz &#8211; in der Regel den Wert des Prim&auml;rschl&uuml;sselfeldes f&uuml;r diesen Eintrag.<\/p>\n<p>Diesen haben wir beispielsweise in der ersten Spalte des <b>ListView<\/b>-Steuerelements abgebildet, aber er befindet sich auch in der <b>Key<\/b>-Eigenschaft eines jeden Eintrags. Wir schauen uns erst an, wie Sie den Wert der ersten Spalte ermitteln und k&uuml;mmern uns dann um die <b>Key<\/b>-Eigenschaft. Letztere wird vermutlich &ouml;fter eingesetzt, da es nicht immer gew&uuml;nscht ist, die Werte der Prim&auml;rschl&uuml;sselfelder anzuzeigen.<\/p>\n<p>F&uuml;hren wir die ersten Versuche &uuml;ber das Direktfenster aus (Tastenkombination <b>Strg + G<\/b>) &#8211; bei in der Formularansicht ge&ouml;ffnetem Formular <b>frmListViewMarkieren <\/b>und markiertem Datensatz. Dann referenzieren Sie das <b>ListView<\/b>-Steuerelement wie folgt &#8211; hier zur Ausgabe des Namens zur Pr&uuml;fung, ob der Bezug stimmt:<\/p>\n<pre>  Forms!frmListViewMarkieren!lvwPersonal.Name\r\n    lvwPersonal<\/pre>\n<p>Dies gelingt bereits. &uuml;brigens ist es eine gute Idee, sich zum Ermitteln von Bez&uuml;gen auf Steuerelemente oder Eigenschaften in einem Formular Schritt f&uuml;r Schritt vorzuarbeiten. Auf diese Weise k&ouml;nnen Sie potenzielle Fehlerquellen nacheinander eliminieren. <\/p>\n<p>Wenn wir uns dann weiter vorarbeiten, verwenden wir die Eigenschaft <b>SelectedItem<\/b>, um auf den gew&uuml;nschten Eintrag zuzugreifen. Dies liefert in folgendem Beispiel den Wert <b>3<\/b>:<\/p>\n<pre>  Forms!frmListViewMarkieren!lvwPersonal.SelectedItem\r\n    3<\/pre>\n<p>Nun stellt sich nur noch die Frage: Liefert dies den Wert der ersten Spalte oder den Index der markierten Spalte Leider sind beide Werte gleich, sodass wir dies aktuell nicht ermitteln k&ouml;nnen.<\/p>\n<p>Wie finden wir also heraus, ob die Eigenschaft den Index oder den Wert der ersten Spalte liefert Ganz einfach: Wir f&uuml;gen die Daten der Datenherkunft so hinzu, dass diese in der umgekehrten Reihenfolge angezeigt werden. Dazu brauchen Sie nur den ersten Parameter der <b>Add<\/b>-Anweisung in der Prozedur <b>ListViewFuellen <\/b>im Klassenmodul <b>Form_frmListViewMarkieren <\/b>auf <b>1 <\/b>einstellen:<\/p>\n<pre><span style=\"color:blue;\">Set<\/span> objListitem = objLvwPersonal.ListItems.Add(1, \"p\" & rst!PersonalID, rst!PersonalID)<\/pre>\n<p>Der neueste Eintrag wird dann jeweils an der ersten Position eingef&uuml;gt, sodass die Datens&auml;tze wie in Bild 3 hinzugef&uuml;gt werden. Eine erneute Abfrage liefert dann Gewissheit, dass <b>SelectedItem <\/b>den Wert des ersten Feldes zur&uuml;ckgibt. Aber ist das die ganze Wahrheit Nein. Dies finden Sie heraus, wenn Sie einmal mit <b>SelectedItem <\/b>den aktuellen Wert abfragen m&ouml;chten, wenn gar kein Eintrag markiert ist. Dies liefert die Fehlermeldung aus Bild 4.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_165_003.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_165_003.png\" alt=\"Datens&auml;tze in umgekehrter Reihenfolge\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: Datens&auml;tze in umgekehrter Reihenfolge<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_165_004.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_165_004.png\" alt=\"Fehler beim Zugriff auf SelectedItem, wenn kein Datensatz markiert ist\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 4: Fehler beim Zugriff auf SelectedItem, wenn kein Datensatz markiert ist<\/p>\n<p>Wenn <b>SelectedItem <\/b>den Typ <b>Variant<\/b>, <b>String <\/b>oder einen Zahlendatentyp h&auml;tte, w&uuml;rde dies nicht passieren. Zum Gl&uuml;ck k&ouml;nnen wir den Typ des von <b>Selected-Item <\/b>gelieferten Wertes mit der Funktion <b>TypeName <\/b>ermitteln &#8211; zumindest, wenn ein Eintrag markiert ist:<\/p>\n<pre>  Typename(Forms!frmListViewMarkieren!                           lvwPersonal.SelectedItem)\r\n    IListItem<\/pre>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Access &#091;basics&#093;<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/282\/access-basics?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 400 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000165\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/index.php\/data\/wp\/v2\/posts\/55000165?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000165\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"8d63f6cbe9\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Genau wie beim Listenfeld oder auch in einem Datenblatt gibt es M&ouml;glichkeiten, Eintr&auml;ge anzuklicken, den markierten Eintrag auszuwerten oder auch per Code bestimmte Eintr&auml;ge zu markieren. Wie dies gelingt, zeigt dieser Artikel.<\/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":[662012,66082012],"tags":[],"class_list":["post-55000165","post","type-post","status-publish","format-standard","hentry","category-662012","category-66082012"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.9.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Zugriff auf Daten im ListView-Steuerelement - Access [basics]<\/title>\n<meta name=\"description\" content=\"Genau wie beim Listenfeld oder auch in einem Datenblatt gibt es M\u00f6glichkeiten, Eintr\u00e4ge anzuklicken, den markierten Eintrag auszuwerten oder auch per Code bestimmte Eintr\u00e4ge zu markieren. Wie dies gelingt, zeigt dieser Artikel.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Daten_im_ListViewSteuerelement.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Zugriff auf Daten im ListView-Steuerelement - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Genau wie beim Listenfeld oder auch in einem Datenblatt gibt es M\u00f6glichkeiten, Eintr\u00e4ge anzuklicken, den markierten Eintrag auszuwerten oder auch per Code bestimmte Eintr\u00e4ge zu markieren. Wie dies gelingt, zeigt dieser Artikel.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Daten_im_ListViewSteuerelement.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:58:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/..\/tl_files\/images\/pic_165_001.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\">\n\t<meta name=\"twitter:data1\" content=\"13\u00a0Minuten\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/access-basics.de\/#website\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Access [basics]\",\"description\":\"DAS ACCESS-MAGAZIN F\\u00dcR ALLE, DIE VON 0 AUF 100 WOLLEN\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/access-basics.de\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Daten_im_ListViewSteuerelement.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_165_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Daten_im_ListViewSteuerelement.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Daten_im_ListViewSteuerelement.html\",\"name\":\"Zugriff auf Daten im ListView-Steuerelement - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Daten_im_ListViewSteuerelement.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:58:38+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Genau wie beim Listenfeld oder auch in einem Datenblatt gibt es M\\u00f6glichkeiten, Eintr\\u00e4ge anzuklicken, den markierten Eintrag auszuwerten oder auch per Code bestimmte Eintr\\u00e4ge zu markieren. Wie dies gelingt, zeigt dieser Artikel.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Daten_im_ListViewSteuerelement.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Daten_im_ListViewSteuerelement.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Daten_im_ListViewSteuerelement.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Daten_im_ListViewSteuerelement.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Zugriff_auf_Daten_im_ListViewSteuerelement.html\",\"name\":\"Zugriff auf Daten im ListView-Steuerelement\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000165","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/comments?post=55000165"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000165\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000165"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000165"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000165"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}