{"id":55001128,"date":"2018-06-01T00:00:00","date_gmt":"2020-05-13T21:19:19","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1128"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Loeschen_in_Formularen_Ereignisse","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Loeschen_in_Formularen_Ereignisse\/","title":{"rendered":"L&ouml;schen in Formularen: Ereignisse"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg06.met.vgwort.de\/na\/980bb21ea06d4aa0bb7a717354f35e31\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Das L&ouml;schen von Datens&auml;tzen in einem Formular ist eigentlich kein gro&szlig;es Problem: Man markiert den Datensatz &uuml;ber den Datensatzmarkierer und klickt auf die Entfernen-Taste. Manch ein Benutzer verzweifelt vielleicht daran, den Datensatz &uuml;ber den Datensatzmarkierer zu selektieren, weshalb er ihn dann nicht l&ouml;schen kann &#8211; dann baut man ihm halt eine Schaltfl&auml;che, die auch den Datensatz l&ouml;scht, der aktuell den Fokus hat. Was aber, wenn wir noch Aktionen durchf&uuml;hren wollen, bevor der Datensatz gel&ouml;scht wird &#8211; beispielsweise das Archivieren des Datensatzes oder das Ausf&uuml;hren weiterer Aktionen nach dem L&ouml;schen Wie das funktioniert und was Sie beachten m&uuml;ssen, zeigt der vorliegende Beitrag.<\/b><\/p>\n<p>Als Beispiel greifen wir die Datenbank aus dem Beitrag <b>Reihenfolge einfach festlegen <\/b>auf (<b>www.access-im-unternehmen.de\/1129<\/b>). Hier verwenden wir ein Formular mit einem Unterformular, um die Daten der Tabelle <b>tblArtikel <\/b>in der Datenblattansicht anzuzeigen.<\/p>\n<h2>Ereignisse beim L&ouml;schen<\/h2>\n<p>Beim L&ouml;schen eines Datensatzes in einem Formular werden verschiedene Ereignisse ausgel&ouml;st. Wenn wir im Eigenschaftsfenster des Unterformulars zum Bereich Ereignis wechseln, finden wir einige Ereignisse, die m&ouml;glicherweise in Zusammenhang mit dem L&ouml;schen eines Datensatzes ausgel&ouml;st werden. Genau das wollen wir untersuchen, also legen wir f&uuml;r die in Bild 1 mit dem Wert <b>[Ereignisprozedur] <\/b>versehenen Eigenschaften entsprechende Ereignisprozeduren an.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_03\/pic_1128_001.png\" alt=\"Ereignisse, die m&ouml;glicherweise beim L&ouml;schen ausgel&ouml;st werden\" width=\"424,7115\" height=\"438,1945\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Ereignisse, die m&ouml;glicherweise beim L&ouml;schen ausgel&ouml;st werden<\/span><\/b><\/p>\n<p>Die dadurch automatisch im Klassenmodul des entsprechenden Formulars angelegten Ereignisprozeduren statten wir mit jeweils einer <b>Debug.Print<\/b>-Anweisung aus, welche lediglich den Namen der Ereignisprozedur im Direktfenster ausgibt.<\/p>\n<p>Die Prozeduren sehen dann wie folgt aus:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_AfterDelConfirm(Status<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Debug.Print<\/span> \"AfterDelConfirm\"\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_AfterUpdate()\r\n     <span style=\"color:blue;\">Debug.Print<\/span> \"AfterUpdate\"\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_BeforeDelConfirm(Cancel<span style=\"color:blue;\"> As Integer<\/span>, _\r\n         Response<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Debug.Print<\/span> \"BeforeDelConfirm\"\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_BeforeUpdate(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Debug.Print<\/span> \"BeforeUpdate\"\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_Current()\r\n     <span style=\"color:blue;\">Debug.Print<\/span> \"Current\"\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_Delete(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Debug.Print<\/span> \"Delete\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Wenn Sie nun einen Datensatz im Unterformular markieren und diesen mit der <b>Entf<\/b>-Taste oder dem entsprechenden Ribbon-Eintrag l&ouml;schen, erscheint die Meldung aus Bild 2.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_03\/pic_1128_002.png\" alt=\"Meldung beim L&ouml;schen eines Datensatzes\" width=\"700\" height=\"252,182\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Meldung beim L&ouml;schen eines Datensatzes<\/span><\/b><\/p>\n<p>Diese Meldung besagt, dass das L&ouml;schen dieses Datensatzes das L&ouml;schen verkn&uuml;pfter Datens&auml;tze (in diesem Fall aus der Tabelle <b>tblBestelldetails<\/b>) nach sich ziehen w&uuml;rde.<\/p>\n<p>Wenn Sie einen neuen Datensatz in diesem Formular anlegen, der noch keine verkn&uuml;pften Datens&auml;tze in der Tabelle <b>tblBestelldetails<\/b> aufweist und diesen l&ouml;schen, erscheint eine andere Meldung &#8211; n&auml;mlich die aus Bild 3.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_03\/pic_1128_005.png\" alt=\"Meldung beim L&ouml;schen eines nicht mit anderen Datens&auml;tzen in Beziehung stehenden Datensatzes\" width=\"649,559\" height=\"120,0564\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Meldung beim L&ouml;schen eines nicht mit anderen Datens&auml;tzen in Beziehung stehenden Datensatzes<\/span><\/b><\/p>\n<p>Zu diesem Zeitpunkt werfen wir auch einen Blick in den Direktbereich des VBA-Editors. Dieser sieht nun wie in Bild 4 aus. Wir merken uns den aktuellen Zustand und best&auml;tigen die L&ouml;schmeldung mit einem Klick auf die Schaltfl&auml;che <b>Ja<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_03\/pic_1128_003.png\" alt=\"Der Direktbereich mitten in einem L&ouml;schvorgang\" width=\"499,6607\" height=\"162,6802\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Der Direktbereich mitten in einem L&ouml;schvorgang<\/span><\/b><\/p>\n<p>Im Direktbereich sieht es dann wie folgt aus, wobei wir den Zeitpunkt der Anzeige der L&ouml;schmeldung hier durch einen entsprechenden Kommentar eingef&uuml;gt haben:<\/p>\n<pre>Delete\r\nCurrent\r\nBeforeDelConfirm\r\n''''Meldung\r\nAfterDelConfirm<\/pre>\n<p>Beim L&ouml;schen werden also vier Ereignisse ausgel&ouml;st:<\/p>\n<ul>\n<li><b>Beim L&ouml;schen<\/b><\/li>\n<li><b>Beim Anzeigen<\/b><\/li>\n<li><b>Vor L&ouml;schbest&auml;tigung<\/b><\/li>\n<li><b>Vor L&ouml;schbest&auml;tigung<\/b><\/li>\n<\/ul>\n<p>Wenn wir beim Erscheinen des Meldungsfensters nicht auf <b>Ja<\/b>, sondern auf <b>Nein <\/b>klicken, l&ouml;st dies noch ein Ereignis mehr aus:<\/p>\n<pre>Delete\r\nCurrent\r\nBeforeDelConfirm\r\nCurrent\r\nAfterDelConfirm<\/pre>\n<p>Das <b>Current<\/b>-Ereignis (<b>Beim Anzeigen<\/b>) wird hier ausgel&ouml;st, weil der Datensatzzeiger wieder auf den zu l&ouml;schenden Datensatz eingestellt wird.<\/p>\n<h2>L&ouml;schbest&auml;tigung deaktivieren<\/h2>\n<p>Aber gab es da nicht die M&ouml;glichkeit, die L&ouml;schbest&auml;tigung zu deaktivieren und Datens&auml;tze direkt zu l&ouml;schen, wenn man auf die <b>Entf<\/b>-Taste klickt Ja, die gibt es.<\/p>\n<p>Dazu &ouml;ffnen Sie den Optionen-Dialog von Access und wechseln dort zum Bereich <b>Clienteinstellungen<\/b>. Hier finden Sie unter <b>Best&auml;tigen <\/b>drei Optionen: <b>Datensatz&auml;nderungen<\/b>, <b>L&ouml;schen von Dokumenten <\/b>und <b>Aktionsabfragen<\/b> (siehe Bild 5). In unserem Fall ben&ouml;tigen wir die Option <b>Datensatz&auml;nderungen<\/b>, die wir deaktivieren.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_03\/pic_1128_004.png\" alt=\"Einstellungen f&uuml;r verschiedene &auml;nderungen\" width=\"549,6265\" height=\"332,8598\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Einstellungen f&uuml;r verschiedene &auml;nderungen<\/span><\/b><\/p>\n<p>Was geschieht nun im Direktbereich, wenn wir einen Datensatz l&ouml;schen Es werden nur noch die folgenden beiden Ereignisse ausgel&ouml;st:<\/p>\n<pre>Delete\r\nCurrent<\/pre>\n<p>Wann immer wir die Ereignisse mit Prozeduren versehen m&ouml;chten, m&uuml;ssen wir also bei <b>Vor L&ouml;schbest&auml;tigung <\/b>und <b>Nach L&ouml;schbest&auml;tigung <\/b>ber&uuml;cksichtigen, dass diese bei deaktivierter Option <b>Datensatz&auml;nderungen auf dem Client-Rechner <\/b>nicht ausgef&uuml;hrt werden.<\/p>\n<h2>Warnungen per VBA ausschalten<\/h2>\n<p>Wenn Sie die Warnmeldungen unabh&auml;ngig von den Einstellungen auf dem Clientrechner abschalten wollen, etwa um keine Meldung anzuzeigen, k&ouml;nnen Sie die Meldungen auch per VBA deaktivieren.<\/p>\n<p>Dazu rufen Sie einfach die Methode <b>SetWarnings <\/b>des <b>DoCmd<\/b>-Objekts mit dem Parameter <b>False <\/b>auf:<\/p>\n<pre>DoCmd.SetWarnings <span style=\"color:blue;\">False<\/span><\/pre>\n<p>Danach k&ouml;nnen Sie beispielsweise per VBA den Datensatz l&ouml;schen und anschlie&szlig;end die Warnmeldungen wieder aktivieren:<\/p>\n<pre>DoCmd.SetWarnings <span style=\"color:blue;\">True<\/span><\/pre>\n<p>Diese Einstellung hat keinen direkten Einfluss auf die Option <b>Datensatz&auml;nderung<\/b>; das hei&szlig;t, sie &auml;ndert nicht den Wert dieser Option. Sie sorgt vielmehr daf&uuml;r, dass Access zum Beispiel beim Durchf&uuml;hren von &auml;nderungen wie auch beim L&ouml;schen von Daten so tut, als ob der Benutzer f&uuml;r alle angezeigten Warnmeldungen einfach die Eingabetaste bet&auml;tigt. Es wird also jeweils die standardm&auml;&szlig;ige Aktion f&uuml;r die Warnmeldung ausgef&uuml;hrt. Beim L&ouml;schen eines Datensatzes handelt es sich also beispielsweise die als Standard markierte Schaltfl&auml;che <b>Ja <\/b>bet&auml;tigt.<\/p>\n<p>Dies wirkt sich &uuml;brigens auf alle Aktionen aus, die mit einer Meldung reagieren, die lediglich Schaltfl&auml;chen als Reaktionsm&ouml;glichkeit anbieten. Wenn Sie also etwa eine Parameterabfrage nutzen wollen, werden ihre Inputboxen auch bei abgeschalteten Meldungen angezeigt.<\/p>\n<h2>Option per VBA &auml;ndern<\/h2>\n<p>Sie k&ouml;nnen die Option <b>Datensatz&auml;nderungen <\/b>auch per VBA &auml;ndern. Und noch besser: Sie k&ouml;nnen diese sogar abfragen! Dies schauen wir uns zuerst an. Die Methode zum Abfragen vieler der Einstellungen aus dem Optionen-Dialog lautet <b>GetOption<\/b>. Sie erwartet den Namen der englischen Option als Parameter. F&uuml;r die Option <b>Datensatz&auml;nderungen <\/b>hei&szlig;t der Parameter beispielsweise <b>Confirm Record Changes<\/b>. Sie k&ouml;nnen den Wert mit der <b>Debug.Print<\/b>-Methode im Direktbereich des VBA-Editors ausgeben:<\/p>\n<pre><span style=\"color:blue;\">Debug.Print<\/span> GetOption (\"Confirm Record Changes\")\r\n-1 <\/pre>\n<p>Dies liefert bei aktivierter Option beispielsweise den Wert <b>-1<\/b>, also <b>True<\/b>. Nun wollen wir die Option deaktivieren, zun&auml;chst &uuml;ber die Benutzeroberfl&auml;che. Dazu entfernen Sie den Haken von der Option <b>Datensatz&auml;nderungen <\/b>und schlie&szlig;en den Optionen-Dialog wieder. Anschlie&szlig;end fragen wir den Wert der Option erneut &uuml;ber den Direktbereich ab:<\/p>\n<pre><span style=\"color:blue;\">Debug.Print<\/span> GetOption (\"Confirm Record Changes\")\r\n  0 <\/pre>\n<p>Es gelingt &#8211; wir konnten die &auml;nderung erfolgreich per VBA abfragen. Nun wollen wir die Option per VBA wieder aktivieren. Dazu nutzen wir die Anweisung <b>SetOption<\/b>, wieder mit dem Namen der Option als ersten Parameter. Als zweiten Parameter geben wir den festzulegenden Wert an, in diesem Fall <b>True<\/b>:<\/p>\n<pre>SetOption \"Confirm Record Changes\", <span style=\"color:blue;\">True<\/span><\/pre>\n<p>Wenn wir nun erneut den Optionen-Dialog &ouml;ffnen, erhalten wir das Ergebnis aus Bild 6 &#8211; die Option wurde erfolgreich eingestellt. Zum Deaktivieren der Option nutzen wir wieder die folgende Anweisung:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_03\/pic_1128_006.png\" alt=\"Erfolgreich per VBA ge&auml;nderte Option\" width=\"499,6607\" height=\"205,459\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Erfolgreich per VBA ge&auml;nderte Option<\/span><\/b><\/p>\n<pre>SetOption \"Confirm Record Changes\", <span style=\"color:blue;\">False<\/span><\/pre>\n<p>Wenn der Benutzer nun f&uuml;r seine eigenen Anwendungen die Option <b>Datensatz&auml;nderungen<\/b> auf <b>True <\/b>eingestellt haben, Sie aber m&ouml;chten, dass diese Option f&uuml;r einen besseren ergonomischen Ablauf bei der Benutzung Ihrer eigenen Anwendung deaktiviert wird, k&ouml;nnen Sie wie folgt vorgehen:<\/p>\n<p>Legen Sie f&uuml;r die Ereignisprozedur <b>Beim Laden <\/b>eine Prozedur an, welche die Option <b>Confirm Record Changes<\/b> pr&uuml;ft, den Wert in einer Variablen speichert und die Option dann gegebenenfalls auf den Wert <b>False <\/b>einstellt.<\/p>\n<p>Der Benutzer kann dann Datensatz&auml;nderungen durchf&uuml;hren, ohne dass die l&auml;stigen Meldungen angezeigt werden. Beim Schlie&szlig;en des Formulars wird das Ereignis <b>Beim Entladen <\/b>ausgel&ouml;st.<\/p>\n<p>F&uuml;r dieses legen Sie eine weitere Prozedur an, welche den Wert der Option <b>Confirm Record Changes <\/b>wieder auf den beim &ouml;ffnen vorgefundenen Wert einstellt.<\/p>\n<p>Als Erstes ben&ouml;tigen wir dazu eine <b>Boolean<\/b>-Variable, in der wir den Zustand der Option <b>Datensatz&auml;nderungen <\/b>beim &ouml;ffnen des Formulars speichern. Diese deklarieren wir oben im allgemeinen Teil des Klassenmoduls:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>bolConfirmRecordChanges<span style=\"color:blue;\"> As Boolean<\/span><\/pre>\n<p>Die Ereignisprozedur, die durch das Ereignis <b>Beim Laden <\/b>ausgel&ouml;st wird, sieht wie folgt aus:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     bolConfirmRecordChanges = _\r\n         GetOption(\"Confirm Record Changes\")\r\n     <span style=\"color:blue;\">If <\/span>bolConfirmRecordChanges = <span style=\"color:blue;\">True<\/span><span style=\"color:blue;\"> Then<\/span>\r\n         SetOption \"Confirm Record Changes\", <span style=\"color:blue;\">False<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Sie speichert zun&auml;chst den Wert der Option <b>Confirm Record Changes <\/b>in der Variablen <b>bolConfirmRecordChanges<\/b>. Hat diese dann den Wert <b>True<\/b>, stellt sie die Option mit der <b>SetOption<\/b>-Anweisung auf den Wert <b>False <\/b>ein.<\/p>\n<p><!--30percent--><\/p>\n<p>In der Prozedur, die durch das Ereignis <b>Beim Entladen <\/b>ausgel&ouml;st wird, stellen wir die Option dann einfach wieder auf den Wert der Variablen <b>bolConfirmRecordChanges <\/b>ein, den wir beim &ouml;ffnen ermittelt haben, und stellen so den Ausgangszustand wieder her:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Unload(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     SetOption \"Confirm Record Changes\", _\r\n         bolConfirmRecordChanges\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Standardmeldung durch eigene Meldung ersetzen<\/h2>\n<p>Wenn Sie die Anzeige einer Warnmeldung vor dem L&ouml;schen von Datens&auml;tzen beibehalten wollen, aber die standardm&auml;&szlig;ig angezeigte Meldung ersetzen m&ouml;chten, k&ouml;nnen Sie dies auch tun.<\/p>\n<p>Dazu hinterlegen wir eine Prozedur f&uuml;r das Ereignis <b>Vor L&ouml;schbest&auml;tigung<\/b>, die wie in Listing 1 aussieht. Die Prozedur fragt den Benutzer mit einer eigenen Meldung, ob dieser den Datensatz wirklich l&ouml;schen will.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_BeforeDelConfirm(Cancel<span style=\"color:blue;\"> As Integer<\/span>, Response<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>intResult<span style=\"color:blue;\"> As <\/span>VbMsgBoxResult\r\n     intResult = <span style=\"color:blue;\">MsgBox<\/span>(\"M&ouml;chten Sie den Datensatz wirklich l&ouml;schen\", <span style=\"color:blue;\">vbCr<\/span>itical + vbYesNo, \"Datensatz l&ouml;schen\")\r\n     <span style=\"color:blue;\">If <\/span>intResult = vbNo<span style=\"color:blue;\"> Then<\/span>\r\n         Cancel = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     Response = acDataErrContinue\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Anzeigen einer alternativen Meldung beim L&ouml;schen eines Datensatzes<\/span><\/b><\/p>\n<p>Lautet das Ergebnis nein (<b>vbNo<\/b>), stellt die Prozedur den Wert des Parameters <b>Cancel <\/b>auf den Wert <b>True <\/b>ein. Dadurch wird der L&ouml;sch-Vorgang abgebrochen. Damit die eingebaute Standardmeldung unterdr&uuml;ckt wird, legen wir au&szlig;erdem f&uuml;r den Parameter <b>Response <\/b>den Wert <b>acDataErrContinue <\/b>fest. Das Ergebnis sieht nun wie in Bild 7 aus.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_03\/pic_1128_007.png\" alt=\"Eigene Meldung beim L&ouml;schen eines Datensatzes\" width=\"549,6265\" height=\"371,6029\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Eigene Meldung beim L&ouml;schen eines Datensatzes<\/span><\/b><\/p>\n<p>Leider hat Access den Datensatz zu diesem Zeitpunkt bereits aus dem Formular entfernt und der Benutzer kann nicht pr&uuml;fen, ob er wirklich den richtigen Datensatz gel&ouml;scht hat. Wie k&ouml;nnen wir dieses Problem l&ouml;sen<\/p>\n<p>Wir k&ouml;nnten beispielsweise versuchen, den Wert des Feldes <b>Artikelname <\/b>zu ermitteln und diesen in die Meldung einzuarbeiten, damit der Benutzer sieht, welchen Artikel er gerade l&ouml;scht.<\/p>\n<p>Dummerweise k&ouml;nnen wir beim Ausl&ouml;sen der Ereignisprozedur <b>Vor L&ouml;schbest&auml;tigung <\/b>nicht mehr &uuml;ber den Bezug <b>Me!Artikelname <\/b>auf den Artikelnamen zugreifen, da der Datensatz zu diesem Zeitpunkt schon nicht mehr im Formular angezeigt wird. Der Datensatzzeiger zeigt hier auf den leeren, neuen Datensatz und <b>Me!Artikelname <\/b>liefert den Wert <b>Null<\/b>.<\/p>\n<p>Aber es gibt ja noch die Ereignisprozedur <b>Beim L&ouml;schen<\/b>. Wird diese ausgel&ouml;st, ist der Datensatz noch sichtbar. Wir k&ouml;nnen also hier beispielsweise den Namen des Artikels in eine Variable schreiben und ihren Inhalt dann in der Ereignisprozedur f&uuml;r <b>Vor L&ouml;schbest&auml;tigung <\/b>auslesen und nutzen.<\/p>\n<p>Die Variable deklarieren wir wie folgt im allgemeinen Teil des Klassenmoduls zum Unterformular:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>strDeleted<span style=\"color:blue;\"> As String<\/span><\/pre>\n<p>Die Ereignisprozedur f&uuml;r das Ereignis <b>Beim L&ouml;schen <\/b>passen wir wie folgt an:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Delete(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     strDeleted = Me!Artikelname\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die <b>MsgBox<\/b>-Anweisung in der Prozedur <b>Form_BeforeDelConfirm <\/b>erweitern wir dann wie folgt um den Namen des zu l&ouml;schenden Artikels:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_BeforeDelConfirm(Cancel<span style=\"color:blue;\"> As Integer<\/span>, _\r\n         Response<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>intResult<span style=\"color:blue;\"> As <\/span>VbMsgBoxResult\r\n     intResult = <span style=\"color:blue;\">MsgBox<\/span>(\"M&ouml;chten Sie den Datensatz \"  & <span style=\"color:blue;\">vbCrLf<\/span> & <span style=\"color:blue;\">vbCrLf<\/span> & \"''''\" & strDeleted & \"''''\"  & <span style=\"color:blue;\">vbCrLf<\/span> & <span style=\"color:blue;\">vbCrLf<\/span> & \"wirklich l&ouml;schen\",  <span style=\"color:blue;\">vbCr<\/span>itical + vbYesNo, \"Datensatz l&ouml;schen\")\r\n     ...\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Das Ergebnis ist die Meldung aus Bild 8, der die Bezeichnung des Artikels in einer eigenen Zeile hervorhebt.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_03\/pic_1128_008.png\" alt=\"Um die Bezeichnung des zu l&ouml;schenden Artikels erweiterte L&ouml;schbest&auml;tigung\" width=\"299,7964\" height=\"209,2918\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 8: Um die Bezeichnung des zu l&ouml;schenden Artikels erweiterte L&ouml;schbest&auml;tigung<\/span><\/b><\/p>\n<h2>L&ouml;schbest&auml;tigung bei angezeigtem Datensatz<\/h2>\n<p>Wie so oft gibt es aber in Access verschiedene Methoden, um eine Aufgabe zu l&ouml;sen. Wie w&auml;re es beispielsweise, wenn der Datensatz beim Auftauchen der Meldung zur L&ouml;schbest&auml;tigung noch vorhanden und markiert ist<\/p>\n<p>Dann k&ouml;nnte der Benutzer noch einmal genau auf den Datensatz schauen und sich dann &uuml;berlegen, ob er diesen l&ouml;schen m&ouml;chte. Auch das k&ouml;nnen wir realisieren, denn es gibt ja auch noch die Ereignisprozedur <b>Beim L&ouml;schen<\/b>.<\/p>\n<p>Diese gestalten wir in der Kombination aus dem Hauptformular <b>frmArtikelLoeschen<\/b> und dem Unterformular <b>sfmArtikelLoeschen <\/b>wie in Listing 2. Da das Ereignis <b>Beim L&ouml;schen <\/b>direkt nach dem Bet&auml;tigen der <b>Entf<\/b>-Taste beziehungsweise des entsprechenden Ribbon-Befehls, aber vor dem Entfernen des Datensatzes ausgef&uuml;hrt wird, ist der zu l&ouml;schende Datensatz zu diesem Zeitpunkt noch sichtbar.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Delete(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>intResult<span style=\"color:blue;\"> As <\/span>VbMsgBoxResult\r\n     intResult = <span style=\"color:blue;\">MsgBox<\/span>(\"M&ouml;chten Sie den markierten Datensatz wirklich l&ouml;schen\", <span style=\"color:blue;\">vbCr<\/span>itical + vbYesNo, _\r\n         \"Datensatz l&ouml;schen\")\r\n     <span style=\"color:blue;\">If <\/span>intResult = vbNo<span style=\"color:blue;\"> Then<\/span>\r\n         Cancel = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Anzeigen einer alternativen Meldung beim L&ouml;schen eines Datensatzes in Form_Delete<\/span><\/b><\/p>\n<p>Au&szlig;erdem ist der zu l&ouml;schende Datensatz auch noch markiert, was den Bedienkomfort maximiert &#8211; siehe auch Bild 9.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_03\/pic_1128_009.png\" alt=\"L&ouml;schbest&auml;tigung bei noch sichtbarem Datensatz\" width=\"549,6265\" height=\"332,3727\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 9: L&ouml;schbest&auml;tigung bei noch sichtbarem Datensatz<\/span><\/b><\/p>\n<p>Um das Beispiel abzurunden, m&uuml;ssen wir nur noch daf&uuml;r sorgen, dass die Meldung, die Access standardm&auml;&szlig;ig anzeigt, unterbunden wird. Dazu nutzen wir wiederum die Prozedur, die durch das Ereignis <b>Vor L&ouml;schbest&auml;tigung <\/b>ausgef&uuml;hrt wird. Hier stellen wir einfach nur den Parameter <b>Response <\/b>auf den Wert <b>acDataErrContinue <\/b>ein:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_BeforeDelConfirm(Cancel<span style=\"color:blue;\"> As Integer<\/span>, _\r\n         Response<span style=\"color:blue;\"> As Integer<\/span>)\r\n     Response = acDataErrContinue\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Standard-L&ouml;schbest&auml;tigung unterbinden, kurze Version<\/h2>\n<p>Daraus k&ouml;nnen wir dann auch noch eine Methode zum Unterbinden der Standard-L&ouml;schbest&auml;tigungen ableiten, ohne dass wir die Option <b>Datensatz&auml;nderungen <\/b>beziehungsweise <b>Confirm Record Changes <\/b>anpassen m&uuml;ssen. Dazu brauchen Sie einfach nur den Parameter <b>Response <\/b>in der Ereignisprozedur <b>Form_BeforeDelConfirm <\/b>auf den Wert <b>acDataErrContinue <\/b>einstellen:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_BeforeDelConfirm(Cancel<span style=\"color:blue;\"> As Integer<\/span>, _\r\n         Response<span style=\"color:blue;\"> As Integer<\/span>)\r\n     Response = acDataErrContinue\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Dieses Beispiel finden Sie in den beiden Formularen <b>frmArtikelLoeschen_II <\/b>und <b>sfmArtikelLoeschen_II<\/b>.<\/p>\n<h2>L&ouml;schen mehrerer Datens&auml;tze gleichzeitig<\/h2>\n<p>Die Vorgehensweise mit dem Verbleib der Anzeige der zu l&ouml;schenden Datens&auml;tze gelingt sogar beim L&ouml;schen mehrerer Datens&auml;tze (siehe Bild 10).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2018_03\/pic_1128_010.png\" alt=\"L&ouml;schbest&auml;tigung beim L&ouml;schen mehrerer Datens&auml;tze\" width=\"499,6607\" height=\"346,2722\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 10: L&ouml;schbest&auml;tigung beim L&ouml;schen mehrerer Datens&auml;tze<\/span><\/b><\/p>\n<p>Allerdings stimmt genau genommen hier der Text der Meldung nicht mehr, denn diese bezieht sich ja nur auf einen einzigen Datensatz. Bekommen wir es der Ordnung halber hier noch hin, den Text auch f&uuml;r mehrere Datens&auml;tze passend zu machen Klar: Man k&ouml;nnte einfach einen Text wie <b>M&ouml;chten Sie den\/die markierten Datens&auml;tze l&ouml;schen <\/b>einsetzen.<\/p>\n<p>Aber das ist uns etwas zu einfach. Au&szlig;erdem zeigt sich bei n&auml;herer Betrachtung, dass die Meldungsbox f&uuml;r jeden zu l&ouml;schenden Datensatz angezeigt wird. Die Ereignisprozedur <b>Form_Delete <\/b>wird also f&uuml;r jeden zu l&ouml;schenden Datensatz einmal aufgerufen.<\/p>\n<p>Also suchen wir einen Weg, wie Sie vor dem L&ouml;schen ermitteln k&ouml;nnen, wie viele Datens&auml;tze der Benutzer im Datenblatt markiert hat und wie Sie daf&uuml;r sorgen, dass die Meldung nur einmal angezeigt wird.<\/p>\n<p>Das Hauptproblem dabei ist nicht, die Meldung abh&auml;ngig von der Anzahl im Singular oder Plural zu definieren, sondern die Begrenzung der Anzeige der Meldung auf ein einziges Mal. Dazu haben wir das Klassenmodul des Unterformulars <b>frmArtikelLoeschen_II <\/b>mit dem Code aus Listing 3 gef&uuml;llt.<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>intLoeschenGesamt<span style=\"color:blue;\"> As Integer<\/span>\r\n<span style=\"color:blue;\">Dim <\/span>intLoeschenAktuell<span style=\"color:blue;\"> As Integer<\/span>\r\n<span style=\"color:blue;\">Dim <\/span>bolNichtLoeschen<span style=\"color:blue;\"> As Boolean<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_BeforeDelConfirm(Cancel<span style=\"color:blue;\"> As Integer<\/span>, Response<span style=\"color:blue;\"> As Integer<\/span>)\r\n     Response = acDataErrContinue\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_Delete(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>intResult<span style=\"color:blue;\"> As <\/span>VbMsgBoxResult\r\n     <span style=\"color:blue;\">Dim <\/span>strMessage<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">If <\/span>intLoeschenAktuell = 0<span style=\"color:blue;\"> Then<\/span>\r\n         intLoeschenGesamt = Me.SelHeight\r\n         <span style=\"color:blue;\">If <\/span>intLoeschenGesamt &gt; Me.Recordset.RecordCount<span style=\"color:blue;\"> Then<\/span>\r\n             intLoeschenGesamt = Me.Recordset.RecordCount\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         intLoeschenAktuell = intLoeschenGesamt\r\n         <span style=\"color:blue;\">If <\/span>intLoeschenGesamt = 1<span style=\"color:blue;\"> Then<\/span>\r\n             strMessage = \"M&ouml;chten Sie den markierten Datensatz wirklich l&ouml;schen\"\r\n         <span style=\"color:blue;\">Else<\/span>\r\n             strMessage = \"M&ouml;chten Sie die \" & intLoeschenGesamt & \" markierten Datens&auml;tze wirklich l&ouml;schen\"\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         intResult = <span style=\"color:blue;\">MsgBox<\/span>(strMessage, <span style=\"color:blue;\">vbCr<\/span>itical + vbYesNo, \"Datensatz l&ouml;schen\")\r\n         <span style=\"color:blue;\">If <\/span>intResult = vbNo<span style=\"color:blue;\"> Then<\/span>\r\n             bolNichtLoeschen = <span style=\"color:blue;\">True<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">If <\/span>intLoeschenAktuell &gt; 0<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">If <\/span>bolNichtLoeschen = <span style=\"color:blue;\">True<\/span><span style=\"color:blue;\"> Then<\/span>\r\n             Cancel = <span style=\"color:blue;\">True<\/span>\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         intLoeschenAktuell = intLoeschenAktuell - 1\r\n         <span style=\"color:blue;\">If <\/span>intLoeschenAktuell = 0<span style=\"color:blue;\"> Then<\/span>\r\n             bolNichtLoeschen = <span style=\"color:blue;\">False<\/span>\r\n             intLoeschenGesamt = 0\r\n         <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: L&ouml;schen eines oder mehrerer Datens&auml;tze<\/span><\/b><\/p>\n<p>Wir ben&ouml;tigen drei Variablen:<\/p>\n<ul>\n<li><b>intLoeschenGesamt <\/b>nimmt die Anzahl der gesamten zu l&ouml;schenden Datens&auml;tze auf.<\/li>\n<li><b>intLoeschenAktuell <\/b>nimmt die Anzahl der Datens&auml;tze auf, die aktuell noch zu l&ouml;schen sind.<\/li>\n<li><b>bolNichtLoeschen <\/b>speichert, ob der Benutzer in der Meldung auf Ja (l&ouml;schen) oder Nein (nicht l&ouml;schen) geklickt hat.<\/li>\n<\/ul>\n<p>Die <b>Form_Delete<\/b>-Ereignisprozedur pr&uuml;ft, ob die Variable <b>intLoeschenAktuell <\/b>den Wert <b>0 <\/b>enth&auml;lt, was der Fall ist, wenn sie bei einem L&ouml;schvorgang von einem oder mehreren Datens&auml;tzen zum ersten Mal aufgerufen wird.<\/p>\n<p>In diesem Fall ermittelt sie die Anzahl der aktuell markierten Datens&auml;tze &uuml;ber die Eigenschaft <b>SelHeight <\/b>des Formulars. Hier lauert die erste Gefahr: Wenn der Benutzer nur einen Teil der Datens&auml;tze markiert hat, liefert <b>SelHeight <\/b>das von uns gew&uuml;nschte Ergebnis. Wenn der Benutzer jedoch alle Datens&auml;tze markiert hat, beispielsweise &uuml;ber die Tastenkombination <b>Strg + A<\/b>, dann markiert Access auch den neuen, leeren Datensatz am Ende der Auswahl. Liegen 77 Datens&auml;tze in der Datenherkunft vor, liefert <b>Me.SelHeight <\/b>dann also den Wert <b>78<\/b>.<\/p>\n<p>Dies m&uuml;ssen wir zun&auml;chst ausschlie&szlig;en. Also vergleicht die Prozedur den Wert von <b>Me.SelHeight <\/b>mit der Anzahl der Datens&auml;tze, die wir mit <b>Me.Recordset.RecordCount <\/b>ermitteln. Ist <b>Me.SelHeight <\/b>gr&ouml;&szlig;er als <b>Me.Recordset.RecordCount<\/b>, hat der Benutzer offensichtlich alle Datens&auml;tze einschlie&szlig;lich des neuen, leeren Datensatzes markiert. In diesem Fall speichern wir in der Variablen <b>intLoeschenGesamt <\/b>die Anzahl der mit <b>Me.Recordset.RecordCount <\/b>ermittelten Datens&auml;tze.<\/p>\n<p>Anschlie&szlig;end stellen wir auch den Wert der Variablen <b>intLoeschenAktuell <\/b>auf den Inhalt von <b>intLoeschenGesamt <\/b>ein, denn noch wurde ja kein Datensatz gel&ouml;scht. <b>intLoeschenGesamt <\/b>und <b>intLoeschenAktuell <\/b>weisen also nach dem ersten Aufruf von <b>Form_Delete <\/b>den gleichen Wert auf, der der Anzahl der markierten Datens&auml;tze entspricht.<\/p>\n<p>Anschlie&szlig;end pr&uuml;fen wir, ob ein oder mehrere Datens&auml;tze gel&ouml;scht werden sollen und speichern in der Variablen <b>strMessage <\/b>die in der L&ouml;schbest&auml;tigung anzuzeigende Meldung.<\/p>\n<p>Im Falle des Wertes <b>1 <\/b>in der Variablen <b>intLoeschenGesamt <\/b>verwenden wir den Singular (<b>M&ouml;chten Sie den markierten Datensatz wirklich l&ouml;schen<\/b>), sonst den Plural (<b>M&ouml;chten Sie die x markierten Datens&auml;tze wirklich l&ouml;schen<\/b>). Dabei bauen wir die Anzahl der zu l&ouml;schenden Datens&auml;tze &uuml;ber die Variable <b>intLoeschenGesamt <\/b>in den Ausdruck ein.<\/p>\n<p>Damit f&uuml;llen wir dann die <b>MsgBox<\/b>-Anweisung, deren Ergebnis (<b>vbYes <\/b>oder <b>vbNo<\/b>) wir in der Variablen <b>intResult <\/b>speichern. Sollte <b>intResult <\/b>danach den Wert <b>vbNo <\/b>enthalten, stellen wir die Variable <b>bolNichtLoeschen <\/b>auf <b>True <\/b>ein.<\/p>\n<p>Das Einstellen auf <b>False <\/b>ist nicht n&ouml;tig, da die Variable mit dem Wert <b>False <\/b>vorbelegt wird und zum Abschluss des L&ouml;schvorgangs auch wieder auf diesen Wert eingestellt wird. Damit ist der Teil der Prozedur abgeschlossen, der nur beim ersten Aufruf durchgef&uuml;hrt wird.<\/p>\n<p>Der folgende Teil hingegen wird bei jedem Aufruf der Ereignisprozedur <b>Form_Delete <\/b>ausgef&uuml;hrt. Er beginnt mit einer <b>If&#8230;Then<\/b>-Bedingung, die pr&uuml;ft, ob <b>intLoeschenAktuell <\/b>einen Wert gr&ouml;&szlig;er als <b>0 <\/b>aufweist. Dies ist beim ersten Aufruf immer der Fall, da <b>intLoeschenAktuell <\/b>dann mindestens den Wert <b>1 <\/b>aufweist &#8211; oder einen gr&ouml;&szlig;eren, falls der Benutzer mehr als einen Datensatz zum L&ouml;schen markiert hat. Innerhalb dieser Bedingung wird der Wert der Variablen <b>intLoeschenAktuell <\/b>f&uuml;r jeden Aufruf um <b>1 <\/b>vermindert, sodass irgendwann <b>intLoeschenAktuell <\/b>gleich <b>0 <\/b>ist.<\/p>\n<p>Ist <b>intLoeschenAktuell <\/b>jedoch gr&ouml;&szlig;er als <b>0<\/b>, pr&uuml;ft die Prozedur innerhalb der <b>If&#8230;Then<\/b>-Bedingung, ob <b>bolNichtLoeschen <\/b>den Wert <b>True <\/b>hat.<\/p>\n<p>Falls ja, wird der Parameter <b>Cancel <\/b>auf <b>True <\/b>eingestellt, was dazu f&uuml;hrt, dass der Datensatz, f&uuml;r den die Ereignisprozedur gerade ausgel&ouml;st wird, nicht gel&ouml;scht wird. Dies gilt dann &uuml;brigens f&uuml;r jeden Aufruf, da die Variable <b>bolNichtLoeschen <\/b>ja nur beim ersten Aufruf eingestellt wird. <\/p>\n<p>Hier wird nun <b>intLoeschenAktuell <\/b>um eins vermindert. Hat <b>intLoeschenAktuell <\/b>danach den Wert <b>0<\/b>, war dies der letzte zu behandelnde Datensatz und wir k&ouml;nnen auch die Variablen <b>bolNichtLoeschen <\/b>auf den Wert <b>False <\/b>und die Variable <b>intLoeschenGesamt <\/b>auf den Wert <b>0 <\/b>zur&uuml;cksetzen. <\/p>\n<h2>Aktion auf jeden Fall nach dem L&ouml;schen ausf&uuml;hren<\/h2>\n<p>Interessant wird es, wenn Sie eine Aktion per VBA-Code ausf&uuml;hren m&ouml;chten, die auf jeden Fall nach dem L&ouml;schen des Datensatzes ausgef&uuml;hrt wird. Das ist kein Problem, solange der Benutzer die Option <b>Best&auml;tigen|Datensatz&auml;nderungen <\/b>aktiviert hat.<\/p>\n<p>In diesem Fall wird nicht nur die Ereignisprozedur <b>Form_Delete <\/b>ausgel&ouml;st, sondern auch die beiden Prozeduren <b>Form_BeforeDelConfirm <\/b>und <b>Form_AfterDelConfirm<\/b>.<\/p>\n<p>Wenn der Benutzer jedoch <b>Best&auml;tigen|Datensatz&auml;nderungen <\/b>deaktiviert hat, werden diese beiden Ereignisse schlicht nicht mehr ausgel&ouml;st! Sollten wir also aufwendigen Code in die beiden Prozeduren geschrieben haben, der vor und nach der L&ouml;schbest&auml;tigung daf&uuml;r sorgt, dass mit dem L&ouml;schen in Zusammenhang stehende Aktionen durchgef&uuml;hrt werden, schauen wir in die R&ouml;hre. Wie also gehen wir damit um Gibt es eine alternative M&ouml;glichkeit, um diesen Code auszuf&uuml;hren &#8211; beispielsweise schon in <b>Form_Delete<\/b> Und was dann, wenn der Benutzer <b>Best&auml;tigen|Datensatz&auml;nderungen <\/b>doch aktiviert hat<\/p>\n<p>Dann gehen wir einfach wie weiter oben beschrieben vor. Dort haben wir beim Laden des Formulars den aktuellen Wert der Option <b>Confirm Record Changes <\/b>erfasst und diese auf <b>True <\/b>eingestellt, falls diese den Wert <b>False <\/b>hatte. In diesem Fall werden die beiden Ereignisse <b>Vor L&ouml;schbest&auml;tigung <\/b>und <b>Nach L&ouml;schbest&auml;tigung <\/b>auf jeden Fall ausgel&ouml;st und wir k&ouml;nnen in <b>Nach L&ouml;schbest&auml;tigung <\/b>den Code einf&uuml;gen, der nach dem L&ouml;schen ausgef&uuml;hrt werden soll. Dies haben wir in den beiden Formularen <b>frmArtikelLoeschen_III <\/b>und <b>sfmArtikelLoeschen_III <\/b>abgebildet. Zusammengefasst sieht dies dann wie folgt aus:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>bolConfirmRecordChanges<span style=\"color:blue;\"> As Boolean<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     bolConfirmRecordChanges = _\r\n         GetOption(\"Confirm Record Changes\")\r\n     <span style=\"color:blue;\">If <\/span>bolConfirmRecordChanges = <span style=\"color:blue;\">False<\/span><span style=\"color:blue;\"> Then<\/span>\r\n         SetOption \"Confirm Record Changes\", <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_AfterDelConfirm(Status<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Debug.Print<\/span> \"AfterDelConfirm\"\r\n     ''''Hier Aktionen, die nach dem L&ouml;schen ausgef&uuml;hrt werden \r\n     ''''sollen\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_BeforeDelConfirm(Cancel<span style=\"color:blue;\"> As Integer<\/span>, _\r\n         Response<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Debug.Print<\/span> \"BeforeDelConfirm\"\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_Delete(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Debug.Print<\/span> \"Delete\"\r\n<span style=\"color:blue;\">End Sub<\/span>\r\n<span style=\"color:blue;\">Private Sub <\/span>Form_Unload(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">If <\/span>bolConfirmRecordChanges = <span style=\"color:blue;\">False<\/span><span style=\"color:blue;\"> Then<\/span>\r\n         SetOption \"Confirm Record Changes, False\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Schlie&szlig;lich m&uuml;ssen wir in der Prozedur, die durch das Ereignis Vor L&ouml;schbest&auml;tigung ausgel&ouml;st wird, pr&uuml;fen, ob der Benutzer die L&ouml;schbest&auml;tigung angezeigt haben m&ouml;chte und diese gegebenenfalls unterdr&uuml;cken:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_BeforeDelConfirm(Cancel<span style=\"color:blue;\"> As Integer<\/span>, _\r\n         Response<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">If <\/span>bolConfirmRecordChanges = <span style=\"color:blue;\">False<\/span><span style=\"color:blue;\"> Then<\/span>\r\n         Response = acDataErrContinue\r\n     <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Dieser Beitrag hat gezeigt, dass ein simpler Tastendruck, wie er f&uuml;r das L&ouml;schen eines markierten Datensatzes ben&ouml;tigt wird, eine ganze Reihe von Ereignissen ausl&ouml;st. Mit diesen k&ouml;nnen Sie den L&ouml;schvorgang auf individuelle Weise anpassen, indem Sie etwa eine eigene Meldung generieren, die statt der Standardmeldung von Access angezeigt werden.<\/p>\n<p>Dabei haben wir noch nicht einmal alle M&ouml;glichkeiten abgedeckt. So werden vom System ja manchmal auch Meldungen angezeigt, die darauf hinweisen, dass ein L&ouml;schen etwa wegen vorhandener verkn&uuml;pfter Datens&auml;tze nicht m&ouml;glich ist. Hier k&ouml;nnen Sie interessanterweise nicht mit den Techniken aus diesem Beitrag eingreifen. Welche M&ouml;glichkeiten Sie hier haben, zeigt der Beitrag <b>L&ouml;schen von in Beziehung stehenden Daten <\/b>(<b>www.access-im-unternehmen.de\/1135<\/b>) in der kommenden Ausgabe.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>LoeschenInFormularen.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/7C986F30-15D8-431B-8B5F-3EDEC6F5186A\/aiu_1128.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das L&ouml;schen von Datens&auml;tzen in einem Formular ist eigentlich kein gro&szlig;es Problem: Man markiert den Datensatz &uuml;ber den Datensatzmarkierer und klickt auf die Entfernen-Taste. Manch ein Benutzer verzweifelt vielleicht daran, den Datensatz &uuml;ber den Datensatzmarkierer zu selektieren, weshalb er ihn dann nicht l&ouml;schen kann &#8211; dann baut man ihm halt eine Schaltfl&auml;che, die auch den Datensatz l&ouml;scht, der aktuell den Fokus hat. Was aber, wenn wir noch Aktionen durchf&uuml;hren wollen, bevor der Datensatz gel&ouml;scht wird &#8211; beispielsweise das Archivieren des Datensatzes oder das Ausf&uuml;hren weiterer Aktionen nach dem L&ouml;schen Wie das funktioniert und was Sie beachten m&uuml;ssen, zeigt der vorliegende Beitrag.<\/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":[662018,66032018,44000023],"tags":[],"class_list":["post-55001128","post","type-post","status-publish","format-standard","hentry","category-662018","category-66032018","category-Mit_Formularen_arbeiten"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>L&ouml;schen in Formularen: Ereignisse - 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\/Loeschen_in_Formularen_Ereignisse\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"L&ouml;schen in Formularen: Ereignisse\" \/>\n<meta property=\"og:description\" content=\"Das L&ouml;schen von Datens&auml;tzen in einem Formular ist eigentlich kein gro&szlig;es Problem: Man markiert den Datensatz &uuml;ber den Datensatzmarkierer und klickt auf die Entfernen-Taste. Manch ein Benutzer verzweifelt vielleicht daran, den Datensatz &uuml;ber den Datensatzmarkierer zu selektieren, weshalb er ihn dann nicht l&ouml;schen kann - dann baut man ihm halt eine Schaltfl&auml;che, die auch den Datensatz l&ouml;scht, der aktuell den Fokus hat. Was aber, wenn wir noch Aktionen durchf&uuml;hren wollen, bevor der Datensatz gel&ouml;scht wird - beispielsweise das Archivieren des Datensatzes oder das Ausf&uuml;hren weiterer Aktionen nach dem L&ouml;schen Wie das funktioniert und was Sie beachten m&uuml;ssen, zeigt der vorliegende Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Loeschen_in_Formularen_Ereignisse\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-13T21:19:19+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg06.met.vgwort.de\/na\/980bb21ea06d4aa0bb7a717354f35e31\" \/>\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=\"21\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Loeschen_in_Formularen_Ereignisse\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Loeschen_in_Formularen_Ereignisse\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"L&ouml;schen in Formularen: Ereignisse\",\"datePublished\":\"2020-05-13T21:19:19+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Loeschen_in_Formularen_Ereignisse\\\/\"},\"wordCount\":3677,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Loeschen_in_Formularen_Ereignisse\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/980bb21ea06d4aa0bb7a717354f35e31\",\"articleSection\":[\"2018\",\"3\\\/2018\",\"Mit Formularen arbeiten\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Loeschen_in_Formularen_Ereignisse\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Loeschen_in_Formularen_Ereignisse\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Loeschen_in_Formularen_Ereignisse\\\/\",\"name\":\"L&ouml;schen in Formularen: Ereignisse - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Loeschen_in_Formularen_Ereignisse\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Loeschen_in_Formularen_Ereignisse\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/980bb21ea06d4aa0bb7a717354f35e31\",\"datePublished\":\"2020-05-13T21:19:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Loeschen_in_Formularen_Ereignisse\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Loeschen_in_Formularen_Ereignisse\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Loeschen_in_Formularen_Ereignisse\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/980bb21ea06d4aa0bb7a717354f35e31\",\"contentUrl\":\"http:\\\/\\\/vg06.met.vgwort.de\\\/na\\\/980bb21ea06d4aa0bb7a717354f35e31\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Loeschen_in_Formularen_Ereignisse\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"L&ouml;schen in Formularen: Ereignisse\"}]},{\"@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":"L&ouml;schen in Formularen: Ereignisse - 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\/Loeschen_in_Formularen_Ereignisse\/","og_locale":"de_DE","og_type":"article","og_title":"L&ouml;schen in Formularen: Ereignisse","og_description":"Das L&ouml;schen von Datens&auml;tzen in einem Formular ist eigentlich kein gro&szlig;es Problem: Man markiert den Datensatz &uuml;ber den Datensatzmarkierer und klickt auf die Entfernen-Taste. Manch ein Benutzer verzweifelt vielleicht daran, den Datensatz &uuml;ber den Datensatzmarkierer zu selektieren, weshalb er ihn dann nicht l&ouml;schen kann - dann baut man ihm halt eine Schaltfl&auml;che, die auch den Datensatz l&ouml;scht, der aktuell den Fokus hat. Was aber, wenn wir noch Aktionen durchf&uuml;hren wollen, bevor der Datensatz gel&ouml;scht wird - beispielsweise das Archivieren des Datensatzes oder das Ausf&uuml;hren weiterer Aktionen nach dem L&ouml;schen Wie das funktioniert und was Sie beachten m&uuml;ssen, zeigt der vorliegende Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/Loeschen_in_Formularen_Ereignisse\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-13T21:19:19+00:00","og_image":[{"url":"http:\/\/vg06.met.vgwort.de\/na\/980bb21ea06d4aa0bb7a717354f35e31","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"21\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Loeschen_in_Formularen_Ereignisse\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Loeschen_in_Formularen_Ereignisse\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"L&ouml;schen in Formularen: Ereignisse","datePublished":"2020-05-13T21:19:19+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Loeschen_in_Formularen_Ereignisse\/"},"wordCount":3677,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Loeschen_in_Formularen_Ereignisse\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/980bb21ea06d4aa0bb7a717354f35e31","articleSection":["2018","3\/2018","Mit Formularen arbeiten"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Loeschen_in_Formularen_Ereignisse\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Loeschen_in_Formularen_Ereignisse\/","url":"https:\/\/access-im-unternehmen.de\/Loeschen_in_Formularen_Ereignisse\/","name":"L&ouml;schen in Formularen: Ereignisse - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Loeschen_in_Formularen_Ereignisse\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Loeschen_in_Formularen_Ereignisse\/#primaryimage"},"thumbnailUrl":"http:\/\/vg06.met.vgwort.de\/na\/980bb21ea06d4aa0bb7a717354f35e31","datePublished":"2020-05-13T21:19:19+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Loeschen_in_Formularen_Ereignisse\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Loeschen_in_Formularen_Ereignisse\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Loeschen_in_Formularen_Ereignisse\/#primaryimage","url":"http:\/\/vg06.met.vgwort.de\/na\/980bb21ea06d4aa0bb7a717354f35e31","contentUrl":"http:\/\/vg06.met.vgwort.de\/na\/980bb21ea06d4aa0bb7a717354f35e31"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Loeschen_in_Formularen_Ereignisse\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"L&ouml;schen in Formularen: Ereignisse"}]},{"@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\/55001128","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=55001128"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001128\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001128"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}