{"id":55000941,"date":"2014-08-01T00:00:00","date_gmt":"2020-05-22T21:11:29","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=941"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Neue_Werte_in_eindeutigen_Feldern","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Neue_Werte_in_eindeutigen_Feldern\/","title":{"rendered":"Neue Werte in eindeutigen Feldern"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/95820c3c3ac4428ebca666367c13bd05\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Manche Felder sollen zus&auml;tzlich zu den Prim&auml;rschl&uuml;sselfeldern der eindeutigen Indizierung eines Datensatzes dienen. Der Zweck ist dann nicht haupts&auml;chlich auf Seiten des Datenmodells zu finden, sondern eher bei der Anzeige: Wenn Sie etwa mehrere gleiche Artikel haben, die sie aber in unterschiedlichen Verpackungseinheiten in der Artikeltabelle pflegen, k&ouml;nnen Sie den Artikel nicht nur nach dem Artikelnamen identifizieren. Hier hilft ein weiteres Bezeichnungsfeld, das den Artikelnamen um eindeutige Informationen erweitert. Dieser Beitrag zeigt, wie Sie die Zuweisung eindeutiger Werte f&uuml;r ein solches Feld sicherstellen.<\/b><\/p>\n<p>&uuml;ber welche Konstellation Sie nun dazu gelangen, ein Feld mit eindeutigen Werten belegen zu m&uuml;ssen, spielt eigentlich keine Rolle &#8211; Tatsache ist, dass Sie dem Benutzer eine ergonomische M&ouml;glichkeit bieten sollten, diese Werte einzugeben.<\/p>\n<p>In unserem Beispiel wollen wir in der Tabelle <b>tblArtikel <\/b>eine eindeutige Artikelbezeichnung durchsetzen, weshalb wir das Feld <b>Artikelbezeichnung <\/b>der Tabelle, die Sie im Entwurf in Bild 1 sehen, mit einem eindeutigen Index versehen haben.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_04\/pic_941_001.png\" alt=\"Tabelle mit eindeutig indiziertem Feld\" width=\"575\" height=\"364,8671\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Tabelle mit eindeutig indiziertem Feld<\/span><\/b><\/p>\n<p>Um die Eingabe durch einen Benutzer zu erm&ouml;glichen, haben wir ein denkbar einfaches Formular namens <b>frmArtikel <\/b>erstellt, das an die Tabelle <b>tblArtikel <\/b>gebunden ist und lediglich die beiden darin enthaltenen Felder anzeigt (s. Bild 2).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_04\/pic_941_002.png\" alt=\"Formular zur Eingabe von Artikeln\" width=\"575\" height=\"204,3304\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Formular zur Eingabe von Artikeln<\/span><\/b><\/p>\n<p>Wenn der Benutzer nun einen neuen Datensatz anlegt und eine Artikelbezeichnung eintr&auml;gt, die bereits einmal in der Tabelle vorhanden ist, liefert dies die folgende Fehlermeldung zutage:<\/p>\n<p><b>Die von Ihnen gew&uuml;nschten &auml;nderungen an der Tabelle konnten nicht vorgenommen werden, da der Index, der Prim&auml;rschl&uuml;ssel oder die Beziehung mehrfach vorkommende Werte enthalten w&uuml;rde. &auml;ndern Sie die Daten in den Feldern, die gleiche Daten enthalten, entfernen Sie den Index, oder definieren Sie den Index neu, damit doppelte Eintr&auml;ge m&ouml;glich sind, und versuchen Sie es erneut.<\/b><\/p>\n<p>Diese Meldung wollen wir dem Benutzer nat&uuml;rlich so nicht pr&auml;sentieren. Abhilfe schaffen wir nicht mit einer herk&ouml;mmlichen Fehlerbehandlung, denn dieser Fehler wird ja gar nicht in einer VBA-Prozedur ausgel&ouml;st, sondern direkt bei der Eingabe in ein gebundenes Steuerelement eines Formulars.<\/p>\n<p>Also schauen wir uns zun&auml;chst an, wie Sie dieses Problem nachtr&auml;glich beheben &#8211; also wenn der Benutzer bereits alle Daten eingegeben hat und den Datensatz speichern will. Hier k&ouml;nnen Sie auf den Fehler &uuml;ber die Ereigniseigenschaft <b>Bei Fehler <\/b>des Formulars reagieren.<\/p>\n<p>F&uuml;r dieses legen Sie eine Ereignisprozedur wie in Listing 1 an. Diese liefert zwei Parameter: <b>DataErr <\/b>&uuml;bergibt die Nummer des Fehlers, der zum Ausl&ouml;sen dieses Ereignisses gef&uuml;hrt hat. <b>Response <\/b>erwartet eine Access-Konstante, die Access mitteilt, wie mit dem Fehler verfahren werden soll. In diesem Fall pr&uuml;fen wir in einer <b>Select Case<\/b>-Anweisung, ob <b>DataErr <\/b>den Fehler mit der Nummer <b>3022 <\/b>liefert (dies entspricht dem obigen Fehlertext, wie Sie auch im Direktbereich mit der Anweisung <b>Debug.Print AccessError(3022) <\/b>pr&uuml;fen k&ouml;nnen).<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Error(DataErr<span style=\"color:blue;\"> As Integer<\/span>, Response<span style=\"color:blue;\"> As Integer<\/span>)\r\n     Select Case DataErr\r\n         <span style=\"color:blue;\">Case <\/span>3022\r\n             <span style=\"color:blue;\">MsgBox<\/span> \"Die Artikelbezeichnung ''\" & Me!Artikelbezeichnung & \"'' ist bereits vergeben.\", _\r\n                 vbExclamation + vbOKOnly, \"Doppelte Artikelbezeichnung\"\r\n             Me!Artikelbezeichnung.SetFocus\r\n             Response = acDataErrContinue\r\n     <span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Benutzerdefinierte Fehlermeldung bei Eingabe eines bereits vorhandenen Wertes in ein eindeutiges Feld<\/span><\/b><\/p>\n<p>In diesem Fall geben Sie eine entsprechende Meldung aus und stellen den Fokus auf das Textfeld zur Eingabe des Artikelnamens ein. Das Ergebnis sieht dann etwa wie in Bild 3 aus, das Beispiel finden Sie im Formular <b>frmArtikel_PruefungBeimSpeichern<\/b>.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_04\/pic_941_003.png\" alt=\"Benutzerdefinierte Fehlermeldung\" width=\"575\" height=\"267,9422\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Benutzerdefinierte Fehlermeldung<\/span><\/b><\/p>\n<p><b>Pr&uuml;fung bei der Eingabe<\/b><\/p>\n<p>Nun kann es sein, dass die Datenherkunft des Formulars mehrere eindeutig indizierte Felder enth&auml;lt. In diesem Fall f&auml;llt die Pr&uuml;fung, welches Feld nun f&uuml;r den Fehler verantwortlich ist, entsprechend schwerer. Doch zum Gl&uuml;ck k&ouml;nnen wir auch direkt nach der Eingabe eines Textes in ein Feld pr&uuml;fen, ob der Wert bereits in der Tabelle vorhanden ist, und den Benutzer gegebenenfalls darauf hinweisen.<\/p>\n<p>Dazu verwenden wir die Ereignisprozedur, die durch das Ereignis <b>Vor Aktualisierung <\/b>des Textfeldes <b>txtArtikelbezeichnung <\/b>ausgel&ouml;st wird (s. Listing 2). Die Prozedur pr&uuml;ft per <b>DLookup<\/b>-Anweisung, ob die Tabelle <b>tblArtikel <\/b>bereits einen Datensatz enth&auml;lt, der im Feld <b>Artikelbezeichnung <\/b>den soeben durch den Benutzer eingegebenen Wert aufweist.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>txtArtikelbezeichnung_BeforeUpdate(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     <span style=\"color:blue;\">Dim <\/span>lngArtikelID<span style=\"color:blue;\"> As Long<\/span>\r\n     lngArtikelID = Nz(DLookup(\"ArtikelID\", \"tblArtikel\", \"Artikelbezeichnung = ''\" _\r\n         & Me!txtArtikelbezeichnung & \"''\"), 0)\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> lngArtikelID = 0<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Die Artikelbezeichnung ist bereits in der Datenbank enthalten.\", _\r\n             vbExclamation + vbOKOnly, \"Doppelte Artikelbezeichnung\"\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: Pr&uuml;fung des Artikelnamens vor dem Speichern des Feldes<\/span><\/b><\/p>\n<p>Ist dies der Fall, liefert die <b>DLookup<\/b>-Funktion den Prim&auml;rschl&uuml;sselwert dieses Datensatzes zur&uuml;ck und speichert diesen in der Variablen <b>lngArtikelID<\/b>, anderenfalls den Wert <b>Null<\/b>. Dieser wird durch die umschlie&szlig;ende <b>Nz<\/b>-Funktion in den Wert <b>0 <\/b>umgewandelt.<\/p>\n<p>Die folgende <b>If&#8230;Then<\/b>-Bedingung pr&uuml;ft <b>lngArtikelID<\/b>. Enth&auml;lt diese nicht den Wert <b>0<\/b>, ist die Artikelbezeichnung bereits vorhanden. In diesem Fall erscheint wieder eine entsprechende Meldung.<\/p>\n<p>Wichtig ist an dieser Stelle, dass wir den Parameter <b>Cancel <\/b>auf den Wert <b>True <\/b>einstellen, damit das Speichern der Eingabe in das Textfeld abgebrochen wird und der Fokus auf dem Textfeld verbleibt.<\/p>\n<p>Zus&auml;tzlich k&ouml;nnen Sie noch das Textfeld leeren, und zwar mit dieser Anweisung:<\/p>\n<pre>Me!txtArtikelbezeichnung.Undo<\/pre>\n<p>Dummerweise erschlagen wir damit nicht alle denkbaren F&auml;lle: Es kann ja auch geschehen, dass der Benutzer den Wert im Feld <b>Artikelbezeichnung <\/b>eines bestehenden Datensatzes erst einmal &auml;ndert, das Feld verl&auml;sst und dann wieder den urspr&uuml;nglichen Wert f&uuml;r das Feld eintr&auml;gt.<\/p>\n<p><!--30percent--><\/p>\n<p>In diesem Falle wird deutlich, dass der Datensatz bei der Eingabe in ein Formular zwar tempor&auml;r gespeichert wird, aber erst etwa beim Datensatzwechsel in die Tabelle &uuml;bernommen wird: Unsere f&uuml;r dieses Formular definierte Ereignisprozedur wird in diesem Fall n&auml;mlich ausgel&ouml;st, obwohl wir nur die Artikelbezeichnung erneut in den gleichen Datensatz eingetragen haben.<\/p>\n<p>Sprich: Ein Datensatz enth&auml;lt den Wert <b>Beispielartikel <\/b>im Feld <b>Artikelbezeichnung<\/b>. Wir &auml;ndern diesen auf <b>Testartikel <\/b>und verlassen das Feld &#8211; kein Problem, sofern <b>Testartikel <\/b>noch nicht in einem anderen Datensatz gespeichert ist. Dann kehren wir zur&uuml;ck zum Feld und geben wieder <b>Beispielartikel <\/b>ein. Die Prozedur <b>txtArtikelbezeichnung_BeforeUpdate <\/b>wird in beiden F&auml;llen ausgel&ouml;st. Im zweiten Fall findet sie den Wert des Feldes <b>Artikelname <\/b>jedoch in der Tabelle vor und zeigt die entsprechende Meldung an.<\/p>\n<p>Also erweitern wir den Aufruf der <b>DLookup<\/b>-Funktion so, dass diese den aktuellen Datensatz ausdr&uuml;cklich nicht mit in die Untersuchung einbezieht. Dazu f&uuml;gen wir ein weiteres Kriterium hinzu, das den Datensatz mit dem Prim&auml;rschl&uuml;sselwert des aktuell im Formular angezeigten Datensatzes ausschlie&szlig;t:<\/p>\n<pre>lngArtikelID = Nz(DLookup(\"ArtikelID\", \"tblArtikel\", \"Artikelbezeichnung = ''\" _\r\n    & Me!txtArtikelbezeichnung & \"'' AND NOT ArtikelID = \" & Me!ArtikelID), 0)<\/pre>\n<p>Nun k&ouml;nnen Sie auch bei bestehenden Datens&auml;tzen den Artikelnamen &auml;ndern und wieder zur&uuml;cksetzen, ohne dass ein f&uuml;r den Benutzer nicht erkl&auml;rbarer Fehler angezeigt wird.<\/p>\n<p>Das Beispiel zu diesem Abschnitt finden Sie im Formular <b>frmArtikel_PruefungNachEingabe<\/b>.<\/p>\n<p><b>Pr&uuml;fung vor der Eingabe<\/b><\/p>\n<p>Manchmal m&ouml;chten Sie den Wert f&uuml;r ein eindeutig indiziertes Feld bereits vor der Eingabe pr&uuml;fen. Wenn Sie dann auch noch die g&auml;ngigen Mechanismen bei der Eingabe in gebundene Felder umgehen m&ouml;chten, werden Sie m&ouml;glichweise auf die <b>InputBox<\/b>-Funktion zur&uuml;ckgreifen.<\/p>\n<p>In diesem Beispiel haben wir das Textfeld zur Eingabe der Artikelbezeichnung einmal gesperrt, damit der Benutzer die Eingabe nur &uuml;ber die Schaltfl&auml;che rechts vom Textfeld aktivieren kann &#8211; s. Bild 4.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2014_04\/pic_941_004.png\" alt=\"Eingabe der neuen Bezeichnung per InputBox\" width=\"575\" height=\"288,4746\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Eingabe der neuen Bezeichnung per InputBox<\/span><\/b><\/p>\n<p>Ein Klick auf die Schaltfl&auml;che l&ouml;st die Prozedur aus Listing 3 aus. Diese speichert zun&auml;chst einen Standardwert, der beim Anzeigen der Inputbox vorgegeben werden soll, in der Variablen <b>strStandardwert<\/b>.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdNeu_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>bolVorhanden<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strArtikelbezeichnung<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strStandardwert<span style=\"color:blue;\"> As String<\/span>\r\n     strStandardwert = \"[Artikelbezeichnung]\"\r\n     strArtikelbezeichnung = InputBox(\"Geben Sie die neue Artikelbezeichnung ein.\", \"Neuer Artikel\", _\r\n         strStandardwert)\r\n     bolVorhanden = BezeichnungErmitteln(strArtikelbezeichnung, \"tblArtikel\", \"ArtikelID\", _\r\n         \"Artikelbezeichnung\", <span style=\"color:blue;\">True<\/span>)\r\n     <span style=\"color:blue;\">If <\/span>bolVorhanden = <span style=\"color:blue;\">True<\/span><span style=\"color:blue;\"> Then<\/span>\r\n         Me!txtArtikelbezeichnung = strArtikelbezeichnung\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: Abfrage einer Bezeichnung per InputBox<\/span><\/b><\/p>\n<p>Die folgende Anweisung zeigt bereits die Inputbox an. Das Ergebnis soll an die Variable <b>bolVorhanden <\/b>zur&uuml;ckgegeben werden. Die <b>InputBox<\/b>-Funktion verh&auml;lt sich nun so, dass immer der angegebene Text zur&uuml;ckgeliefert wird &#8211; au&szlig;er, wenn der Benutzer die <b>Abbrechen<\/b>-Schaltfl&auml;che bet&auml;tigt. In diesem Fall liefert die Funktion eine leere Zeichenkette zur&uuml;ck.<\/p>\n<p>Nun wollen wir die Aufgabe, auf eine leere Zeichenkette und auf eine eventuell bereits vorhandene Zeichenkette zu pr&uuml;fen, an eine mit Parametern ausgestattete und somit wiederverwendbare Funktion auslagern.<\/p>\n<p>Was genau soll diese Funktion erledigen<\/p>\n<ul>\n<li>Sie soll mit einem Parameter namens <b>strBezeichnung <\/b>einen Wert entgegennehmen, den der Benutzer zuvor eingegeben hat, und pr&uuml;fen, ob dieser bereits in dem eindeutigen Feld in der Tabelle vorhanden ist.<\/li>\n<li>In diesem Fall soll die Funktion eine weitere Inputbox anzeigen mit dem Hinweis, dass die eingegebene Bezeichnung bereits vorhanden ist. Die Bezeichnung soll dabei als Standardwert vorgegeben werden, damit der Benutzer sieht, um welchen Ausdruck es geht.<\/li>\n<li>Wenn der Benutzer nun eine noch nicht verwendete Bezeichnung eingibt, soll die Funktion den Wert <b>True <\/b>zur&uuml;ckliefern. Die neue Bezeichnung soll mit dem gleichen Parameter zur&uuml;ckgegeben werden, &uuml;ber den die vorhandene Bezeichnung bereits an die Funktion &uuml;bergeben wurde (<b>strBezeichnung <\/b>soll also als <b>ByRef <\/b>und nicht <b>ByVal <\/b>deklariert werden).<\/li>\n<li>Wenn der Benutzer hier auf <b>Abbrechen <\/b>klickt, soll die Funktion den Wert <b>False <\/b>zur&uuml;ckliefern.<\/li>\n<li>Wenn der Benutzer eine leere Zeichenkette eingibt und auf <b>OK <\/b>klickt, soll dies als Abbruch gewertet werden &#8211; also mit dem Wert <b>False<\/b>.<\/li>\n<\/ul>\n<p>Die Funktion hei&szlig;t <b>BezeichnungErmitteln<\/b> und sieht wie in Listing 4 aus. Diese Prozedur erwartet die folgenden Parameter:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>BezeichnungErmitteln(strBezeichnung<span style=\"color:blue;\"> As String<\/span>, strTabelle<span style=\"color:blue;\"> As String<\/span>, _\r\n         strPrimaerschluesselfeld<span style=\"color:blue;\"> As String<\/span>, strBezeichnungsfeld<span style=\"color:blue;\"> As String<\/span>, <span style=\"color:blue;\">_\r\n         Optional<\/span> strMeldung<span style=\"color:blue;\"> As String<\/span>, <span style=\"color:blue;\">Optional<\/span> strTitel<span style=\"color:blue;\"> As String<\/span>)<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>lngID<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>bolAbbrechen<span style=\"color:blue;\"> As Boolean<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n     <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(strBezeichnung) = 0<span style=\"color:blue;\"> Then<\/span>\r\n         BezeichnungErmitteln = <span style=\"color:blue;\">False<\/span>\r\n         <span style=\"color:blue;\">Exit Function<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     lngID = Nz(DLookup(strPrimaerschluesselfeld, strTabelle, strBezeichnungsfeld & \"=''\" _\r\n         & strBezeichnung & \"''\"))\r\n     <span style=\"color:blue;\">If <\/span>lngID = 0<span style=\"color:blue;\"> Then<\/span>\r\n         BezeichnungErmitteln = <span style=\"color:blue;\">True<\/span>\r\n     <span style=\"color:blue;\">Else<\/span>\r\n         <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(strMeldung) = 0<span style=\"color:blue;\"> Then<\/span>\r\n             strMeldung = \"Die Bezeichnung ist bereits vorhanden. Geben Sie eine andere Bezeichnung ein.\"\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Len<\/span>(strTitel) = 0<span style=\"color:blue;\"> Then<\/span>\r\n             strTitel = \"Doppelte Bezeichnung\"\r\n         <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">Do While<\/span> <span style=\"color:blue;\">Not<\/span> lngID = 0 And bolAbbrechen = <span style=\"color:blue;\">False<\/span>\r\n             strBezeichnung = InputBox(strMeldung, _\r\n                 strTitel, strBezeichnung)\r\n             <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> <span style=\"color:blue;\">Len<\/span>(strBezeichnung) = 0<span style=\"color:blue;\"> Then<\/span>\r\n                 lngID = Nz(DLookup(strPrimaerschluesselfeld, strTabelle, _\r\n                     strBezeichnungsfeld & \"=''\" & strBezeichnung & \"''\"))\r\n             <span style=\"color:blue;\">Else<\/span>\r\n                 bolAbbrechen = <span style=\"color:blue;\">True<\/span>\r\n             <span style=\"color:blue;\">End If<\/span>\r\n         <span style=\"color:blue;\">Loop<\/span>\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">If <\/span>lngID = 0 And bolAbbrechen = <span style=\"color:blue;\">False<\/span><span style=\"color:blue;\"> Then<\/span>\r\n         BezeichnungErmitteln = <span style=\"color:blue;\">True<\/span>\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 4: Ermitteln einer eindeutigen Bezeichnung f&uuml;r einen Datensatz<\/span><\/b><\/p>\n<ul>\n<li><b>strBezeichnung<\/b>: Erwartet den aktuellen Wert, den der Benutzer gegebenenfalls zuvor ebenfalls per <b>InputBox<\/b>-Funktion eingegeben hat oder der auf andere Weise vorgegeben wurde.<\/li>\n<li><b>strTabelle<\/b>: Name der Tabelle, in welche die Bezeichung gespeichert werden soll<\/li>\n<li><b>strPrimaerschluessel<\/b>: Name des Prim&auml;rschl&uuml;sselfeldes dieser Tabelle<\/li>\n<li><b>strBezeichnungsfeld<\/b>: Name des Feldes, das nur eindeutige Werte aufnehmen soll<\/li>\n<li><b>strMeldung<\/b>: Optionaler Parameter. Gibt an, welche Meldung in einer <b>InputBox <\/b>angezeigt werden soll, wenn die Bezeichnung erneut eingegeben werden muss.<\/li>\n<li><b>strTitel<\/b>: Wie <b>strMeldung<\/b>, gibt aber den Titel des <b>InputBox<\/b>-Fensters an. Ebenfalls ein optionaler Parameter.<\/li>\n<\/ul>\n<p>Die Prozedur pr&uuml;ft zun&auml;chst, ob der Benutzer gegebenenfalls eine leere Bezeichnung eingegeben hat, was als Bet&auml;tigen der Abbrechen-Schaltfl&auml;che gewertet werden soll. Die Funktion liefert in diesem Fall den Wert <b>False <\/b>zur&uuml;ck und wird an dieser Stelle beendet.<\/p>\n<p>Anderenfalls versucht die Prozedur, den Prim&auml;rsch&uuml;sselwert f&uuml;r einen Datensatz mit dem angegebenen Wert in dem angegebenen Feld zu ermitteln. Ist kein solcher Datensatz vorhanden, liefert die hier verwendete <b>DLookup<\/b>-Abfrage den Wert <b>Null <\/b>zur&uuml;ck, der mit der <b>Nz<\/b>-Funktion durch den Wert <b>0 <\/b>ersetzt wird. Der gefundene Prim&auml;rschl&uuml;sselwert oder der Wert <b>0 <\/b>landen in der Variablen <b>lngID<\/b>. Dieser wird dann mit dem Wert <b>0 <\/b>verglichen.<\/p>\n<p>Liefert die entsprechende <b>If&#8230;Then<\/b>-Bedingung den Wert <b>True<\/b>, stellt die Prozedur den R&uuml;ckgabewert der Funktion auf <b>True <\/b>ein &#8211; die vom Benutzer eingegebene Bezeichnung ist noch nicht vorhanden und kann verwendet werden.<\/p>\n<p>Anderenfalls pr&uuml;ft die Funktion nun, ob beim Aufruf ein benutzerdefinierter Titel und ein entsprechender Text f&uuml;r die <b>InputBox<\/b>-Funktion &uuml;bergeben wurden. Falls nicht, tr&auml;gt die Funktion entsprechende vorgefertigte Ausdr&uuml;cke in die beiden Variablen <b>strMeldung <\/b>und <b>strTitel <\/b>ein.<\/p>\n<p>Dann beginnt die Prozedur mit dem Durchlaufen einer <b>Do While<\/b>-Schleife, die solange l&auml;uft, bis der in <b>lngID <\/b>gespeicherte Wert nicht mehr <b>0 <\/b>ist und die Variable <b>bolAbbrechen <\/b>nicht <b>True <\/b>ist.<\/p>\n<p>Ersteres bedeutet, dass der Benutzer einen Wert eingegeben hat, der noch nicht im betroffenen Feld enthalten ist, zweites bedeutet, dass der Benutzer entweder eine leere Zeichenkette eingegeben und auf <b>OK <\/b>geklickt hat oder dass er direkt die <b>Abbrechen<\/b>-Schaltfl&auml;che bet&auml;tigt hat.<\/p>\n<p>Innerhalb der Schleife fragt die Prozedur nun erneut durch den Aufruf einer <b>InputBox<\/b>-Funktion die Bezeichnung f&uuml;r den neuen Datensatz ab.<\/p>\n<p>Als Parameter &uuml;bergibt sie den in <b>strMeldung <\/b>gespeicherten Meldungstext, die in <b>strTitel <\/b>gespeicherte &uuml;berschrift und den aktuellen Wert aus der Variablen <b>strBezeichnung<\/b>.  Das Ergebnis landet wiederum in der Variablen <b>strBezeichnung<\/b>.<\/p>\n<p>Die Funktion pr&uuml;ft dann mit der <b>Len<\/b>-Funktion, ob die L&auml;nge des Ausdrucks in <b>strBezeichnung <\/b>ungleich <b>0 <\/b>ist (also gr&ouml;&szlig;er als <b>0<\/b>, da <b>Len <\/b>ja keine negativen Werte liefern kann). Ist dies der Fall, ermittelt die Funktion mithilfe des Aufrufs der <b>DLookup<\/b>-Funktion, ob die nun eingegebene Bezeichnung bereits in dem mit <b>strBezeichnungsfeld <\/b>angegebenen Feld der mit <b>strTabelle <\/b>angegebenen Tabelle enthalten ist. Das Ergebnis, also entweder der Prim&auml;rschl&uuml;sselwert des betroffenen Datensatzes oder die Zahl <b>0<\/b>, landen in der Variablen <b>lngID<\/b>.<\/p>\n<p>Sollte die L&auml;nge der Zeichenkette <b>0 <\/b>sein, stellt die Funktion die Variable <b>bolAbbrechen <\/b>direkt auf den Wert <b>True <\/b>ein.<\/p>\n<p>Dies pr&uuml;ft die Funktion dann beim n&auml;chsten Start der <b>Do While<\/b>-Schleife. Diese wird erst abgebrochen, wenn die Variable <b>lngID <\/b>den Wert <b>0<\/b> enth&auml;lt, also die angegebene Bezeichnung noch nicht in dem eindeutigen Feld der Tabelle enthalten ist oder wenn die Variable <b>bolAbbrechen <\/b>den Wert <b>True <\/b>aufweist.<\/p>\n<p>Hat der Benutzer also entweder einen noch nicht vorhandenen Wert f&uuml;r das eindeutige Feld eingegeben oder bei leerem Eingabefeld auf <b>OK <\/b>geklickt beziehungsweise direkt auf <b>Abbrechen<\/b>, dann verl&auml;sst die Funktion die Schleife. Im positiven Fall legt die Funktion als R&uuml;ckgabewert noch den Wert <b>True <\/b>fest.<\/p>\n<p>Diese Funktion k&ouml;nnen Sie an Stellen, an denen Sie ohne Einsatz eines gebundenen Feldes einen neuen Wert ermitteln wollen, der noch nicht in einem bestimmten Feld einer vorgegebenen Tabelle enthalten ist, einsetzen.<\/p>\n<p>Ein Beispiel zur Anwendung dieser Funktion finden Sie im Formular <b>frmArtikel_PruefungBeiDerEingabe<\/b> der Beispieldatenbank, die Funktion im Standardmodul <b>mdlNeueWerteInEindeutigenFeldern<\/b>.<\/p>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>F&uuml;r den Benutzer Ihrer Anwendung ist es unbefriedigend, wenn er Daten eingibt und f&uuml;r den Laien schwer verst&auml;ndliche Fehlermeldungen erh&auml;lt, wenn er beispielsweise doppelte Werte in Tabellenfelder mit eindeutigem Index eingibt.<\/p>\n<p>In diesem Beitrag finden Sie einige Beispiele, wie Sie solche Probleme umgehen k&ouml;nnen und dem Anwender aussagekr&auml;ftige Hinweise liefern statt der Standardfehlermeldungen von Access.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>NeueWerteInEindeutigenFeldern.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{B7F63EF4-0A23-4494-8C1B-5B5AF9842F95}\/aiu_941.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Manche Felder sollen zus&auml;tzlich zu den Prim&auml;rschl&uuml;sselfeldern der eindeutigen Indizierung eines Datensatzes dienen. Der Zweck ist dann nicht haupts&auml;chlich auf Seiten des Datenmodells zu finden, sondern eher bei der Anzeige: Wenn Sie etwa mehrere gleiche Artikel haben, die sie aber in unterschiedlichen Verpackungseinheiten in der Artikeltabelle pflegen, k&ouml;nnen Sie den Artikel nicht nur nach dem Artikelnamen identifizieren. Hier hilft ein weiteres Bezeichnungsfeld, das den Artikelnamen um eindeutige Informationen erweitert. Dieser Beitrag zeigt, wie Sie die Zuweisung eindeutiger Werte f&uuml;r ein solches Feld sicherstellen.<\/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":[662014,66042014,44000021],"tags":[],"class_list":["post-55000941","post","type-post","status-publish","format-standard","hentry","category-662014","category-66042014","category-Tabellen_und_Datenmodellierung"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Neue Werte in eindeutigen Feldern - 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\/Neue_Werte_in_eindeutigen_Feldern\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Neue Werte in eindeutigen Feldern\" \/>\n<meta property=\"og:description\" content=\"Manche Felder sollen zus&auml;tzlich zu den Prim&auml;rschl&uuml;sselfeldern der eindeutigen Indizierung eines Datensatzes dienen. Der Zweck ist dann nicht haupts&auml;chlich auf Seiten des Datenmodells zu finden, sondern eher bei der Anzeige: Wenn Sie etwa mehrere gleiche Artikel haben, die sie aber in unterschiedlichen Verpackungseinheiten in der Artikeltabelle pflegen, k&ouml;nnen Sie den Artikel nicht nur nach dem Artikelnamen identifizieren. Hier hilft ein weiteres Bezeichnungsfeld, das den Artikelnamen um eindeutige Informationen erweitert. Dieser Beitrag zeigt, wie Sie die Zuweisung eindeutiger Werte f&uuml;r ein solches Feld sicherstellen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Neue_Werte_in_eindeutigen_Feldern\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T21:11:29+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/95820c3c3ac4428ebca666367c13bd05\" \/>\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=\"13\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neue_Werte_in_eindeutigen_Feldern\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neue_Werte_in_eindeutigen_Feldern\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Neue Werte in eindeutigen Feldern\",\"datePublished\":\"2020-05-22T21:11:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neue_Werte_in_eindeutigen_Feldern\\\/\"},\"wordCount\":2285,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neue_Werte_in_eindeutigen_Feldern\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/95820c3c3ac4428ebca666367c13bd05\",\"articleSection\":[\"2014\",\"4\\\/2014\",\"Tabellen und Datenmodellierung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Neue_Werte_in_eindeutigen_Feldern\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neue_Werte_in_eindeutigen_Feldern\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neue_Werte_in_eindeutigen_Feldern\\\/\",\"name\":\"Neue Werte in eindeutigen Feldern - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neue_Werte_in_eindeutigen_Feldern\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neue_Werte_in_eindeutigen_Feldern\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/95820c3c3ac4428ebca666367c13bd05\",\"datePublished\":\"2020-05-22T21:11:29+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neue_Werte_in_eindeutigen_Feldern\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Neue_Werte_in_eindeutigen_Feldern\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neue_Werte_in_eindeutigen_Feldern\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/95820c3c3ac4428ebca666367c13bd05\",\"contentUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/95820c3c3ac4428ebca666367c13bd05\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Neue_Werte_in_eindeutigen_Feldern\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Neue Werte in eindeutigen Feldern\"}]},{\"@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":"Neue Werte in eindeutigen Feldern - 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\/Neue_Werte_in_eindeutigen_Feldern\/","og_locale":"de_DE","og_type":"article","og_title":"Neue Werte in eindeutigen Feldern","og_description":"Manche Felder sollen zus&auml;tzlich zu den Prim&auml;rschl&uuml;sselfeldern der eindeutigen Indizierung eines Datensatzes dienen. Der Zweck ist dann nicht haupts&auml;chlich auf Seiten des Datenmodells zu finden, sondern eher bei der Anzeige: Wenn Sie etwa mehrere gleiche Artikel haben, die sie aber in unterschiedlichen Verpackungseinheiten in der Artikeltabelle pflegen, k&ouml;nnen Sie den Artikel nicht nur nach dem Artikelnamen identifizieren. Hier hilft ein weiteres Bezeichnungsfeld, das den Artikelnamen um eindeutige Informationen erweitert. Dieser Beitrag zeigt, wie Sie die Zuweisung eindeutiger Werte f&uuml;r ein solches Feld sicherstellen.","og_url":"https:\/\/access-im-unternehmen.de\/Neue_Werte_in_eindeutigen_Feldern\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T21:11:29+00:00","og_image":[{"url":"http:\/\/vg07.met.vgwort.de\/na\/95820c3c3ac4428ebca666367c13bd05","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"13\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Neue_Werte_in_eindeutigen_Feldern\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Neue_Werte_in_eindeutigen_Feldern\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Neue Werte in eindeutigen Feldern","datePublished":"2020-05-22T21:11:29+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Neue_Werte_in_eindeutigen_Feldern\/"},"wordCount":2285,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Neue_Werte_in_eindeutigen_Feldern\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/95820c3c3ac4428ebca666367c13bd05","articleSection":["2014","4\/2014","Tabellen und Datenmodellierung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Neue_Werte_in_eindeutigen_Feldern\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Neue_Werte_in_eindeutigen_Feldern\/","url":"https:\/\/access-im-unternehmen.de\/Neue_Werte_in_eindeutigen_Feldern\/","name":"Neue Werte in eindeutigen Feldern - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Neue_Werte_in_eindeutigen_Feldern\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Neue_Werte_in_eindeutigen_Feldern\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/95820c3c3ac4428ebca666367c13bd05","datePublished":"2020-05-22T21:11:29+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Neue_Werte_in_eindeutigen_Feldern\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Neue_Werte_in_eindeutigen_Feldern\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Neue_Werte_in_eindeutigen_Feldern\/#primaryimage","url":"http:\/\/vg07.met.vgwort.de\/na\/95820c3c3ac4428ebca666367c13bd05","contentUrl":"http:\/\/vg07.met.vgwort.de\/na\/95820c3c3ac4428ebca666367c13bd05"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Neue_Werte_in_eindeutigen_Feldern\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Neue Werte in eindeutigen Feldern"}]},{"@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\/55000941","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=55000941"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000941\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000941"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000941"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000941"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}