{"id":55000621,"date":"2023-06-01T00:00:00","date_gmt":"2023-06-01T00:00:00","guid":{"rendered":"http:\/\/access-basics.de\/621"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Formulare_basics_Einfache_Datensaetze_im_Detail","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Formulare_basics_Einfache_Datensaetze_im_Detail.html","title":{"rendered":"Formulare [basics]: Einfache Datens&auml;tze im Detail"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/4173a2945ea848c88c019585d04b2241\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p class='introduction'>Eine der wichtigsten Aufgaben f&uuml;r Formulare ist die Anzeige der Daten eines einzelnen Datensatzes &#8211; und zwar in einer Form, in welcher der Benutzer die Daten komfortabel eingeben kann. Dazu geh&ouml;rt, dass man zun&auml;chst die Tabelle oder Abfrage, deren Daten im Formular erscheinen sollen, als Datensatzquelle angibt. Dann nutzt man die praktische Feldliste, aus der wie alle Felder der Datenquelle einfach in das Formular ziehen kann. Schlie&szlig;lich passen wir die Elemente noch an und erhalten so ein Formular zur Anzeige der Details eines Datensatzes.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels findest Du in der Datenbank <b>FormulareBasics_Grundlagen.accdb<\/b>.<\/p>\n<h2>Anlegen des Formulars<\/h2>\n<p>Das neue Formular legen wir &uuml;ber den Men&uuml;befehl <b>Erstellen|Formulare|Formularentwurf <\/b>an. Wir erhalten so ein neues, leeres Formular in der Entwurfsansicht (siehe Bild 1).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_001.png\" alt=\"Anlegen des neuen Formulars\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Anlegen des neuen Formulars<\/p>\n<h2>Formular speichern<\/h2>\n<p>Als erste Aktion speichern wir das Formular nun. Dazu bet&auml;tigen wir die Tastenkombination <b>Strg + S<\/b>. Sofern das Formular zuvor noch nicht gespeichert wurde, erscheint der Dialog <b>Speichern unter<\/b>, wo wir den Formularnamen <b>frmLeserDetails <\/b>eingeben (siehe Bild 2).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_002.png\" alt=\"Speichern des Formulars\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: Speichern des Formulars<\/p>\n<p>Direkt danach &auml;ndert sich der Name im Titel des Formulars auf den angegebenen Wert.<\/p>\n<p>Wechseln wir danach in die Formularansicht (zum Beispiel mit <b>Formularentwurf|Ansichten|Formularansicht<\/b>), sehen wir ein komplett leeres Formular (siehe Bild 3). Zu beachten ist der untere Bereich mit den Navigationsschaltfl&auml;chen: Hier werden <b>1 von 1<\/b> Datens&auml;tze angezeigt, aber man kann keinen neuen Datensatz anlegen. Logisch: Wir haben ja auch noch keine Datensatzquelle hinterlegt, in der ein neuer Datensatz hinterlegt werden k&ouml;nnte.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_004.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_004.png\" alt=\"Das Formular in der Formularansicht - hier noch ohne Daten\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: Das Formular in der Formularansicht &#8211; hier noch ohne Daten<\/p>\n<h2>Formular erneut entwerfen<\/h2>\n<p>Wenn das Formular einmal geschlossen ist und Du willst es erneut bearbeiten, gelingt das am schnellsten mit einem Rechtsklick auf den Formularnamen im Navigationsbereich von Access und Auswahl des Kontextmen&uuml;-Eintrags <b>Entwurfsansicht<\/b>.<\/p>\n<h2>Schritte zum Anzeigen von Daten im Formular<\/h2>\n<p>Unser neues Formular soll die Daten eines Datensatzes der Tabelle <b>tblLeser <\/b>anzeigen. Dazu sind folgende Schritte n&ouml;tig:<\/p>\n<ul>\n<li>Zuweisen dieser Tabelle als Datensatzquelle des Formulars<\/li>\n<li>Hinzuf&uuml;gen von Steuerelementen, die an die Felder dieser Tabelle gebunden sind<\/li>\n<\/ul>\n<h2>Zuweisen der Datensatzquelle<\/h2>\n<p>Wird das Formular in der Entwurfsansicht angezeigt, erscheint &uuml;blicherweise auch das Eigenschaftenblatt. Ist dies nicht der Fall, blenden wir dieses nun mit der Taste <b>F4<\/b> ein.<\/p>\n<p>Hier wechseln wir zur Registerseite Daten. Diese h&auml;lt die Eigenschaft <b>Datensatzquelle <\/b>bereit, mit der wir alle Tabellen oder Abfragen der Datenbank ausw&auml;hlen k&ouml;nnen. Wir w&auml;hlen hier den Eintrag <b>tblLeser<\/b> aus (siehe Bild 4).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_003.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_003.png\" alt=\"Zuweisen der Datensatzquelle\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 4: Zuweisen der Datensatzquelle<\/p>\n<p>Welche &Auml;nderung erreichen wir damit Wechseln wir erneut in die Formularansicht, sehen wir im unteren Bereich zwischen den Navigationsschaltfl&auml;chen die Anzeige <b>1 von 10<\/b> (siehe Bild 5).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_005.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_005.png\" alt=\"Das Formular enth&auml;lt bereits Daten.\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 5: Das Formular enth&auml;lt bereits Daten.<\/p>\n<p>Und auch wenn wir noch keine Steuerelemente zur Anzeige von Daten hinzugef&uuml;gt haben, sehen wir hier schon, dass das Formular grunds&auml;tzlich Daten enth&auml;lt. Wir k&ouml;nnen sogar schon darin navigieren.<\/p>\n<h2>Steuerelemente mit Daten hinzuf&uuml;gen<\/h2>\n<p>Access ist nicht umsonst als die Datenbankanwendung unter Windows bekannt, mit der sich am schnellsten nutzbare Anwendungen erstellen lassen. Einer der Gr&uuml;nde daf&uuml;r ist, dass wir nach dem Ausw&auml;hlen einer Datensatzquelle f&uuml;r ein Formular direkt gebundene Steuerelemente auf Basis der Felder dieser Tabelle erstellen k&ouml;nnen.<\/p>\n<p>Dazu blenden wir mit dem Men&uuml;befehl <b>Formularentwurf|Tools|Vorhandene Felder hinzuf&uuml;gen <\/b>die sogenannte Feldliste ein.<\/p>\n<p>Diese zeigt alle Felder der Tabelle oder Abfrage an, die wir als Datensatzquelle angegeben haben. Wir markieren durch Aufziehen eines Rahmens mit der Maus alle Felder und ziehen diese in den Detailbereich des Formularentwurfs (siehe Bild 8).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_006.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_006.png\" alt=\"Einf&uuml;gen von gebundenen Steuerelementen\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 6: Einf&uuml;gen von gebundenen Steuerelementen<\/p>\n<h2>Was automatisch passiert<\/h2>\n<p>Durch das Hineinziehen der Steuerelemente sind verschiedene Dinge geschehen:<\/p>\n<ul>\n<li>Es wurde jeweils ein Textfeld f&uuml;r jedes der Felder angelegt.<\/li>\n<li>Diesem wurde ein Bezeichnungsfeld hinzugef&uuml;gt. Dass das Textfeld und das Bezeichnungsfeld verbunden sind, erkennen wir erstens daran, dass wenn wir eines der beiden Elemente markieren, auch das kleine graue K&auml;stchen am anderen Element erscheint. Au&szlig;erdem k&ouml;nnen wir in der Eigenschaft <b>Bezeichnungsname <\/b>des Textfeldes den Namen des verkn&uuml;pften Bezeichnungsfeldes entnehmen (siehe Bild 6).<\/li>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_017.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_017.png\" alt=\"Angabe des Bezeichnungsfeldes eines Textfeldes\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 7: Angabe des Bezeichnungsfeldes eines Textfeldes<\/p>\n<li>Als Name f&uuml;r das Textfeld wurde der Name des Feldes eingetragen. Dieser Name ist wichtig, wenn Du sp&auml;ter einmal per VBA auf das Feld zugreifen m&ouml;chtest &#8211; oder den Inhalt des Textfeldes als Teil eines berechneten Ausdrucks eines anderen Steuerelements zu nutzen.<\/li>\n<li>F&uuml;r das Textfeld wurde au&szlig;erdem die Eigenschaft <b>Steuerelementinhalt <\/b>auf den Namen des Feldes eingestellt, das wir aus der Feldliste in den Formularentwurf gezogen haben. Dies gibt an, aus welchem Feld der Datensatzquelle dieses Steuerelement seinen Wert f&uuml;r den aktuellen Datensatz beziehen soll.<\/li>\n<\/ul>\n<h2>Resultierende Bindungen<\/h2>\n<p>Wir haben nun also auf zwei Ebenen Bindungen zwischen dem Formular und der Tabelle <b>tblLeser <\/b>erstellt:<\/p>\n<ul>\n<li>Wir haben das Formular <b>frmLeserDetails <\/b>&uuml;ber die Eigenschaft Datensatzquelle an die Tabelle <b>tblLeser <\/b>gebunden.<\/li>\n<li>Wir haben Steuerelemente hinzugef&uuml;gt, die automatisch an die Felder dieser Datensatzquelle gebunden, damit die Daten des aktuellen Datensatzes in den Steuerelementen angezeigt werden.<\/li>\n<\/ul>\n<h2>Optimierungsidee Steuerelementname<\/h2>\n<p>Wie Du siehst, lautet der Name der Textfelder nun jeweils wie der Name des Feldes, an welches das Feld gebunden ist. Das kann mitunter zu Verwirrung f&uuml;hren. Daher schlage ich vor, dass wir die Namen von gebundenen Steuerelementen so &auml;ndern, dass diese ein Pr&auml;fix erhalten. Dieses Pr&auml;fix soll gleichzeitig andeuten, um was f&uuml;r eine Art von Steuerelement es sich handelt. In diesem Fall haben wir nur Textfelder angelegt, die wir alle mit dem Pr&auml;fix <b>txt <\/b>versehen m&ouml;chten. F&uuml;r das Textfeld, das an das Feld <b>Vorname<\/b> gebunden ist, erledigen wir das wie in Bild 7.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_018.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_018.png\" alt=\"&Auml;ndern des Namens eines Textfeldes\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 8: &Auml;ndern des Namens eines Textfeldes<\/p>\n<h2>Weitere Steuerelementtypen<\/h2>\n<p>Wenn die dem Formular zugrunde liegende Tabelle <b>Ja\/Nein<\/b>-Felder enth&auml;lt oder sogar Nachschlagefelder, dann legt Access automatisch Kontrollk&auml;stchen beziehungsweise Kombinationsfelder an, die an dieser Felder gebunden sind. Auf diese Steuerelemente gehen wir in weiteren Artikeln ein.<\/p>\n<h2>Steuerelemente mit Beschriftung<\/h2>\n<p>Die gebundenen Steuerelemente werden direkt inklusive Bezeichnungsfeldern untereinander im Formular platziert. Die Bezeichnungsfelder erhalten entweder den Feldnamen als Text oder, falls vorhanden, den Wert der Eigenschaft Beschriftung aus dem Tabellenentwurf. Hier haben wir bereits vorgearbeitet, sodass etwa statt des Feldnamens <b>EMail <\/b>die Beschriftung <b>E-Mail <\/b>erscheint. Wie man das einstellt, zeigt der Artikel <b>Formulare [basics]: Grundlagen <\/b>(<b>www.access-basics.de\/625<\/b>).<\/p>\n<p>Und damit wir nicht immer Doppelpunkte zu den Beschriftungen hinzuf&uuml;gen m&uuml;ssen, sollte dies gew&uuml;nscht sein, haben wir im Artikel <b>Formulare [basics]: Doppelpunkt per Vorlage <\/b>(<b>www.access-basics.de\/623<\/b>) eine Anleitung geschrieben, wie man diese Aufgabe dauerhaft automatisiert.<\/p>\n<p>Nutzen wir diese M&ouml;glichkeiten, erhalten wir nach einem Wechsel in die Formularansicht das Formular aus Bild 9.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_004.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_004.png\" alt=\"Das Formular in der Formularansicht\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 9: Das Formular in der Formularansicht<\/p>\n<p>Die hier hinzugef&uuml;gten Steuerelemente wollen wir nun noch ausrichten und ihre Gr&ouml;&szlig;e anpassen. In diesem Fall ist der gr&ouml;&szlig;te Teil der Arbeit schon erledigt, weil wir alle Felder gleichzeitig aus der Feldliste in den Detailbereich gezogen haben. Ist das nicht der Fall, weil Du die Steuerelemente einzeln hinzugef&uuml;gt hast, findest Du Details zur nachtr&auml;glichen Ausrichtung im Artikel <b>Formulare [basics]: Steuerelemente ausrichten <\/b>(<b>www.access-basics.de\/626<\/b>).<\/p>\n<h2>Breite der Steuerelemente optimieren<\/h2>\n<p>In diesem Fall brauchen wir nur noch die Breite der Steuerelemente anzupassen. Das Feld <b>LeserID<\/b> kann schmaler dargestellt werden, <b>E-Mail<\/b> sollte ein wenig breiter sein. Und der Inhalt des Feldes <b>Geburtsdatum <\/b>soll wie die meisten &uuml;brigen Felder noch linksb&uuml;ndig erscheinen.<\/p>\n<p>Das Anpassen der Steuerelementbreiten an die Feldinhalte erledigen wir am einfachsten in der Layoutansicht. In diese wechseln wir nach einem Rechtsklick auf die Titelleiste des Formulars mit dem Kontextmen&uuml;eintrag <b>Layoutansicht<\/b> (siehe Bild 10).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_007.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_007.png\" alt=\"Wechsel zur Layoutansicht\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 10: Wechsel zur Layoutansicht<\/p>\n<p>In der Layoutansicht k&ouml;nnen wir nun einzelne Steuerelemente markieren und diese durch Ziehen der Seiten mit der Maus vergr&ouml;&szlig;ern oder verkleinern (siehe Bild 11).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_008.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_008.png\" alt=\"Verwenden der Layoutansicht zum Anpassen der Steuerelementbreite an den Inhalt\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 11: Verwenden der Layoutansicht zum Anpassen der Steuerelementbreite an den Inhalt<\/p>\n<p>Das Besondere an der Layoutansicht ist, dass wir in dieser die enthaltenen Daten sehen k&ouml;nnen.<\/p>\n<p>Wir k&ouml;nnen sogar durch die Datens&auml;tze navigieren, um einen herauszusuchen, der einen besonders langen Text als Inhalt enth&auml;lt. Dann nutzen wir diesen, um die Breite des Steuerelements optimal einzustellen.<\/p>\n<p>Die Ausrichtung des Textes f&uuml;r das Feld <b>Geburtsdatum <\/b>stellen wir ein, indem wir diese markieren und f&uuml;r die Eigenschaft <b>Textausrichtung <\/b>den Wert <b>Linksb&uuml;ndig <\/b>festlegen.<\/p>\n<h2>Formular testen<\/h2>\n<p>Damit k&ouml;nnen wir nun in die Formularansicht wechseln. Dieses zeigt, dass wir beim Erstellen des Datenmodells bereits ein paar Testdatens&auml;tze eingegeben haben, bereits Informationen zu einem Leser an (siehe Bild 12).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_009.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_009.png\" alt=\"Das Formular mit Beispieldaten\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 12: Das Formular mit Beispieldaten<\/p>\n<p>Hier k&ouml;nnen wir nun folgende Aktionen durchf&uuml;hren:<\/p>\n<ul>\n<li>Einen neuen Datensatz anlegen<\/li>\n<li>Einen vorhandenen Datensatz bearbeiten<\/li>\n<li>Einen vorhandenen Datensatz l&ouml;schen<\/li>\n<\/ul>\n<h2>Datensatz anlegen<\/h2>\n<p>Zum Anlegen eines Datensatzes klicken wir zum Beispiel auf die rechte Schaltfl&auml;che der Navigationsschaltfl&auml;chen. Dies legt einen neuen, leeren Datensatz wie in Bild 13 an. Das Textfeld, das an das Prim&auml;rschl&uuml;sselfeld mit der Autowertfunktion gebunden ist, zeigt den Wert <b>(Neu) <\/b>an.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_010.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_010.png\" alt=\"Anlegen eines neuen Datensatzes\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 13: Anlegen eines neuen Datensatzes<\/p>\n<p>Dieser &auml;ndert sich, sobald wir Text in irgendein Feld eingeben und den Datensatz somit in den Bearbeitungszustand versetzen. In diesem Zustand wird nicht nur der n&auml;chste freie Wert in das Autowertfeld eingetragen. Au&szlig;erdem erscheint im linken Bereich, dem sogenannten Datensatzmarkierer, statt des nach rechts zeigenden Dreiecks ein Stift als Zeichen daf&uuml;r, dass der Datensatz sich im Bearbeitungszustand befindet (siehe Bild 14).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_011.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_011.png\" alt=\"Bearbeiten eines neuen Datensatzes\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 14: Bearbeiten eines neuen Datensatzes<\/p>\n<p>Weitere M&ouml;glichkeiten zum Anlegen eines neuen Datensatzes sind zum Beispiel:<\/p>\n<ul>\n<li>Bet&auml;tigen des Ribbon-Eintrags <b>Start|Daten-s&auml;tze|Neu<\/b><\/li>\n<li>Bet&auml;tigen der Tastenkombination <b>Strg + +<\/b><\/li>\n<\/ul>\n<h2>Speichern oder Abbrechen<\/h2>\n<p>Von hier aus gibt es zwei M&ouml;glichkeiten:<\/p>\n<ul>\n<li>Wir speichern den neuen Datensatz. Dieser wird dann nicht mehr nur in Formular angezeigt, sondern wird auch in der zugrunde liegenden Tabelle gespeichert.<\/li>\n<li>Wir brechen das Anlegen des neuen Datensatzes ab. Dann wird der neue Datensatz gar nicht erst in der Tabelle gespeichert.<\/li>\n<\/ul>\n<h2>Speichern des Datensatzes<\/h2>\n<p>Zum Speichern haben wir mehrerer M&ouml;glichkeiten, zum Beispiel diese:<\/p>\n<ul>\n<li>Anklicken des Datensatzmarkierers<\/li>\n<li>Verlassen des Datensatzes durch einen Wechsel zu einem vorhandenen oder neuen Datensatz<\/li>\n<li>Schlie&szlig;en des Formulars<\/li>\n<li>Bet&auml;tigen der Tastenkombination <b>Strg + S<\/b>, w&auml;hrend das Formular den Fokus hat<\/li>\n<li>Bet&auml;tigen des Eintrags <b>Speichern <\/b>im Ribbon (siehe Bild 15) unter <b>Start|Datens&auml;tze<\/b><\/li>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_012.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_012.png\" alt=\"Speichern eines neuen Datensatzes per Ribbon\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 15: Speichern eines neuen Datensatzes per Ribbon<\/p>\n<\/ul>\n<p>Je nachdem, welche M&ouml;glichkeit man w&auml;hlt, wird der neu angelegte und gespeicherte Datensatz weiterhin angezeigt.<\/p>\n<p>In diesem Fall sehen wir durch das Icon im Datensatzmarkierer, dass der Datensatz sich nun nicht mehr im Bearbeitungsmodus befindet.<\/p>\n<h2>Wenn der Datensatz nicht gespeichert werden kann<\/h2>\n<p>Manchmal k&ouml;nnen Restriktionen im Tabellenentwurf daf&uuml;r sorgen, dass ein Datensatz nicht gespeichert werden kann. Ein Beispiel ist ein Feld, das nicht leer bleiben darf. Zu Beispielzwecken haben wir f&uuml;r das Feld <b>Vorname <\/b>der Tabelle <b>tblLeser <\/b>die Eigenschaft <b>Eingabe erforderlich <\/b>auf <b>Ja <\/b>eingestellt. Somit kann der Datensatz nicht gespeichert werden, wenn das Feld keinen Wert enth&auml;lt.<\/p>\n<p>Versuchen wir anschlie&szlig;end, einen neuen Datensatz im Formular zu speichern, der keinen Wert im Feld <b>Vorname<\/b> enth&auml;lt, erhalten wir die Meldung aus Bild 17. Dies gilt auch f&uuml;r bereits angelegte Datens&auml;tze, bei denen wir dieses Feld leeren und dann versuchen, den Datensatz zu speichern.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_013.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_013.png\" alt=\"Meldung bei Verletzung einer Restriktion im Datenmodell\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 16: Meldung bei Verletzung einer Restriktion im Datenmodell<\/p>\n<p>Es gibt noch viele weitere &auml;hnlicher Restriktionen, die das Speichern eines Datensatzes verhindern k&ouml;nnen &#8211; zum Beispiel Eingaben, die nicht dem Datentyp des jeweiligen Feldes entsprechen.<\/p>\n<h2>Abbrechen der Eingabe<\/h2>\n<p>Wenn wir einen neuen Datensatz angelegt und mit der Eingabe begonnen haben, m&uuml;ssen wir diesen nicht zwangsl&auml;ufig in der zugrunde liegenden Tabelle speichern. Wir k&ouml;nnen das Anlegen auch abbrechen. Dazu gibt es tats&auml;chlich nur eine M&ouml;glichkeit: das Bet&auml;tigen der <b>Esc<\/b>-Taste.<\/p>\n<p>Dadurch werden alle seit dem Anlegen durchgef&uuml;hrten &Auml;nderungen verworfen und es wird wieder der neue, leere Datensatz im Ursprungszustand angezeigt.<\/p>\n<h2>Einen vorhandenen Datensatz bearbeiten<\/h2>\n<p>Zum Bearbeiten eines vorhandenen Datensatzes ist standardm&auml;&szlig;ig keine besondere Vorbereitung n&ouml;tig &#8211; wir steuern einfach den gew&uuml;nschten Datensatz an und beginnen mit den &Auml;nderungen. Dies sorgt wieder f&uuml;r die Anzeige des Bearbeiten-Symbols im Datensatzmarkierer.<\/p>\n<p>Das Speichern eines bearbeiteten Datensatzes geschieht auf die gleiche Art wie bei einem neu angelegten Datensatz. Bei Verletzungen eventueller Restriktionen der als Datensatzquelle verwendeten Tabelle erscheint ebenfalls eine entsprechende Meldung.<\/p>\n<p>Wenn wir uns entscheiden, dass wir die seit dem Beginn der Bearbeitung vorgenommenen &Auml;nderungen nicht in der zugrunde liegenden Tabelle speichern wollen, verwerfen wir die &Auml;nderungen genau wie bei einem neuen Datensatz mit der <b>Esc<\/b>-Taste.<\/p>\n<h2>Einen vorhandenen Datensatz l&ouml;schen<\/h2>\n<p>Zum L&ouml;schen eines Datensatzes gibt es interessanterweise keine offensichtliche M&ouml;glichkeit. Selbst im Ribbon wird ein solcher Befehl nicht auf den ersten Blick angezeigt. Zwar sehen wir dort im Bereich <b>Start|Datens&auml;tze <\/b>den Befehl <b>L&ouml;schen<\/b>, aber dieser l&ouml;scht nicht den aktuellen Datensatz, sondern den Inhalt des aktuell markierten Feldes. Dementsprechend wird es deaktiviert, wenn wir das Autowertfeld markieren &#8211; dieses kann n&auml;mlich nicht geleert werden.<\/p>\n<p>Erst wenn wir den Befehl <b>L&ouml;schen <\/b>erweitern, sehen wir den Eintrag <b>Datensatz l&ouml;schen<\/b> (siehe Bild 16). Mit diesem k&ouml;nnen wir schlie&szlig;lich den kompletten Datensatz aus der Tabelle entfernen.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_014.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_014.png\" alt=\"L&ouml;schen eines Datensatzes per Ribbonbefehl\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 17: L&ouml;schen eines Datensatzes per Ribbonbefehl<\/p>\n<p>Neben dieser gibt es noch zwei weitere Methoden:<\/p>\n<ul>\n<li>Durch das Markieren des vollst&auml;ndigen Datensatzes mit einem Mausklick auf den Datensatzmarkierer. Dies stellt die Hintergrundfarbe des Datensatzmarkierers auf Schwarz ein und mit dem Bet&auml;tigen der <b>Zur&uuml;ck<\/b>&#8211; oder der <b>Entf<\/b>-Taste l&ouml;schen wir den Datensatz schlie&szlig;lich (siehe Bild 19).<\/li>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_015.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_015.png\" alt=\"Markieren eines kompletten Datensatzes\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 18: Markieren eines kompletten Datensatzes<\/p>\n<li>Eine noch unbekanntere, aber die schnellste uns bekannte Methode ist das Bet&auml;tigen der Tastenkombination <b>Strg + &#8211;<\/b>.<\/li>\n<\/ul>\n<p>Beim L&ouml;schen taucht &uuml;blicherweise noch eine R&uuml;ckfrage auf, ob der Datensatz tats&auml;chlich gel&ouml;scht werden soll (siehe Bild 18). Ob diese angezeigt werden soll, k&ouml;nnen wir einstellen. Das ist jedoch ein Thema f&uuml;r einen weiteren Artikel.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_621_016.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_621_016.png\" alt=\"R&uuml;ckfrage vor dem L&ouml;schen eines Datensatzes\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 19: R&uuml;ckfrage vor dem L&ouml;schen eines Datensatzes<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Dieser Artikel zeigt, wie Du ein neues Formular anlegst und damit die Daten einer einfachen Tabelle anzeigst. Dabei haben wir erl&auml;utert, wie man eine Tabelle als Datensatzquelle zuweist und Steuerelemente zum Formular hinzuf&uuml;gt, mit denen Du die Daten der Felder der zugrunde liegenden Tabelle anzeigen kannst.<\/p>\n<p>Dabei geschieht Einiges im Hintergrund, n&auml;mlich das Anlegen der Bindung der Steuerelemente an die Felder der Datensatzquelle.<\/p>\n<p>Au&szlig;erdem hast Du erfahren, wie wir den Steuerelementnamen anpassen k&ouml;nnen, wie die Beschriftungsfelder mit den Steuerelementen verbunden sind und wie wir die Steuerelemente optisch optimieren k&ouml;nnen.<\/p>\n<p>Schlie&szlig;lich haben wir dieses in wenigen Minuten erstellte Formular ausprobiert, neue Datens&auml;tze angelegt, vorhandene Datens&auml;tze bearbeitet und auch Datens&auml;tze gel&ouml;scht. Wichtig ist dabei, verschiedene M&ouml;glichkeiten zum Initialisieren von Aktionen wie Anlegen oder L&ouml;schen zu kennen, damit man die f&uuml;r sich beste herausfinden kann.<\/p>\n<p>Auch das Speichern oder Verwerfen von &Auml;nderungen ist ein wichtiges Thema. Auf dieses gehen wir in einem weiteren Artikel namens <b>Formulare [basics]: OK- und Abbrechen-Buttons <\/b>(<b>www.access-basics.de\/627<\/b>) noch im Detail ein.<\/p>\n<p>Schlie&szlig;lich zeigen wir im Artikel <b>Formulare [basics]: Detailformulare <\/b>(<b>www.access-basics.de\/628<\/b>), wie man aus dem Formular, das wir in diesem Artikel erstellt haben, ein professionelles Detailformular macht.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>FormulareBasics_Grundlagen.accdb<\/p>\n<p><a href=\"..\/Downloads\/Beispiele\/{8A360AD0-4706-4EE9-A26C-87E2E321C777}\/FormularBasics_EinfacheTabelle.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine der wichtigsten Aufgaben f&uuml;r Formulare ist die Anzeige der Daten eines einzelnen Datensatzes &#8211; und zwar in einer Form, in welcher der Benutzer die Daten komfortabel eingeben kann. Dazu geh&ouml;rt, dass man zun&auml;chst die Tabelle oder Abfrage, deren Daten im Formular erscheinen sollen, als Datensatzquelle angibt. Dann nutzt man die praktische Feldliste, aus der wie alle Felder der Datenquelle einfach in das Formular ziehen kann. Schlie&szlig;lich passen wir die Elemente noch an und erhalten so ein Formular zur Anzeige der Details eines Datensatzes.<\/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":[662023,66032023,44000004],"tags":[],"class_list":["post-55000621","post","type-post","status-publish","format-standard","hentry","category-662023","category-66032023","category-Formulare_fuer_die_Dateneingabe"],"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>Formulare [basics]: Einfache Datens&auml;tze im Detail - Access [basics]<\/title>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Formulare_basics_Einfache_Datensaetze_im_Detail.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Formulare [basics]: Einfache Datens&auml;tze im Detail - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Eine der wichtigsten Aufgaben f&uuml;r Formulare ist die Anzeige der Daten eines einzelnen Datensatzes - und zwar in einer Form, in welcher der Benutzer die Daten komfortabel eingeben kann. Dazu geh&ouml;rt, dass man zun&auml;chst die Tabelle oder Abfrage, deren Daten im Formular erscheinen sollen, als Datensatzquelle angibt. Dann nutzt man die praktische Feldliste, aus der wie alle Felder der Datenquelle einfach in das Formular ziehen kann. Schlie&szlig;lich passen wir die Elemente noch an und erhalten so ein Formular zur Anzeige der Details eines Datensatzes.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Formulare_basics_Einfache_Datensaetze_im_Detail.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2023-06-01T00:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/4173a2945ea848c88c019585d04b2241\" \/>\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\/Formulare_basics_Einfache_Datensaetze_im_Detail.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"http:\/\/vg07.met.vgwort.de\/na\/4173a2945ea848c88c019585d04b2241\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Formulare_basics_Einfache_Datensaetze_im_Detail.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Formulare_basics_Einfache_Datensaetze_im_Detail.html\",\"name\":\"Formulare [basics]: Einfache Datens&auml;tze im Detail - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Formulare_basics_Einfache_Datensaetze_im_Detail.html#primaryimage\"},\"datePublished\":\"2023-06-01T00:00:00+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Formulare_basics_Einfache_Datensaetze_im_Detail.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Formulare_basics_Einfache_Datensaetze_im_Detail.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Formulare_basics_Einfache_Datensaetze_im_Detail.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\/Formulare_basics_Einfache_Datensaetze_im_Detail.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Formulare_basics_Einfache_Datensaetze_im_Detail.html\",\"name\":\"Formulare [basics]: Einfache Datens&auml;tze im Detail\"}}]},{\"@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\/55000621","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=55000621"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000621\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000621"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000621"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000621"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}