{"id":55001630,"date":"2026-12-01T00:00:00","date_gmt":"2026-11-09T18:54:13","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1630"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/","title":{"rendered":"Vereinsverwaltung: Mitglieder, Bankverbindungen und Mandate"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg01.met.vgwort.de\/na\/362ebf766fe945568e127f279422f4f3\" width=\"1\" height=\"1\" alt=\"\"><b>Eine IBAN mit falscher Pr&uuml;fziffer f&auml;llt meist erst auf, wenn die Bank die Lastschriftdatei zur&uuml;ckweist. Dann ist der Einzug bereits verz&ouml;gert. Wir pr&uuml;fen die IBAN deshalb schon bei der Eingabe, bilden die Mandatsreferenz per Funktion und leiten den Folgetyp aus den bisherigen Lastschriften ab. Wie das in einem Formular f&uuml;r Mitglieder, Bankverbindungen und Mandate gelingt, zeigt der vorliegende Beitrag.<\/b><\/p>\n<h2>Das Formular im &Uuml;berblick<\/h2>\n<p>Die Beispieldatenbank <b>VereinsverwaltungMitgliederUndMandate.accdb<\/b> baut auf der Datenbank aus dem Beitrag <b>Vereinsverwaltung: Datenmodell (www.access-im-unternehmen.de\/1629)<\/b> auf.<\/p>\n<p>Kopieren Sie diese Datenbank und nennen Sie die Kopie <b>VereinsverwaltungMitgliederUndMandate.accdb<\/b>.<\/p>\n<p>Das Hauptformular <b>frmMitglieder<\/b> zeigt eine Person mit ihren Stammdaten. Darunter stehen zwei Unterformulare, die wir mit dem Pr&auml;fix <b>sfm<\/b> kennzeichnen: <b>sfmMitgliedschaften<\/b> zeigt die Mitgliedschaften der Person, <b>sfmBankverbindungen<\/b> ihre Bankverbindungen.<\/p>\n<p>Das Unterformular <b>sfmBankverbindungen<\/b> enth&auml;lt wiederum das Unterformular <b>sfmMandate<\/b> mit den Mandaten zur Bankverbindung (siehe Bild 1).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_06\/pic_1630_001.png\" alt=\"Das Formular frmMitglieder\" width=\"649,559\" height=\"597,2035\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Das Formular frmMitglieder<\/span><\/b><\/p>\n<p>Wir bauen die Formulare von innen nach au&szlig;en auf.<\/p>\n<p>Zuerst legen wir die Funktionen und Hilfsprozeduren an, die wir im Beitrag verwenden. Danach erstellen wir die Unterformulare <b>sfmMandate<\/b>, <b>sfmMitgliedschaften<\/b> und <b>sfmBankverbindungen<\/b> und zuletzt das Hauptformular <b>frmMitglieder<\/b>.<\/p>\n<h2>Die Funktionen vorbereiten<\/h2>\n<p>Die Formulare rufen Funktionen auf, die in Standardmodulen enthalten sind. Die Pr&uuml;fung der IBAN &uuml;bernimmt die Funktion <b>IstIban<\/b>.<\/p>\n<p>Sie stammt aus dem Beitrag <b>Pr&uuml;fziffern per VBA berechnen und pr&uuml;fen (www.access-im-unternehmen.de\/1618)<\/b>. W&auml;hlen Sie <b>Externe Daten|Neue Datenquelle|Aus Datenbank|Access<\/b> und importieren Sie aus der Beispieldatenbank dieses Beitrags die Module <b>mdlPruefziffern<\/b> und <b>mdlRegEx<\/b> in Ihre Datenbank.<\/p>\n<p>Die Funktion <b>IstIban<\/b> akzeptiert die IBAN mit und ohne Leerzeichen.<\/p>\n<p>Die weiteren Funktionen legen Sie in einem neuen Standardmodul an, das Sie <b>mdlMandate<\/b> nennen. Die erste Funktion, <b>NeueMandatsreferenz<\/b>, bildet die Mandatsreferenz wie in den Beispieldaten aus dem Buchstaben <b>M<\/b>, dem Jahr der Unterschrift, einem Bindestrich (<b>&#8211;<\/b>) und der vierstellig aufgef&uuml;llten <b>PersonID<\/b> (siehe Listing 1).<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>NeueMandatsreferenz(ByVal lngPersonID<span style=\"color:blue;\"> As Long<\/span>, ByVal datUnterschrift<span style=\"color:blue;\"> As Date<\/span>)<span style=\"color:blue;\"> As String<\/span>\r\n    ' Bildet die Referenz aus Jahr und PersonID, bei einer Kollision mit Zaehler\r\n    <span style=\"color:blue;\">Dim <\/span>strBasis<span style=\"color:blue;\"> As String<\/span>\r\n    <span style=\"color:blue;\">Dim <\/span>strReferenz<span style=\"color:blue;\"> As String<\/span>\r\n    <span style=\"color:blue;\">Dim <\/span>lngZaehler<span style=\"color:blue;\"> As Long<\/span>\r\n    strBasis = \"M\" & Year(datUnterschrift) & \"-\" & Format(lngPersonID, \"0000\")\r\n    strReferenz = strBasis\r\n    <span style=\"color:blue;\">Do While<\/span> DCount(\"*\", \"tblMandate\", \"Mandatsreferenz='\" & strReferenz & \"'\") &gt; 0\r\n        lngZaehler = lngZaehler + 1\r\n        strReferenz = strBasis & \"-\" & lngZaehler\r\n    <span style=\"color:blue;\">Loop<\/span>\r\n    NeueMandatsreferenz = strReferenz\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Eine eindeutige Mandatsreferenz bilden<\/span><\/b><\/p>\n<p>Die Funktion pr&uuml;ft mit <b>DCount<\/b>, ob die Referenz bereits in der Tabelle <b>tblMandate<\/b> steht.<\/p>\n<p>Falls ja, h&auml;ngt sie einen Z&auml;hler an und pr&uuml;ft erneut. Die Referenz besteht nur aus Jahr und <b>PersonID<\/b>.<\/p>\n<p>Legt eine Person im selben Jahr ein zweites Mandat an, w&uuml;rde der eindeutige Index <b>idxMandatsreferenz<\/b> den doppelten Wert mit einem Fehler zur&uuml;ckweisen.<\/p>\n<p>Die Z&auml;hlung vermeidet diesen Fehler. Im Direktbereich des VBA-Editors sehen wir die Referenzen f&uuml;r zwei Unterschriftsdaten.<\/p>\n<p>Die Datumsangaben stehen dort im amerikanischen Format, <b>#3\/5\/2027#<\/b> ist der 5. M&auml;rz 2027:<\/p>\n<pre><span style=\"color:blue;\">Debug.Print<\/span> NeueMandatsreferenz(1, #3\/5\/2027#)\r\nM2027-0001\r\n<span style=\"color:blue;\">Debug.Print<\/span> NeueMandatsreferenz(1, #10\/1\/2019#)\r\nM2019-0001-1<\/pre>\n<p>In den Beispieldaten hat die Person mit der <b>PersonID<\/b> <b>1<\/b> bereits die Referenz <b>M2019-0001<\/b>. Im Jahr <b>2027<\/b> ist <b>M2027-0001<\/b> frei.<\/p>\n<p>Im Jahr <b>2019<\/b> erg&auml;nzt die Funktion deshalb den Z&auml;hler <b>1<\/b>.<\/p>\n<p>Die zweite Funktion, <b>Folgetyp<\/b>, leitet den Folgetyp eines Mandats aus den bisherigen Lastschriften ab (siehe Listing 2).<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>Folgetyp(ByVal lngMandatID<span style=\"color:blue;\"> As Long<\/span>)<span style=\"color:blue;\"> As String<\/span>\r\n    ' Leitet den Folgetyp aus den eingereichten Laeufen ab\r\n    <span style=\"color:blue;\">Dim <\/span>strBedingung<span style=\"color:blue;\"> As String<\/span>\r\n    <span style=\"color:blue;\">If <\/span>DLookup(\"Mandatsart\", \"tblMandate\", \"MandatID=\" & lngMandatID) = \"Einmalig\"<span style=\"color:blue;\"> Then<\/span>\r\n        Folgetyp = \"OOFF\"\r\n        <span style=\"color:blue;\">Exit Function<\/span>\r\n    <span style=\"color:blue;\">End If<\/span>\r\n    strBedingung = \"MandatID=\" & lngMandatID & \" AND LaufID IN \" & _\r\n        \"(SELECT LaufID FROM tblLastschriftlaeufe WHERE Status='Eingereicht')\"\r\n    <span style=\"color:blue;\">If <\/span>DCount(\"*\", \"tblLastschriftpositionen\", strBedingung) = 0<span style=\"color:blue;\"> Then<\/span>\r\n        Folgetyp = \"FRST\"\r\n    <span style=\"color:blue;\">Else<\/span>\r\n        Folgetyp = \"RCUR\"\r\n    <span style=\"color:blue;\">End If<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Den Folgetyp eines Mandats ableiten<\/span><\/b><\/p>\n<p>Wir speichern ihn nicht, sondern berechnen ihn bei Bedarf. Er kennzeichnet in der Lastschriftdatei die erste (<b>FRST<\/b>), eine wiederkehrende (<b>RCUR<\/b>) oder eine einmalige Lastschrift (<b>OOFF<\/b>).<\/p>\n<p>Hat das Mandat die Mandatsart <b>Einmalig<\/b>, liefert die Funktion <b>OOFF<\/b>. Andernfalls z&auml;hlt sie die Positionen in der Tabelle <b>tblLastschriftpositionen<\/b>, die zu diesem Mandat geh&ouml;ren und deren Lastschriftlauf (Tabelle <b>tblLastschriftlaeufe<\/b>) den Status <b>Eingereicht<\/b> hat.<\/p>\n<p>Gibt es keine, liefert sie <b>FRST<\/b>. Gibt es mindestens eine, liefert sie <b>RCUR<\/b>.<\/p>\n<p>Ein Lastschriftlauf mit dem Status <b>Angelegt<\/b> z&auml;hlt nicht, denn die Bank hat die Lastschriften noch nicht erhalten.<\/p>\n<p>Die Beispieldatenbank enth&auml;lt noch keinen Lauf. Die Prozedur <b>BeispiellaufAnlegen<\/b> erzeugt einen Lastschriftlauf mit dem Status <b>Eingereicht<\/b> und f&uuml;nf Positionen f&uuml;r die ersten f&uuml;nf Mandate.<\/p>\n<p>Sie steht zusammen mit der Prozedur <b>BeispiellaufLoeschen<\/b> im Modul <b>mdlMandate<\/b> der Beispieldatenbank. Wir vergleichen den Folgetyp vorher und nachher im Direktbereich:<\/p>\n<pre><span style=\"color:blue;\">Debug.Print<\/span> Folgetyp(1)\r\nFRST\r\nBeispiellaufAnlegen\r\n<span style=\"color:blue;\">Debug.Print<\/span> Folgetyp(1)\r\nRCUR\r\n<span style=\"color:blue;\">Debug.Print<\/span> Folgetyp(6)\r\nFRST<\/pre>\n<p>Das Mandat mit der <b>MandatID<\/b> <b>1<\/b> hat nach dem Lauf den Folgetyp <b>RCUR<\/b>. Das Mandat mit der <b>MandatID<\/b> <b>6<\/b> geh&ouml;rt nicht zum Lauf, daher bleibt sein Folgetyp <b>FRST<\/b>.<\/p>\n<p>Rufen Sie danach die Prozedur <b>BeispiellaufLoeschen<\/b> auf, damit die Beispieldaten wieder dem Ausgangszustand entsprechen.<\/p>\n<p>Die dritte Funktion, <b>HatGueltigesMandat<\/b>, ermittelt, ob eine Person f&uuml;r den Einzug infrage kommt (siehe Listing 3).<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>HatGueltigesMandat(ByVal lngPersonID<span style=\"color:blue;\"> As Long<\/span>)<span style=\"color:blue;\"> As Boolean<\/span>\r\n    ' Liefert, ob die Person mindestens ein aktives Mandat besitzt\r\n    HatGueltigesMandat = (DCount(\"*\", \"qryMandateUebersicht\", \"PersonID=\" & lngPersonID & \" AND Status='Aktiv'\") &gt; 0)\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Pr&uuml;fen, ob eine Person ein aktives Mandat hat<\/span><\/b><\/p>\n<p>Die Formulare in diesem Beitrag ben&ouml;tigt diese Funktion nicht. Sie dienen sp&auml;ter dazu, die Personen f&uuml;r die Lastschriftdatei auszuw&auml;hlen.<\/p>\n<p>Diesen Schritt behandeln wir in einem Folgebeitrag.<\/p>\n<p>Die Funktion z&auml;hlt in der Abfrage <b>qryMandateUebersicht<\/b> die Mandate der Person mit dem Status <b>Aktiv<\/b>. In den Beispieldaten liefert sie f&uuml;r die Person mit der <b>PersonID<\/b> <b>1<\/b> den Wert <b>Wahr<\/b>.<\/p>\n<h2>Das Unterformular sfmMandate<\/h2>\n<p>Das Unterformular <b>sfmMandate<\/b> zeigt die Mandate einer Bankverbindung in einer Liste mit einer Zeile je Mandat (siehe Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_06\/pic_1630_002.png\" alt=\"Das Unterformular sfmMandate in der Entwurfsansicht\" width=\"700\" height=\"283,3682\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Das Unterformular sfmMandate in der Entwurfsansicht<\/span><\/b><\/p>\n<p>Wir bauen es wie folgt Schritt f&uuml;r Schritt auf:<\/p>\n<ul>\n<li>W&auml;hlen Sie <b>Erstellen|Formularentwurf<\/b>. Blenden Sie bei Bedarf mit <b>Formularentwurf|Eigenschaftenblatt<\/b> das Eigenschaftenblatt ein.<\/li>\n<li>Markieren Sie im Eigenschaftenblatt oben im Auswahlfeld den Eintrag <b>Formular<\/b>. Stellen Sie auf der Registerkarte <b>Daten<\/b> die Eigenschaft <b>Datensatzquelle<\/b> auf <b>tblMandate<\/b> ein. Auf der Registerkarte <b>Format<\/b> w&auml;hlen Sie bei <b>Standardansicht<\/b> den Eintrag <b>Endlosformular<\/b>. Die Eigenschaften <b>Navigationsschaltfl&auml;chen<\/b> und <b>Datensatzmarkierer<\/b> setzen Sie auf <b>Nein<\/b>, die Eigenschaft <b>Bildlaufleisten<\/b> auf <b>Nur vertikal<\/b>.<\/li>\n<li>Blenden Sie &uuml;ber das Kontextmen&uuml; des Formularentwurfs den <b>Formularkopf\/-fu&szlig;<\/b> ein. &Ouml;ffnen Sie mit <b>Formularentwurf|Vorhandene Felder hinzuf&uuml;gen<\/b> die Feldliste und ziehen Sie die Felder <b>Mandatsreferenz<\/b>, <b>Unterschriftsdatum<\/b>, <b>Mandatsart<\/b> und <b>Status<\/b> in den Detailbereich, nebeneinander in einer Zeile. Ordnen Sie die Textfelder nebeneinander an und geben Sie ihnen passende Breiten.<\/li>\n<li>Markieren Sie die vier Bezeichnungsfelder, schneiden Sie sie mit <b>Strg + X<\/b> aus, klicken Sie in den Formularkopf und f&uuml;gen Sie sie mit <b>Strg + V<\/b> ein. Die Bezeichnungsfelder dienen jetzt als Spalten&uuml;berschriften. Richten Sie die Bezeichnungsfelder im Formularkopf &uuml;ber den zugeh&ouml;rigen Textfeldern aus. &Auml;ndern Sie die Beschriftung des Bezeichnungsfeldes <b>Unterschriftsdatum<\/b> in <b>Unterschrift<\/b> und stellen Sie bei allen Bezeichnungsfeldern die Eigenschaft <b>Schriftschnitt<\/b> auf <b>Fett<\/b> ein.<\/li>\n<li>Benennen Sie die Textfelder &uuml;ber die Eigenschaft <b>Name<\/b> auf der Registerkarte <b>Andere<\/b>: <b>txtMandatsreferenz<\/b> und <b>txtUnterschriftsdatum<\/b>. Das Textfeld <b>txtMandatsreferenz<\/b> erh&auml;lt die Eigenschaft <b>Gesperrt<\/b> mit dem Wert <b>Ja<\/b>, denn der Benutzer soll die Referenz nicht &auml;ndern. Das Textfeld <b>txtUnterschriftsdatum<\/b> erh&auml;lt bei <b>Format<\/b> den Wert <b>Datum, kurz<\/b> und bei <b>Standardwert<\/b> den Ausdruck <b>=Datum()<\/b>.<\/li>\n<li>Wandeln Sie die Textfelder <b>Mandatsart<\/b> und <b>Status<\/b> &uuml;ber das Kontextmen&uuml; mit <b>&Auml;ndern in|Kombinationsfeld<\/b> in Kombinationsfelder um und benennen Sie sie <b>cboMandatsart<\/b> und <b>cboStatus<\/b>. Stellen Sie bei beiden die Eigenschaft <b>Herkunftsart<\/b> auf <b>Wertliste<\/b> ein. Die Eigenschaft <b>Datensatzherkunft<\/b> lautet bei <b>cboMandatsart<\/b> <b>Wiederkehrend;Einmalig<\/b> und bei <b>cboStatus<\/b> <b>Aktiv;Gesperrt;Widerrufen<\/b>. Die Eintr&auml;ge trennen Sie mit dem Semikolon (<b>;<\/b>).<\/li>\n<li>F&uuml;gen Sie rechts daneben ein ungebundenes Textfeld ein und benennen Sie es <b>txtFolgetyp<\/b>. Schneiden Sie das zugeh&ouml;rige Bezeichnungsfeld aus, f&uuml;gen Sie es in den Formularkopf ein und &auml;ndern Sie die Beschriftung in <b>Folgetyp<\/b>. Setzen Sie <b>Gesperrt<\/b> auf <b>Ja<\/b> und tragen Sie bei <b>Steuerelementinhalt<\/b> den folgenden Ausdruck ein. In der deutschen Oberfl&auml;che geben Sie dabei die Funktionsnamen auf Deutsch ein:<\/li>\n<\/ul>\n<pre>=Wenn(IstNull([MandatID]);Null;Folgetyp([MandatID]))<\/pre>\n<ul>\n<li>F&uuml;gen Sie rechts davon eine Schaltfl&auml;che ein, ohne den Assistenten zu verwenden. Benennen Sie sie <b>btnSperren<\/b> und geben Sie ihr die Beschriftung <b>Sperren<\/b>.<\/li>\n<\/ul>\n<p>Der Ausdruck f&uuml;r das Textfeld <b>txtFolgetyp<\/b> ruft die Funktion <b>Folgetyp<\/b> aus <b>mdlMandate<\/b> auf. Die Fallunterscheidung mit <b>Wenn<\/b> ist n&ouml;tig, weil die Zeile f&uuml;r ein neues Mandat noch keine <b>MandatID<\/b> hat. Ohne sie zeigt das Textfeld in dieser Zeile den Fehlerwert <b>#Typ!<\/b>.<\/p>\n<p>Jetzt erg&auml;nzen wir den Code. W&auml;hlen Sie im Eigenschaftenblatt f&uuml;r das Formular auf der Registerkarte <b>Ereignis<\/b> bei <b>Vor Aktualisierung<\/b> den Eintrag <b>[Ereignisprozedur]<\/b> und klicken Sie auf die Schaltfl&auml;che mit den drei Punkten.<\/p>\n<p>Access &ouml;ffnet den VBA-Editor mit dem Rahmen der Prozedur. Vervollst&auml;ndigen Sie die Prozedur wie in Listing 4.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_BeforeUpdate(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n    ' Neue Mandate erhalten automatisch eine Referenz\r\n    <span style=\"color:blue;\">If <\/span>IsNull(Me.Mandatsreferenz)<span style=\"color:blue;\"> Then<\/span>\r\n        Me.Mandatsreferenz = NeueMandatsreferenz( _\r\n            DLookup(\"PersonID\", \"tblBankverbindungen\", _\r\n            \"BankverbindungID=\" & Me.BankverbindungID), Nz(Me.Unterschriftsdatum, Date))\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 4: Neuen Mandaten die Referenz zuweisen<\/span><\/b><\/p>\n<p>Die Prozedur l&auml;uft vor dem Speichern eines Datensatzes.<\/p>\n<p>Ist das Feld <b>Mandatsreferenz<\/b> leer, ermittelt sie mit <b>DLookup<\/b> die <b>PersonID<\/b> der Bankverbindung und &uuml;bergibt sie mit dem Datum der Unterschrift an die Funktion <b>NeueMandatsreferenz<\/b>.<\/p>\n<p>Das Feld <b>BankverbindungID<\/b> f&uuml;llt Access &uuml;ber die Verkn&uuml;pfung zum &uuml;bergeordneten Formular <b>sfmBankverbindungen<\/b> aus. F&uuml;r die Schaltfl&auml;che w&auml;hlen Sie im Eigenschaftenblatt bei <b>Beim Klicken<\/b> ebenfalls <b>[Ereignisprozedur]<\/b>. Die Prozedur setzt den Status des aktuellen Mandats auf <b>Gesperrt<\/b> und speichert den Datensatz:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>btnSperren_Click()\r\n    ' Sperrt das aktuelle Mandat\r\n    Me.Status = \"Gesperrt\"\r\n    Me.Dirty = <span style=\"color:blue;\">False<\/span>\r\n    Me.cboStatus.Requery\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Speichern Sie das Formular unter dem Namen <b>sfmMandate<\/b>.<\/p>\n<h2>Das Unterformular sfmMitgliedschaften<\/h2>\n<p>Das Unterformular <b>sfmMitgliedschaften<\/b> zeigt die Mitgliedschaften einer Person (siehe Bild 3). Es entsteht nach demselben Muster:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_06\/pic_1630_003.png\" alt=\"Das Unterformular sfmMitgliedschaften\" width=\"599,559\" height=\"466,6837\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Das Unterformular sfmMitgliedschaften<\/span><\/b><\/p>\n<ul>\n<li>Erstellen Sie einen neuen Formularentwurf und stellen Sie die Eigenschaft <b>Datensatzquelle<\/b> auf <b>tblMitgliedschaften<\/b> ein.<\/li>\n<li>W&auml;hlen Sie bei <b>Standardansicht<\/b> den Eintrag <b>Endlosformular<\/b>.<\/li>\n<li>Setzen Sie <b>Navigationsschaltfl&auml;chen<\/b> und <b>Datensatzmarkierer<\/b> auf <b>Nein<\/b>, <b>Bildlaufleisten<\/b> auf <b>Nur vertikal<\/b>.<\/li>\n<li>Blenden Sie den <b>Formularkopf\/-fu&szlig;<\/b> ein. Ziehen Sie die Felder <b>BeitragsartID<\/b>, <b>Eintritt<\/b> und <b>Austritt<\/b> nebeneinander in den Detailbereich.<\/li>\n<li>Verschieben Sie die Bezeichnungsfelder wie beim ersten Unterformular in den Formularkopf, stellen Sie die Eigenschaft <b>Schriftschnitt<\/b> auf <b>Fett<\/b> ein und &auml;ndern Sie die Beschriftung von <b>BeitragsartID<\/b> in <b>Beitragsart<\/b>. Richten Sie die Bezeichnungsfelder &uuml;ber den Textfeldern aus.<\/li>\n<li>Wandeln Sie das Textfeld <b>BeitragsartID<\/b> in ein Kombinationsfeld um und benennen Sie es <b>cboBeitragsart<\/b>. Stellen Sie die Eigenschaft <b>Datensatzherkunft<\/b> auf <b>SELECT BeitragsartID, Beitragsart FROM tblBeitragsarten ORDER BY BeitragsartID;<\/b> ein, die Eigenschaft <b>Spaltenanzahl<\/b> auf <b>2<\/b> und die Eigenschaft <b>Spaltenbreiten<\/b> auf <b>0cm;4cm<\/b>. Die erste Spalte mit der <b>BeitragsartID<\/b> bleibt damit unsichtbar. Das Kombinationsfeld speichert aber ihren Wert.<\/li>\n<li>Benennen Sie die beiden Textfelder <b>txtEintritt<\/b> und <b>txtAustritt<\/b> und stellen Sie bei <b>Format<\/b> den Wert <b>Datum, kurz<\/b> ein.<\/li>\n<li>F&uuml;gen Sie in den Formularfu&szlig; ein Bezeichnungsfeld ein, benennen Sie es <b>lblHinweis<\/b> und l&ouml;schen Sie die Beschriftung.<\/li>\n<li>Stellen Sie die Eigenschaft <b>Vordergrundfarbe<\/b> auf ein dunkles Rot ein, zum Beispiel <b>#C00000<\/b>. Das Bezeichnungsfeld dient als Hinweiszeile. Sie zeigt die Meldung an, ohne ein Meldungsfenster zu &ouml;ffnen.<\/li>\n<\/ul>\n<p>Die Prozedur <b>Form_BeforeUpdate<\/b> pr&uuml;ft, ob der Austritt nicht vor dem Eintritt liegt (siehe Listing 5).<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_BeforeUpdate(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n    ' Der Austritt darf nicht vor dem Eintritt liegen\r\n    Me.lblHinweis.Caption = \"\"\r\n    <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> IsNull(Me.Austritt)<span style=\"color:blue;\"> Then<\/span>\r\n        <span style=\"color:blue;\">If <\/span>Me.Austritt &lt; Me.Eintritt<span style=\"color:blue;\"> Then<\/span>\r\n            Me.lblHinweis.Caption = \"Der Austritt liegt vor dem Eintritt.\"\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 If<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 5: Den Austritt gegen den Eintritt pr&uuml;fen<\/span><\/b><\/p>\n<p>W&auml;hlen Sie daf&uuml;r im Eigenschaftenblatt des Formulars bei <b>Vor Aktualisierung<\/b> den Eintrag <b>[Ereignisprozedur]<\/b>.<\/p>\n<p>Die Prozedur leert zuerst die Hinweiszeile. Hat das Feld <b>Austritt<\/b> den Wert <b>NULL<\/b>, ist noch kein Austritt erfasst, und die Pr&uuml;fung entf&auml;llt. Andernfalls vergleicht sie beide Datumswerte.<\/p>\n<p>Liegt der Austritt vor dem Eintritt, zeigt sie den Hinweis an und setzt den Parameter <b>Cancel<\/b> auf <b>True<\/b>. Access speichert den Datensatz dann nicht.<\/p>\n<p>Damit der Hinweis beim Wechsel zu einem anderen Datensatz verschwindet, w&auml;hlen Sie f&uuml;r das Ereignis <b>Bei Anzeige<\/b> ebenfalls den Eintrag <b>[Ereignisprozedur]<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Current()\r\n    Me.lblHinweis.Caption = \"\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Speichern Sie das Formular unter dem Namen <b>sfmMitgliedschaften<\/b>.<\/p>\n<h2>Das Unterformular sfmBankverbindungen<\/h2>\n<p>Das Unterformular <b>sfmBankverbindungen<\/b> zeigt jeweils eine Bankverbindung der Person und enth&auml;lt das Unterformular <b>sfmMandate<\/b> (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_06\/pic_1630_004.png\" alt=\"Das Unterformular sfmBankverbindungen\" width=\"700\" height=\"383,8709\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Das Unterformular sfmBankverbindungen<\/span><\/b><\/p>\n<p>Wir bauen es so auf:<\/p>\n<ul>\n<li>Erstellen Sie einen neuen Formularentwurf und stellen Sie die Eigenschaft <b>Datensatzquelle<\/b> auf <b>tblBankverbindungen<\/b> ein. Die Eigenschaft <b>Standardansicht<\/b> bleibt bei <b>Einzelnes Formular<\/b>.<\/li>\n<li>Setzen Sie <b>Datensatzmarkierer<\/b> auf <b>Nein<\/b> und <b>Bildlaufleisten<\/b> auf <b>Keine<\/b>. Die Eigenschaft <b>Navigationsschaltfl&auml;chen<\/b> bleibt eingeschaltet, denn der Benutzer wechselt damit zwischen den Bankverbindungen einer Person.<\/li>\n<li>Ziehen Sie die Felder <b>Kontoinhaber<\/b>, <b>IBAN<\/b> und <b>BIC<\/b> untereinander in den Detailbereich und benennen Sie die Textfelder <b>txtKontoinhaber<\/b>, <b>txtIBAN<\/b> und <b>txtBIC<\/b>.<\/li>\n<li>F&uuml;gen Sie zwischen <b>IBAN<\/b> und <b>BIC<\/b> ein Bezeichnungsfeld ein, benennen Sie es <b>lblIbanHinweis<\/b> und l&ouml;schen Sie die Beschriftung. Stellen Sie die Eigenschaft <b>Vordergrundfarbe<\/b> auf <b>#C00000<\/b> ein.<\/li>\n<li>Ziehen Sie das Formular <b>sfmMandate<\/b> aus dem Navigationsbereich unter die Felder in den Detailbereich. Access legt ein Unterformular-Steuerelement an.<\/li>\n<li>Benennen Sie es <b>sfmMandate<\/b> und pr&uuml;fen Sie auf der Registerkarte <b>Daten<\/b>, dass die Eigenschaften <b>Verkn&uuml;pfen von<\/b> und <b>Verkn&uuml;pfen nach<\/b> beide den Wert <b>BankverbindungID<\/b> haben. Wenn nicht, tragen Sie ihn ein. Vergr&ouml;&szlig;ern Sie das Steuerelement so, dass mindestens drei Mandatszeilen sichtbar sind.<\/li>\n<\/ul>\n<p>Das Formular ben&ouml;tigt drei Prozeduren. Die erste, <b>Form_BeforeUpdate<\/b>, erg&auml;nzt beim Speichern den Kontoinhaber mit dem Namen der Person (siehe Listing 6).<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_BeforeUpdate(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n    ' Der Kontoinhaber wird mit dem Namen der Person vorbelegt\r\n    <span style=\"color:blue;\">If <\/span>IsNull(Me.Kontoinhaber)<span style=\"color:blue;\"> Then<\/span>\r\n        Me.Kontoinhaber = DLookup(\"Vorname\", \"tblPersonen\", _\r\n            \"PersonID=\" & Me.PersonID) & \" \" & _\r\n            DLookup(\"Nachname\", \"tblPersonen\", \"PersonID=\" & Me.PersonID)\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 6: Den Kontoinhaber beim Speichern erg&auml;nzen<\/span><\/b><\/p>\n<p>W&auml;hlen Sie bei <b>Vor Aktualisierung<\/b> des Formulars den Eintrag <b>[Ereignisprozedur]<\/b>.<\/p>\n<p>Ist das Feld <b>Kontoinhaber<\/b> leer, setzt die Prozedur Vor- und Nachnamen der Person ein. Die <b>PersonID<\/b> stammt aus der Verkn&uuml;pfung zum Hauptformular.<\/p>\n<p>Die zweite Prozedur, <b>Form_Current<\/b>, leert die Hinweiszeile beim Wechsel des Datensatzes. Sie entspricht der Prozedur des Unterformulars <b>sfmMitgliedschaften<\/b>, verwendet aber das Bezeichnungsfeld <b>lblIbanHinweis<\/b>. W&auml;hlen Sie daf&uuml;r f&uuml;r das Ereignis <b>Bei Anzeige<\/b> den Eintrag <b>[Ereignisprozedur]<\/b>:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Current()\r\n    Me.lblIbanHinweis.Caption = \"\"\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die dritte Prozedur geh&ouml;rt zum Textfeld <b>txtIBAN<\/b>. Markieren Sie es und w&auml;hlen Sie im Eigenschaftenblatt bei <b>Vor Aktualisierung<\/b> den Eintrag <b>[Ereignisprozedur]<\/b>.<\/p>\n<p>Die Prozedur pr&uuml;ft die IBAN, sobald der Benutzer das Feld verl&auml;sst (siehe Listing 7).<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>txtIBAN_BeforeUpdate(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n    ' Prueft die Pruefziffer der IBAN, Leerzeichen sind erlaubt\r\n    <span style=\"color:blue;\">If <\/span>IstIban(Nz(Me.txtIBAN, \"\"))<span style=\"color:blue;\"> Then<\/span>\r\n        Me.lblIbanHinweis.Caption = \"\"\r\n    <span style=\"color:blue;\">Else<\/span>\r\n        Me.lblIbanHinweis.Caption = \"Die IBAN ist ung\" & ChrW(252) & \"ltig.\"\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 7: Die IBAN bei der Eingabe pr&uuml;fen<\/span><\/b><\/p>\n<p>Im Ereignis <b>Vor Aktualisierung<\/b> enth&auml;lt das Textfeld bereits den neuen Wert. Die Prozedur &uuml;bergibt ihn an <b>IstIban<\/b>. Die Funktion <b>Nz<\/b> ersetzt den Wert <b>NULL<\/b> durch eine leere Zeichenkette.<\/p>\n<p>Ist die IBAN ung&uuml;ltig, zeigt das Bezeichnungsfeld <b>lblIbanHinweis<\/b> den Hinweis an.<\/p>\n<p>Der Parameter <b>Cancel<\/b> verhindert dann, dass das Textfeld mit dem neuen Wert verlassen wird. Im Listing steht der Umlaut in <b>ung&uuml;ltig<\/b> als <b>ChrW(252)<\/b>, damit der Code unabh&auml;ngig von der Zeichenkodierung bleibt.<\/p>\n<p>Eine Zuweisung an das Textfeld l&ouml;st im Ereignis <b>Vor Aktualisierung<\/b> den Laufzeitfehler <b>2115<\/b> aus. Deshalb k&ouml;nnen wir die Leerzeichen hier nicht entfernen.<\/p>\n<p>Wir speichern die IBAN so, wie der Benutzer sie eingegeben hat. Die Leerzeichen werden erst beim Schreiben der Lastschriftdatei mit der Funktion <b>NurAlphanumerisch <\/b>(Modul <b>mdlPruefziffern<\/b>) entfernt.<\/p>\n<p>Speichern Sie das Formular anschlie&szlig;end unter dem Namen <b>sfmBankverbindungen<\/b>.<\/p>\n<h2>Das Hauptformular frmMitglieder<\/h2>\n<p>Das Hauptformular <b>frmMitglieder<\/b> fasst die Unterformulare zusammen (siehe Bild 5). Es entsteht in diesen Schritten:<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_06\/pic_1630_005.png\" alt=\"Das Hauptformular frmMitglieder in der Entwurfsansicht\" width=\"649,559\" height=\"652,955\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Das Hauptformular frmMitglieder in der Entwurfsansicht<\/span><\/b><\/p>\n<ul>\n<li>Erstellen Sie einen neuen Formularentwurf.<\/li>\n<li>Setzen Sie <b>Datensatzmarkierer<\/b> auf <b>Nein<\/b> und stellen Sie die Eigenschaft <b>Datensatzquelle<\/b> auf die folgende Abfrage ein:<\/li>\n<\/ul>\n<pre>SELECT * FROM tblPersonen ORDER BY Nachname, Vorname;<\/pre>\n<ul>\n<li>Blenden Sie den <b>Formularkopf\/-fu&szlig;<\/b> ein. F&uuml;gen Sie mit <b>Formularentwurf|Titel<\/b> einen Titel ein und geben Sie ihm die Beschriftung <b>Mitglieder<\/b>.<\/li>\n<li>Ziehen Sie die Felder <b>Anrede<\/b>, <b>Vorname<\/b>, <b>Nachname<\/b>, <b>Geburtsdatum<\/b>, <b>Strasse<\/b>, <b>PLZ<\/b>, <b>Ort<\/b> und <b>EMail<\/b> in den Detailbereich, in zwei Spalten. Die linke Spalte enth&auml;lt <b>Anrede<\/b>, <b>Vorname<\/b>, <b>Nachname<\/b> und <b>Geburtsdatum<\/b>, die rechte <b>Strasse<\/b>, <b>PLZ<\/b>, <b>Ort<\/b> und <b>EMail<\/b>.<\/li>\n<li>Die Felder <b>PersonID<\/b> und <b>FamilieID<\/b> lassen Sie weg. Benennen Sie die Textfelder mit dem Pr&auml;fix <b>txt<\/b> und dem Feldnamen, etwa <b>txtAnrede<\/b>, und stellen Sie beim Feld <b>Geburtsdatum<\/b> das Format <b>Datum, kurz<\/b> ein.<\/li>\n<li>F&uuml;gen Sie unterhalb der Felder ein Bezeichnungsfeld mit der Beschriftung <b>Mitgliedschaften<\/b> ein und stellen Sie die Eigenschaft <b>Schriftschnitt<\/b> auf <b>Fett<\/b> ein.<\/li>\n<li>Ziehen Sie das Formular <b>sfmMitgliedschaften<\/b> aus dem Navigationsbereich darunter.<\/li>\n<li>Benennen Sie das Steuerelement <b>sfmMitgliedschaften<\/b> und stellen Sie die Eigenschaften <b>Verkn&uuml;pfen von<\/b> und <b>Verkn&uuml;pfen nach<\/b> auf <b>PersonID<\/b> ein.<\/li>\n<li>F&uuml;gen Sie darunter ein Bezeichnungsfeld mit der Beschriftung <b>Bankverbindung und Mandate<\/b> ein und stellen Sie auch hier den <b>Schriftschnitt<\/b> auf <b>Fett<\/b> ein.<\/li>\n<li>Ziehen Sie das Formular <b>sfmBankverbindungen<\/b> darunter und stellen Sie auch hier <b>Verkn&uuml;pfen von<\/b> und <b>Verkn&uuml;pfen nach<\/b> auf <b>PersonID<\/b> ein.<\/li>\n<li>Benennen Sie das Steuerelement <b>sfmBankverbindungen<\/b>.<\/li>\n<li>Passen Sie die H&ouml;he der Unterformular-Steuerelemente so an, dass die Zeilen der Beispieldaten sichtbar sind.<\/li>\n<li>Speichern Sie das Formular unter dem Namen <b>frmMitglieder<\/b>.<\/li>\n<\/ul>\n<p>Wechseln Sie in die Formularansicht. Das Formular zeigt die erste Person, die Mitgliedschaften, die Bankverbindung und die Mandate (siehe Bild 6).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_06\/pic_1630_006.png\" alt=\"Das Formular frmMitglieder in der Formularansicht\" width=\"649,559\" height=\"622,569\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 6: Das Formular frmMitglieder in der Formularansicht<\/span><\/b><\/p>\n<p>Mit den Schaltfl&auml;chen der Datensatznavigation unten im Hauptformular wechseln Sie zur n&auml;chsten Person.<\/p>\n<h2>Das Formular ausprobieren<\/h2>\n<p>Tragen Sie bei der Bankverbindung einer Person eine ung&uuml;ltige IBAN ein, zum Beispiel <b>DE12 3456 7800 6568 6340<\/b>, und verlassen Sie das Feld.<\/p>\n<p>Das Formular zeigt unter dem Feld den Hinweis in roter Schrift an, und Access speichert die IBAN nicht (siehe Bild 7).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_06\/pic_1630_008.png\" alt=\"Die Hinweiszeile bei einer ung&uuml;ltigen IBAN im Formular frmMitglieder\" width=\"649,559\" height=\"597,2035\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 7: Die Hinweiszeile bei einer ung&uuml;ltigen IBAN im Formular frmMitglieder<\/span><\/b><\/p>\n<p>Ein Mandat legen Sie an, indem Sie im Unterformular <b>sfmMandate<\/b> in die leere Zeile klicken und die Mandatsart und den Status w&auml;hlen.<\/p>\n<p>Beim Speichern tr&auml;gt die Prozedur <b>Form_BeforeUpdate<\/b> die Mandatsreferenz mit dem Ergebnis der Funktion <b>NeueMandatsreferenz<\/b> in das Feld <b>Mandatsreferenz<\/b> ein.<\/p>\n<p>Mit der Schaltfl&auml;che <b>Sperren<\/b> setzen Sie den Status eines Mandats auf <b>Gesperrt<\/b>.<\/p>\n<p>Nach den SEPA-Regeln verf&auml;llt ein Mandat, wenn 36 Monate lang keine Lastschrift eingezogen wurde. Diese Frist pr&uuml;fen wir in diesem Beitrag nicht.<\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Wir haben ein Formular gebaut, das Mitglieder, Bankverbindungen und Mandate gemeinsam zeigt.<\/p>\n<p>Wir pr&uuml;fen darin die IBAN bei der Eingabe und den Austritt gegen den Eintritt.<\/p>\n<p>Die Mandatsreferenz bilden wir per Funktion, den Folgetyp leiten wir aus den eingereichten L&auml;ufen ab.<\/p>\n<p>Die Beispieldatenbank <b>VereinsverwaltungMitgliederUndMandate.accdb<\/b> ist die Grundlage f&uuml;r die weiteren Beitr&auml;ge.<\/p>\n<p>Wie wir aus Mitgliedschaften und Beitragss&auml;tzen die Forderungen eines Beitragsjahres berechnen, zeigt der Beitrag <b>Vereinsverwaltung: Beitr&auml;ge berechnen (www.access-im-unternehmen.de\/1631)<\/b>.<\/p>\n<p>Das Erzeugen der Lastschriftdatei, die Vorabinformation der Mitglieder und die Spendenbescheinigungen folgen in sp&auml;teren Beitr&auml;gen.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>VereinsverwaltungMitgliederUndMandate.accdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/054BE521-4D58-49AA-889C-E54129869756\/aiu_1630.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine IBAN mit falscher Pr&uuml;fziffer f&auml;llt meist erst auf, wenn die Bank die Lastschriftdatei zur&uuml;ckweist. Dann ist der Einzug bereits verz&ouml;gert. Wir pr&uuml;fen die IBAN deshalb schon bei der Eingabe, bilden die Mandatsreferenz per Funktion und leiten den Folgetyp aus den bisherigen Lastschriften ab. Wie das in einem Formular f&uuml;r Mitglieder, Bankverbindungen und Mandate gelingt, 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,"footnotes":""},"categories":[662026,66062026,44000027],"tags":[],"class_list":["post-55001630","post","type-post","status-publish","format-standard","hentry","category-662026","category-66062026","category-Loesungen"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Vereinsverwaltung: Mitglieder, Bankverbindungen und Mandate - 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\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vereinsverwaltung: Mitglieder, Bankverbindungen und Mandate - Access im Unternehmen\" \/>\n<meta property=\"og:description\" content=\"Eine IBAN mit falscher Pr&uuml;fziffer f&auml;llt meist erst auf, wenn die Bank die Lastschriftdatei zur&uuml;ckweist. Dann ist der Einzug bereits verz&ouml;gert. Wir pr&uuml;fen die IBAN deshalb schon bei der Eingabe, bilden die Mandatsreferenz per Funktion und leiten den Folgetyp aus den bisherigen Lastschriften ab. Wie das in einem Formular f&uuml;r Mitglieder, Bankverbindungen und Mandate gelingt, zeigt der vorliegende Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-09T18:54:13+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg01.met.vgwort.de\/na\/362ebf766fe945568e127f279422f4f3\" \/>\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=\"16\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/5efd1af2265d5b82ecce8bdb2db6694d\"},\"headline\":\"Vereinsverwaltung: Mitglieder, Bankverbindungen und Mandate\",\"datePublished\":\"2026-11-09T18:54:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\\\/\"},\"wordCount\":2855,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/362ebf766fe945568e127f279422f4f3\",\"articleSection\":[\"2026\",\"6\\\/2026\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\\\/\",\"name\":\"Vereinsverwaltung: Mitglieder, Bankverbindungen und Mandate - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/362ebf766fe945568e127f279422f4f3\",\"datePublished\":\"2026-11-09T18:54:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/362ebf766fe945568e127f279422f4f3\",\"contentUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/362ebf766fe945568e127f279422f4f3\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Vereinsverwaltung: Mitglieder, Bankverbindungen und Mandate\"}]},{\"@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\\\/5efd1af2265d5b82ecce8bdb2db6694d\",\"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 plugin. -->","yoast_head_json":{"title":"Vereinsverwaltung: Mitglieder, Bankverbindungen und Mandate - 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\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/","og_locale":"de_DE","og_type":"article","og_title":"Vereinsverwaltung: Mitglieder, Bankverbindungen und Mandate - Access im Unternehmen","og_description":"Eine IBAN mit falscher Pr&uuml;fziffer f&auml;llt meist erst auf, wenn die Bank die Lastschriftdatei zur&uuml;ckweist. Dann ist der Einzug bereits verz&ouml;gert. Wir pr&uuml;fen die IBAN deshalb schon bei der Eingabe, bilden die Mandatsreferenz per Funktion und leiten den Folgetyp aus den bisherigen Lastschriften ab. Wie das in einem Formular f&uuml;r Mitglieder, Bankverbindungen und Mandate gelingt, zeigt der vorliegende Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/","og_site_name":"Access im Unternehmen","article_published_time":"2026-11-09T18:54:13+00:00","og_image":[{"url":"http:\/\/vg01.met.vgwort.de\/na\/362ebf766fe945568e127f279422f4f3","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"16\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/5efd1af2265d5b82ecce8bdb2db6694d"},"headline":"Vereinsverwaltung: Mitglieder, Bankverbindungen und Mandate","datePublished":"2026-11-09T18:54:13+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/"},"wordCount":2855,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/362ebf766fe945568e127f279422f4f3","articleSection":["2026","6\/2026","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/","url":"https:\/\/access-im-unternehmen.de\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/","name":"Vereinsverwaltung: Mitglieder, Bankverbindungen und Mandate - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/362ebf766fe945568e127f279422f4f3","datePublished":"2026-11-09T18:54:13+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/#primaryimage","url":"http:\/\/vg01.met.vgwort.de\/na\/362ebf766fe945568e127f279422f4f3","contentUrl":"http:\/\/vg01.met.vgwort.de\/na\/362ebf766fe945568e127f279422f4f3"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Vereinsverwaltung_Mitglieder_Bankverbindungen_und_Mandate\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Vereinsverwaltung: Mitglieder, Bankverbindungen und Mandate"}]},{"@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\/5efd1af2265d5b82ecce8bdb2db6694d","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\/55001630","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=55001630"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001630\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001630"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001630"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}