{"id":55000978,"date":"2015-04-01T00:00:00","date_gmt":"2020-05-22T21:07:52","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=978"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"RDBMSTools_als_AddIn_nutzen","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/RDBMSTools_als_AddIn_nutzen\/","title":{"rendered":"RDBMS-Tools als Add-In nutzen"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg07.met.vgwort.de\/na\/cdd813ed2d8c4a89bb840f71a8a3d0a2\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Tabelle mit Add-In-Informationen<\/span><\/b><\/p>\n<p><b>Die Beitr&auml;ge RDBMS-Tools: Verbindungen verwalten und RDBMS-Tools: Tabellen verkn&uuml;pfen stellen zwei praktische Formulare vor, die Sie vor der Benutzung in die Datenbank importieren m&uuml;ssen, bevor Sie diese dort nutzen k&ouml;nnen. Wenn Sie diese jedoch in verschiedenen Anwendungen einsetzen beziehungsweise immer verf&uuml;gbar haben m&ouml;chten, k&ouml;nnen Sie diese auch in Form von Add-Ins betreiben. Dazu sind allerdings einige &auml;nderungen an den Formularen und weitere Erg&auml;nzungen notwendig. Welche das sind, zeigen wir Ihnen im vorliegenden Beitrag.<\/b><\/p>\n<p>Um die Formulare einer Access-Anwendung als Add-In in anderen Access-Anwendungen verf&uuml;gbar zu machen, indem Sie diese &uuml;ber das Ribbon-Men&uuml; <b>Datenbanktools|Add-Ins|Add-Ins <\/b>ausw&auml;hlen und anklicken, m&uuml;ssen Sie Access zun&auml;chst mitteilen, dass die entsprechenden Eintr&auml;ge dort angezeigt werden sollen. Dazu f&uuml;gen Sie der Datenbank eine Tabelle namens <b>USysRegInfo<\/b> hinzu, die wie in Bild 1 aussieht. Im Gegensatz zu einigen anderen Beispielen f&uuml;r Add-Ins, die Sie bisher in Access im Unternehmen kennengelernt haben, wollen wir hier allerdings gleich zwei Add-Ins in einer Add-In-Datei unterbringen.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_02\/pic_978_001.png\" alt=\"Tabelle mit Add-In-Informationen\" width=\"700\" height=\"438,7324\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Tabelle mit Add-In-Informationen<\/span><\/b><\/p>\n<p>Deshalb gibt es jeden der f&uuml;nf Eintr&auml;ge der Tabelle <b>USysRegInfo <\/b>auch zweimal &#8211; je einmal f&uuml;r das Add-In mit dem Eintrag <b>RDBMSTools: Tabellen verkn&uuml;pfen <\/b>und f&uuml;r das Add-In mit dem Eintrag <b>RDBMS-Tools: Verbindungen verwalten<\/b>. Die Datens&auml;tze der Tabelle entsprechen prinzipiell Name-Wert-Paaren, wobei <b>ValName <\/b>den Namen und <b>Value <\/b>den Wert aufnimmt.<\/p>\n<p>Dabei gibt <b>Expression <\/b>die beim Ausw&auml;hlen des Eintrags auszuf&uuml;hrende Funktion an, <b>Library <\/b>die Datenbank, welche die Funktion enth&auml;lt, <b>Description <\/b>liefert eine Beschreibung und <b>Version <\/b>gibt an, f&uuml;r welchen Access-Datenbanktyp das Add-In geeignet ist.<\/p>\n<p>Der Wert <b>3 <\/b>besagt hier, dass das Add-In nur f&uuml;r reine Access-Datenbanken, nicht jedoch f&uuml;r Access-Projekte (<b>.adp<\/b>-Dateien) zur Verf&uuml;gung steht.<\/p>\n<p>Nachdem Sie eine Datenbank mit dieser Tabelle ausgestattet und diese mit der Dateiendung <b>.mda<\/b>\/<b>.accda <\/b>versehen haben, rufen Sie den <b>Add-In-Manager <\/b>auf (Ribbon-Eintrag <b>Datenbanktools|Add-Ins|Add-Ins|Add-In-Manager<\/b>). Klicken Sie auf die Schaltfl&auml;che <b>Neues hinzuf&uuml;gen&#8230; <\/b>und w&auml;hlen Sie im folgenden Dialog die Add-In-Datei aus. Anschlie&szlig;end finden Sie diese wie in Bild 2 mit einigen weiteren Informationen im Add-In-Manager in der Liste der verf&uuml;gbaren Add-Ins vor.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_02\/pic_978_003.png\" alt=\"Installieren des neuen Add-Ins\" width=\"500\" height=\"295,5555\"\/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Installieren des neuen Add-Ins<\/span><\/b><\/p>\n<p>Schlie&szlig;lich tauchen beim n&auml;chsten Start von Access zwei neue Eintr&auml;ge in der Liste der verf&uuml;gbaren Add-Ins auf (s. Bild 3).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_02\/pic_978_002.png\" alt=\"Auswahl der beiden neuen Add-Ins\" width=\"650\" height=\"382,6058\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: Auswahl der beiden neuen Add-Ins<\/span><\/b><\/p>\n<p><b>Add-In-Eintr&auml;ge mit Leben f&uuml;llen<\/b><\/p>\n<p>Nun soll der erste Eintrag das Formular <b>frmTabellenVerknuepfen <\/b>&ouml;ffnen, das wir im Beitrag <b>RDBMS-Tools: Tabellen verkn&uuml;pfen <\/b>vorgestellt haben und der zweite Eintrag das Formular <b>frmVerbindungszeichenfolgen <\/b>aus dem Beitrag <b>RDBMS-Tools: Verbindungen verwalten<\/b>.<\/p>\n<p>Dazu fehlt noch eine wichtige Entscheidung: Die beiden Tools greifen ja auf die beiden Tabellen <b>tblVerbindungszeichenfolgen <\/b>und <b>tblTreiber <\/b>zu, um die Verbindungszeichenfolgen erstens zu verwalten und zweitens zum Zwecke der Verkn&uuml;pfung von Tabellen auf diese zuzugreifen. Nun stellt sich die Frage, wo wir diese Tabellen speichern sollen: In der Add-In-Datenbank oder in der Datenbank, in der wir die Verkn&uuml;pfungen zu den RDBMS-Tabellen anlegen m&ouml;chten.<\/p>\n<p>Wir entscheiden uns daf&uuml;r, die Tabellen in der jeweiligen Zieldatenbank zu installieren, damit die Verbindungsdaten f&uuml;r die jeweilige Backend-Datenbank immer direkt im entsprechenden Frontend gespeichert sind. Au&szlig;erdem k&ouml;nnen Sie so auch noch VBA-Code zur Anwendung selbst hinzuf&uuml;gen, der sich die Inhalte der Tabelle <b>tblVerbindungszeichenfolgen <\/b>zunutze macht.<\/p>\n<p>Wir m&uuml;ssen also beim Starten einer der beiden Add-In-Funktionen in der Datei <b>RDBMSTools.mda <\/b>jeweils pr&uuml;fen, ob die Tabellen <b>tblVerbindungszeichenfolgen <\/b>und <b>tblTreiber <\/b>bereits in der aufrufenden Datenbank enthalten sind, und diese gegebenenfalls dort hinzuf&uuml;gen.<\/p>\n<p>Weiter oben in der Tabelle <b>USysRegInfo <\/b>haben wir f&uuml;r die beiden Add-Ins die Funktionen <b>AutostartTabellenVerknuepfen <\/b>und <b>AutostartVerbindungenVerwalten <\/b>angegeben. Diese werden ausgel&ouml;st, wenn der Benutzer eines der Add-Ins &uuml;ber den entsprechenden Ribbon-Eintrag aufruft.<\/p>\n<p>Beide sollen beim Start zun&auml;chst eine Prozedur namens <b>TabellenErstellen<\/b> aufrufen, die sich um die Tabellen k&uuml;mmert, und dann erst das Formular f&uuml;r die jeweilige Add-In-Funktion. Die beiden VBA-Funktionen sehen wir folgt aus:<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>AutostartTabellenVerknuepfen()\r\n     TabellenErstellen\r\n     DoCmd.OpenForm \"frmTabellenVerknuepfen\"\r\n<span style=\"color:blue;\">End Function<\/span>\r\n<span style=\"color:blue;\">Public Function <\/span>AutostartVerbindungenVerwalten()\r\n     TabellenErstellen\r\n     DoCmd.OpenForm \"frmVerbindungszeichenfolgen\"\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p>Die Prozedur <b>TabellenErstellen<\/b> finden Sie in Listing 1. Die Prozedur legt zun&auml;chst den Namen der Zieltabelle mit <b>tblVerbindungszeichenfolgen<\/b> fest und versucht, bei deaktivierter Fehlerbehandlung eine Tabelle dieses Namens in der aufrufenden Datenbank zu referenzieren. Dabei ist zu beachten, dass wir die aufrufende Datenbank mit der Variablen <b>dbClient <\/b>referenzieren, die wir mit der Funktion <b>CurrentDb <\/b>f&uuml;llen.<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>TabellenErstellen()\r\n     <span style=\"color:blue;\">Dim <\/span>dbClient<span style=\"color:blue;\"> As <\/span>DAO.Database, dbAddIn<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>strTabelle<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>tdf<span style=\"color:blue;\"> As <\/span>DAO.TableDef, idx<span style=\"color:blue;\"> As <\/span>DAO.Index, fld<span style=\"color:blue;\"> As <\/span>DAO.Field\r\n     <span style=\"color:blue;\">Set<\/span> dbClient = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> dbAddIn = CodeDb\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     strTabelle = \"tblVerbindungszeichenfolgen\"\r\n     <span style=\"color:blue;\">Set<\/span> tdf = dbClient.TableDefs(strTabelle)\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n     <span style=\"color:blue;\">If <\/span>tdf Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n         dbClient.Execute \"SELECT * INTO \" & strTabelle & \" FROM tblVerbindungszeichenfolgen IN ''\" & dbAddIn.Name _\r\n             & \"''\", dbFailOnError\r\n         dbClient.TableDefs.Refresh\r\n         <span style=\"color:blue;\">Set<\/span> tdf = dbClient.TableDefs(strTabelle)\r\n         <span style=\"color:blue;\">Set<\/span> idx = tdf.CreateIndex(\"PK\" & strTabelle)\r\n         <span style=\"color:blue;\">With<\/span> idx\r\n             <span style=\"color:blue;\">Set<\/span> fld = idx.CreateField(\"VerbindungszeichenfolgeID\")\r\n             .Fields.Append fld\r\n             .Primary = <span style=\"color:blue;\">True<\/span>\r\n         End <span style=\"color:blue;\">With<\/span>\r\n         tdf.Indexes.Append idx\r\n         <span style=\"color:blue;\">Set<\/span> idx = tdf.CreateIndex(\"UK\" & strTabelle)\r\n         <span style=\"color:blue;\">With<\/span> idx\r\n             <span style=\"color:blue;\">Set<\/span> fld = idx.CreateField(\"Bezeichnung\")\r\n             .Fields.Append fld\r\n             .Unique = <span style=\"color:blue;\">True<\/span>\r\n         End <span style=\"color:blue;\">With<\/span>\r\n         tdf.Indexes.Append idx\r\n         dbClient.Execute \"DELETE FROM \" & strTabelle, dbFailOnError\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> tdf = Nothing\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     strTabelle = \"tblTreiber\"\r\n     <span style=\"color:blue;\">Set<\/span> tdf = dbClient.TableDefs(strTabelle)\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n     <span style=\"color:blue;\">If <\/span>tdf Is Nothing<span style=\"color:blue;\"> Then<\/span>\r\n         dbClient.Execute \"SELECT * INTO \" & strTabelle & \" FROM tblTreiber IN ''\" & dbAddIn.Name & \"''\", dbFailOnError\r\n         dbClient.TableDefs.Refresh\r\n         <span style=\"color:blue;\">Set<\/span> tdf = dbClient.TableDefs(strTabelle)\r\n         <span style=\"color:blue;\">Set<\/span> idx = tdf.CreateIndex(\"PK\" & strTabelle)\r\n         <span style=\"color:blue;\">With<\/span> idx\r\n             <span style=\"color:blue;\">Set<\/span> fld = idx.CreateField(\"TreiberID\")\r\n             .Fields.Append fld\r\n             .Primary = <span style=\"color:blue;\">True<\/span>\r\n         End <span style=\"color:blue;\">With<\/span>\r\n         tdf.Indexes.Append idx\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     Application.RefreshDatabaseWindow\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><!--30percent--><\/p>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Prozedur zum Erstellen der Tabellen f&uuml;r die Verbindungen und Treiberinformationen<\/span><\/b><\/p>\n<p>Die Add-In-Datenbank speichern wir in der Variablen <b>dbAddIn<\/b>, und zwar &uuml;ber die Funktion <b>CodeDb<\/b>. Wenn die Variable <b>tdf <\/b>nach dem Versuch, diese mit einem Verweis auf die Tabelle <b>tblVerbindungszeichenfolgen <\/b>zu f&uuml;llen, noch leer ist, soll die Prozedur diese neu anlegen. Diese k&ouml;nnte man komplett per DAO erledigen und dabei Feld f&uuml;r Feld anlegen.<\/p>\n<p>Da diese Tabelle jedoch schon in der Add-In-Datenbank vorliegt, kopieren wir einfach die komplette Tabelle aus der Add-In-Datenbank in die Client-Datenbank &#8211; und zwar mit einer Version der <b>SELECT&#8230;INTO<\/b>-Anweisung, die ihre Datenquelle &uuml;ber die <b>IN<\/b>-Klausel aus einer anderen Datenbank bezieht &#8211; in diesem Fall aus der Add-In-Datenbank, deren Pfad wir mit der Eigenschaft <b>Name <\/b>der Variablen <b>dbAddIn <\/b>ermitteln.<\/p>\n<p>Auf diese Weise kopieren wir das Grundger&uuml;st der Tabelle in die Zieldatenbank, also die Felder mit dem korrekten Felddatentyp sowie die Inhalte. Die Inhalte l&ouml;schen wir weiter unten wieder, da der Benutzer ja seine eigenen Verbindungszeichenfolgen anlegen soll.<\/p>\n<p>Beim Kopieren der Tabelle mit <b>SELECT&#8230;INTO <\/b>werden die Indizes leider nicht mit &uuml;bertragen. Daher m&uuml;ssen wir dies noch per Code erledigen. Dazu aktualisiert die Prozedur zun&auml;chst die <b>TableDefs<\/b>-Auflistung der Client-Datenbank mit der <b>Refresh<\/b>-Methode.<\/p>\n<p>Dann referenziert sie die neue Tabelle mit der Variablen <b>tdf<\/b> und erstellt ein neues <b>Index<\/b>-Objekt f&uuml;r diese Tabelle. Sie legt ein neues <b>Field<\/b>-Objekt mit <b>CreateField <\/b>f&uuml;r das <b>Index<\/b>-Objekt <b>idx <\/b>an und weist diesem den Namen des Feldes der Tabelle zu, das als Prim&auml;rschl&uuml;ssel verwendet werden soll &#8211; also <b>VerbindungszeichenfolgeID<\/b>.<\/p>\n<p>Dieses <b>Field<\/b>-Objekt h&auml;ngt sie dann an die <b>Fields<\/b>-Auflistung von <b>idx <\/b>an und stellt seine Eigenschaft <b>Primary <\/b>auf <b>True <\/b>ein.<\/p>\n<p>Auf &auml;hnliche Weise f&uuml;gt die Prozedur nun noch den eindeutigen Index zum Feld Bezeichnung hinzu. Hier stellt sie allerdings die Eigenschaft <b>Unique <\/b>auf den Wert <b>True <\/b>ein. Danach l&ouml;scht die Prozedur alle Datens&auml;tze der Tabelle.<\/p>\n<p>Die folgenden Zeilen &uuml;bertragen dann die Tabelle <b>tblTreiber <\/b>in die Zieldatenbank. Auch hier legt sie nachtr&auml;glich noch ein Prim&auml;rschl&uuml;sselfeld fest. Schlie&szlig;lich aktualisiert die Prozedur noch den Navigationsbereich, damit die hinzugef&uuml;gten Tabellen auch angezeigt werden.<\/p>\n<p>&uuml;brigens: Die Autowert-Eigenschaft wird im Gegensatz zu den Indizes sehr wohl mit der <b>SELECT&#8230;INTO<\/b>-Anweisung &uuml;bertragen, um diese brauchen wir uns also nicht zu k&uuml;mmern.<\/p>\n<p>Damit haben wir nun schon einmal die beiden Tabellen <b>tblVerbindungszeichenfolgen<\/b> und <b>tblTreiber <\/b>in die Zieldatenbank kopiert.<\/p>\n<p>Nun fehlen noch ein paar Anpassungen, damit die beiden Formulare auch auf die Daten in diesen beiden Tabellen zugreifen und nicht auf die im Add-In befindlichen Tabellen.<\/p>\n<p><b>Formular frm-Ver-bin-dungs-zeichen-folgen anpassen<\/b><\/p>\n<p>Das Formular <b>frmVerbindungszeichenfolgen <\/b>bezieht an zwei Stellen Daten aus den Tabellen <b>tblVerbindungszeichenfolgen<\/b>: als Datenherkunft des Formulars selbst und als Datensatzherkunft des Kombinationsfeldes <b>cboSchnellauswahl<\/b>.<\/p>\n<p>Au&szlig;erdem soll das Kombinationsfeld <b>cboTreiberID <\/b>noch aus der Tabelle <b>tblTreiber <\/b>bef&uuml;llt werden.<\/p>\n<p>Die jeweiligen Eigenschaften leeren Sie, daf&uuml;r f&uuml;gen wir entsprechende Recordsets per VBA-Code zu den Objekten hinzu.<\/p>\n<p>Zum F&uuml;llen der entsprechenden Recordsets haben wie eine Prozedur namens <b>DatenAktualisieren <\/b>hinzuf&uuml;gt, die etwa beim Laden des Formulars wie folgt aufgerufen wird:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     DatenAktualisieren\r\n     ...\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die Prozedur <b>DatenAktualisieren<\/b> sieht wie in Listing 2 aus und legt f&uuml;r jedes der drei mit Daten zu versehenden Objekte (ein Formular\/zwei Kombinationsfelder) jeweils ein Recordset auf Basis der entsprechenden Tabelle\/Abfrage an. Dabei erstellt sie die Recordsets mit der <b>OpenRecordset<\/b>-Methode des Objekts <b>dbClient<\/b>, die ja mit <b>CurrentDb <\/b>gef&uuml;llt wurde.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>DatenAktualisieren()\r\n     <span style=\"color:blue;\">Dim <\/span>dbClient<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rstVerbindungszeichenfolgen<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>rstVerbindungszeichenfolgen_Cbo<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>rstTreiber<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>strSQLCbo<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strSQL<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strSQLTreiber<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Set<\/span> dbClient = CurrentDb\r\n     strSQL = \"tblVerbindungszeichenfolgen\"\r\n     <span style=\"color:blue;\">Set<\/span> rstVerbindungszeichenfolgen = dbClient.OpenRecordset(strSQL, _\r\n         dbOpenDynaset)\r\n     <span style=\"color:blue;\">Set<\/span> Me.Recordset = rstVerbindungszeichenfolgen\r\n     strSQLCbo = \"SELECT VerbindungszeichenfolgeID, Bezeichnung \" _\r\n         & \"FROM tblVerbindungszeichenfolgen;\"\r\n     <span style=\"color:blue;\">Set<\/span> rstVerbindungszeichenfolgen_Cbo = dbClient.OpenRecordset(strSQLCbo, _\r\n         dbOpenDynaset)\r\n     <span style=\"color:blue;\">Set<\/span> Me!cboSchnellauswahl.Recordset = rstVerbindungszeichenfolgen_Cbo\r\n     strSQLTreiber = \"tblTreiber\"\r\n     <span style=\"color:blue;\">Set<\/span> rstTreiber = dbClient.OpenRecordset(strSQLTreiber, dbOpenDynaset)\r\n     <span style=\"color:blue;\">Set<\/span> Me!cboTreiberID.Recordset = rstTreiber\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Aktualisieren der Datenherk&uuml;nfte und Datensatzherk&uuml;nfte<\/span><\/b><\/p>\n<p>Danach weist die Prozedur die <b>Recordset<\/b>-Objekte jeweils der <b>Recordset<\/b>-Eigenschaft des Formulars und der beiden Kombinationsfelder zu.<\/p>\n<p>Davon abgesehen greifen die meisten Ereignisprozeduren ja schon &uuml;ber mit der Funktion <b>CurrentDb <\/b>gef&uuml;llte <b>Database<\/b>-Objekte auf die Tabellen zu.<\/p>\n<p>Dies funktioniert ja nach wie vor, weil <b>CurrentDb <\/b>das <b>Database<\/b>-Objekt der Client-Datenbank referenziert, in der sich ja auch die zu bearbeitenden Tabellen befinden.<\/p>\n<p><b>Anpassen des Formulars frmTabellenVerknuepfen<\/b><\/p>\n<p>Dieses Formular greift nur &uuml;ber das Kombinationsfeld <b>cboVerbindungszeichenfolgen <\/b>auf die Tabellen der Datenbank zu. Also brauchen wir auch hier nur eine Anpassung vorzunehmen:<\/p>\n<p>Das Kombinationsfeld erh&auml;lt seine Datensatzherkunft nun nicht mehr &uuml;ber die Eigenschaft <b>Datensatzherkunft<\/b>, sondern es wird durch einige Anweisungen gef&uuml;llt, die in der Ereignisprozedur <b>Beim Laden <\/b>ausgef&uuml;hrt werden:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     <span style=\"color:blue;\">Dim <\/span>lngVerbindungszeichenfolgeID<span style=\"color:blue;\"> As Long<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>strSQL<span style=\"color:blue;\"> As String<\/span>\r\n     <span style=\"color:blue;\">Dim <\/span>dbClient<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n     <span style=\"color:blue;\">Dim <\/span>rstVerbindungszeichenfolgen<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     strSQL = \"SELECT VerbindungszeichenfolgeID, \" _\r\n         & \"Verbindungszeichenfolge, Bezeichnung \" _\r\n         & \"FROM tblVerbindungszeichenfolgen;\"\r\n     <span style=\"color:blue;\">Set<\/span> dbClient = CurrentDb\r\n     <span style=\"color:blue;\">Set<\/span> rstVerbindungszeichenfolgen = _\r\n         dbClient.OpenRecordset(strSQL, dbOpenDynaset)\r\n     <span style=\"color:blue;\">Set<\/span> Me!cboVerbindung.Recordset = _\r\n         rstVerbindungszeichenfolgen\r\n     ...\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b>Zusatzformular zum Im- und Export von Verbindungszeichenfolgen<\/b><\/p>\n<p>Nun wollen wir noch etwas Komfort zur L&ouml;sung hinzuf&uuml;gen, indem wir dem Benutzer die M&ouml;glichkeit bieten, alle &uuml;berhaupt ben&ouml;tigten Verbindungszeichenfolgen weiterhin in der Tabelle <b>tblVerbindugszeichenfolgen <\/b>im Add-In zu speichern und diese bei Bedarf vom Add-In in die Client-Datenbank zu &uuml;bertragen und umgekehrt.<\/p>\n<p>Dazu f&uuml;gen wir dem Formular <b>frmVerbindungszeichenfolgen <\/b>eine Schaltfl&auml;che namens <b>cmdImExport <\/b>hinzu, welche schlicht ein weiteres Formular namens <b>frmVerbindungszeichenfolgenZuordnen <\/b>aufruft. Diese Prozedur &ouml;ffnet nicht nur das Formular als modalen Dialog, sondern aktualisiert nach dem Schlie&szlig;en dieses Formulars auch die Daten des aufrufenden Formulars:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdImExport_Click()\r\n     DoCmd.OpenForm \"frmVerbindungszeichenfolgenZuordnen\", _\r\n         WindowMode:=acDialog\r\n     DatenAktualisieren\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Dieses sieht wie in aus Bild 4 und zeigt in zwei Listenfeldern die Verbindungszeichenfolgen an, die im Add-In (also allgemein) und in der aktuell ge&ouml;ffneten Client-Anwendung in der Tabelle <b>tblVerbindungszeichenfolgen <\/b>gespeichert sind.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2015_02\/pic_978_004.png\" alt=\"Im- und Export von Verbindungszeichenfolgen\" width=\"600\" height=\"380,4417\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Im- und Export von Verbindungszeichenfolgen<\/span><\/b><\/p>\n<p>Wenn Sie per Doppelklick auf einen der Listeneintr&auml;ge klicken, wird der entsprechende Eintrag kopiert und auch in der jeweils anderen Liste angelegt. Sie k&ouml;nnen auch einen oder mehrere Eintr&auml;ge markieren und diese mit einem Klick auf die Schaltfl&auml;che <b>Markierte entfernen <\/b>l&ouml;schen.<\/p>\n<p>Beim Laden f&uuml;llt das Formular zun&auml;chst zwei Database-Variablen &#8211; eine f&uuml;r das Add-In und eine f&uuml;r die Client-Datenbank:<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     <span style=\"color:blue;\">Set<\/span> dbAddIn = CodeDb\r\n     <span style=\"color:blue;\">Set<\/span> dbClient = CurrentDb\r\n     ListenfelderAktualisieren\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Die beiden Variablen deklarieren Sie im Kopf des Klassenmoduls des Formulars:<\/p>\n<pre><span style=\"color:blue;\">Dim <\/span>dbAddIn<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n<span style=\"color:blue;\">Dim <\/span>dbClient<span style=\"color:blue;\"> As <\/span>DAO.Database<\/pre>\n<p>Fehlt noch die Prozedur <b>ListenfelderAktualisieren<\/b>, die Sie in Listing 3 finden und die jeweils ein Recordset mit den Daten der Tabelle des jeweiligen <b>Database<\/b>-Objekts einliest. Diese weist sie dann den <b>Recordset<\/b>-Eigenschaften der beiden Listenfelder zu.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>ListenfelderAktualisieren()\r\n     <span style=\"color:blue;\">Dim <\/span>rstAddIn<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Dim <\/span>rstClient<span style=\"color:blue;\"> As <\/span>DAO.Recordset\r\n     <span style=\"color:blue;\">Set<\/span> rstAddIn = dbAddIn.OpenRecordset(\"SELECT VerbindungszeichenfolgeID,  Bezeichnung FROM tblVerbindungszeichenfolgen ORDER BY Bezeichnung\", dbOpenDynaset)\r\n     <span style=\"color:blue;\">Set<\/span> rstClient = dbClient.OpenRecordset(\"SELECT VerbindungszeichenfolgeID,  Bezeichnung FROM tblVerbindungszeichenfolgen ORDER BY Bezeichnung\", dbOpenDynaset)\r\n     <span style=\"color:blue;\">Set<\/span> Me!lstImAddIn.Recordset = rstAddIn\r\n     <span style=\"color:blue;\">Set<\/span> Me!lstInDieserDatenbank.Recordset = rstClient\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: F&uuml;llen der beiden Listenfelder<\/span><\/b><\/p>\n<p><b>Verbindungszeichen vom Add-In zum Client kopieren<\/b><\/p>\n<p>Damit Sie per Doppelklick die im Add-In gespeicherten Verbindungszeichenfolgen in die Client-Datenbank kopieren k&ouml;nnen, f&uuml;gen wir dem Listenfeld <b>lstImAddIn <\/b>eine Prozedur f&uuml;r die Ereigniseigenschaft <b>Beim Doppeklicken <\/b>hinzu (s. Listing 4).<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>lstImAddIn_DblClick(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     dbClient.Execute \"INSERT INTO tblVerbindungszeichenfolgen SELECT * \" _\r\n         & \"FROM tblVerbindungszeichenfolgen IN ''\" & dbAddIn.Name _\r\n         & \"'' WHERE VerbindungszeichenfolgeID = \" _\r\n         & Me!lstImAddIn.ItemData(Me!lstImAddIn.ItemsSelected(0)), dbFailOnError\r\n     <span style=\"color:blue;\">If <\/span>Err.Number = 3022<span style=\"color:blue;\"> Then<\/span>\r\n         <span style=\"color:blue;\">MsgBox<\/span> \"Die Verbindungszeichenfolge ist bereits vorhanden.\"\r\n     <span style=\"color:blue;\">End If<\/span>\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n     ListenfelderAktualisieren\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 4: Kopieren eines Eintrags<\/span><\/b><\/p>\n<p>Diese f&uuml;hrt eine <b>INSERT INTO<\/b>-Aktionsabfrage aus, die den Datensatz der Tabelle <b>tblVerbindungszeichenfolgen <\/b>der Add-In-Datenbank (<b>dbAddIn.Name<\/b>) in die entsprechende Tabelle der Client-Datenbank kopiert. Hierbei k&ouml;nnte ein Fehler auftreten, wenn bereits ein Datensatz mit dem gleichen Wert im Feld Bezeichnung vorhanden ist. Dies l&ouml;st eine entsprechende Meldung aus.<\/p>\n<p>Die entsprechende Prozedur, die durch einen Doppelklick auf die Eintr&auml;ge des Listenfeldes <b>lstInDieserDatenbank<\/b> ausgel&ouml;st wird, f&uuml;hrt den Kopiervorgang mit vertauschten Datenbanken aus &#8211; hier wird der Datensatz aus der mit <b>dbClient <\/b>referenzierten Datenbank in die mit <b>dbAddIn <\/b>referenzierte kopiert.<\/p>\n<p><b>Entfernen von Verbindungszeichenfolgen<\/b><\/p>\n<p>Damit Sie schnell eine oder mehrere Verbindungszeichenfolgen aus der Client-Datenbank oder aus der Add-In-Datenbank entfernen k&ouml;nnen, haben wir erstens die Eigenschaft <b>Mehrfachauswahl <\/b>der beiden Listenfelder auf <b>Erweitert <\/b>eingestellt.<\/p>\n<p>Zweitens haben wir f&uuml;r die Schaltfl&auml;chen <b>cmdEntfernenAddIn <\/b>und <b>cmdEntfernenDieseDatenbank <\/b>jeweils eine Ereignisprozedur hinterlegt, welche die markierten Datens&auml;tze durchl&auml;uft und diese aus der Tabelle <b>tblVerbindungszeichenfolgen <\/b>der jeweiligen Datenbank entfernt. Listing 5 zeigt die entsprechende Prozedur f&uuml;r das Listenfeld <b>lstInDieserDatenbank<\/b>.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>cmdEntfernenDieseDatenbank_Click()\r\n     <span style=\"color:blue;\">Dim <\/span>i<span style=\"color:blue;\"> As Integer<\/span>\r\n     For i = 0 To Me!lstInDieserDatenbank.ItemsSelected.Count - 1\r\n         dbClient.Execute \"DELETE FROM tblVerbindungszeichenfolgen \" _\r\n             \"WHERE VerbindungszeichenfolgeID = \" _\r\n             & Me!lstInDieserDatenbank.ItemData(i), dbFailOnError\r\n     <span style=\"color:blue;\">Next<\/span> i\r\n     ListenfelderAktualisieren\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 5: L&ouml;schen von Verbindungszeichenfolgen aus der Client-Datenbank<\/span><\/b><\/p>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Mit dem hier vorgestellten Add-In vereinen Sie die beiden in anderen Beitr&auml;gen vorgestellten Formulare, die sich auch f&uuml;r den Einsatz als st&auml;ndiger Bestandteil einer Anwendung eignen, in einem Add-In, das Sie von jeder Access-Datenbank aus aufrufen k&ouml;nnen.<\/p>\n<p>Die beiden Add-Ins erlauben es, erstens Verbindungszeichenfolgen zusammenzustellen und zweitens Tabellen aus RDBMS-Datenbanken auf Basis dieser Verbindungszeichenfolgen in die aktuell ge&ouml;ffnete Datenbank einzubinden.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>RDBMSTools.mda<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/{0548DDA4-FD70-4367-9D66-6EA3513BC295}\/aiu_978.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die Beitr&auml;ge RDBMS-Tools: Verbindungen verwalten und RDBMS-Tools: Tabellen verkn&uuml;pfen stellen zwei praktische Formulare vor, die Sie vor der Benutzung in die Datenbank importieren m&uuml;ssen, bevor Sie diese dort nutzen k&ouml;nnen. Wenn Sie diese jedoch in verschiedenen Anwendungen einsetzen beziehungsweise immer verf&uuml;gbar haben m&ouml;chten, k&ouml;nnen Sie diese auch in Form von Add-Ins betreiben. Dazu sind allerdings einige &Auml;nderungen an den Formularen und weitere Erg&auml;nzungen notwendig. Welche das sind, zeigen wir Ihnen im vorliegenden 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":[66022015,662015,44000027],"tags":[],"class_list":["post-55000978","post","type-post","status-publish","format-standard","hentry","category-66022015","category-662015","category-Loesungen"],"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>RDBMS-Tools als Add-In nutzen - 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\/RDBMSTools_als_AddIn_nutzen\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RDBMS-Tools als Add-In nutzen\" \/>\n<meta property=\"og:description\" content=\"Die Beitr&auml;ge RDBMS-Tools: Verbindungen verwalten und RDBMS-Tools: Tabellen verkn&uuml;pfen stellen zwei praktische Formulare vor, die Sie vor der Benutzung in die Datenbank importieren m&uuml;ssen, bevor Sie diese dort nutzen k&ouml;nnen. Wenn Sie diese jedoch in verschiedenen Anwendungen einsetzen beziehungsweise immer verf&uuml;gbar haben m&ouml;chten, k&ouml;nnen Sie diese auch in Form von Add-Ins betreiben. Dazu sind allerdings einige &Auml;nderungen an den Formularen und weitere Erg&auml;nzungen notwendig. Welche das sind, zeigen wir Ihnen im vorliegenden Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/RDBMSTools_als_AddIn_nutzen\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-22T21:07:52+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg07.met.vgwort.de\/na\/cdd813ed2d8c4a89bb840f71a8a3d0a2\" \/>\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\\\/RDBMSTools_als_AddIn_nutzen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RDBMSTools_als_AddIn_nutzen\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"RDBMS-Tools als Add-In nutzen\",\"datePublished\":\"2020-05-22T21:07:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RDBMSTools_als_AddIn_nutzen\\\/\"},\"wordCount\":2095,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RDBMSTools_als_AddIn_nutzen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/cdd813ed2d8c4a89bb840f71a8a3d0a2\",\"articleSection\":[\"2\\\/2015\",\"2015\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/RDBMSTools_als_AddIn_nutzen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RDBMSTools_als_AddIn_nutzen\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RDBMSTools_als_AddIn_nutzen\\\/\",\"name\":\"RDBMS-Tools als Add-In nutzen - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RDBMSTools_als_AddIn_nutzen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RDBMSTools_als_AddIn_nutzen\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/cdd813ed2d8c4a89bb840f71a8a3d0a2\",\"datePublished\":\"2020-05-22T21:07:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RDBMSTools_als_AddIn_nutzen\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/RDBMSTools_als_AddIn_nutzen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RDBMSTools_als_AddIn_nutzen\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/cdd813ed2d8c4a89bb840f71a8a3d0a2\",\"contentUrl\":\"http:\\\/\\\/vg07.met.vgwort.de\\\/na\\\/cdd813ed2d8c4a89bb840f71a8a3d0a2\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/RDBMSTools_als_AddIn_nutzen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"RDBMS-Tools als Add-In nutzen\"}]},{\"@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":"RDBMS-Tools als Add-In nutzen - 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\/RDBMSTools_als_AddIn_nutzen\/","og_locale":"de_DE","og_type":"article","og_title":"RDBMS-Tools als Add-In nutzen","og_description":"Die Beitr&auml;ge RDBMS-Tools: Verbindungen verwalten und RDBMS-Tools: Tabellen verkn&uuml;pfen stellen zwei praktische Formulare vor, die Sie vor der Benutzung in die Datenbank importieren m&uuml;ssen, bevor Sie diese dort nutzen k&ouml;nnen. Wenn Sie diese jedoch in verschiedenen Anwendungen einsetzen beziehungsweise immer verf&uuml;gbar haben m&ouml;chten, k&ouml;nnen Sie diese auch in Form von Add-Ins betreiben. Dazu sind allerdings einige &Auml;nderungen an den Formularen und weitere Erg&auml;nzungen notwendig. Welche das sind, zeigen wir Ihnen im vorliegenden Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/RDBMSTools_als_AddIn_nutzen\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-22T21:07:52+00:00","og_image":[{"url":"http:\/\/vg07.met.vgwort.de\/na\/cdd813ed2d8c4a89bb840f71a8a3d0a2","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\/RDBMSTools_als_AddIn_nutzen\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/RDBMSTools_als_AddIn_nutzen\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"RDBMS-Tools als Add-In nutzen","datePublished":"2020-05-22T21:07:52+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/RDBMSTools_als_AddIn_nutzen\/"},"wordCount":2095,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/RDBMSTools_als_AddIn_nutzen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/cdd813ed2d8c4a89bb840f71a8a3d0a2","articleSection":["2\/2015","2015","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/RDBMSTools_als_AddIn_nutzen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/RDBMSTools_als_AddIn_nutzen\/","url":"https:\/\/access-im-unternehmen.de\/RDBMSTools_als_AddIn_nutzen\/","name":"RDBMS-Tools als Add-In nutzen - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/RDBMSTools_als_AddIn_nutzen\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/RDBMSTools_als_AddIn_nutzen\/#primaryimage"},"thumbnailUrl":"http:\/\/vg07.met.vgwort.de\/na\/cdd813ed2d8c4a89bb840f71a8a3d0a2","datePublished":"2020-05-22T21:07:52+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/RDBMSTools_als_AddIn_nutzen\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/RDBMSTools_als_AddIn_nutzen\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/RDBMSTools_als_AddIn_nutzen\/#primaryimage","url":"http:\/\/vg07.met.vgwort.de\/na\/cdd813ed2d8c4a89bb840f71a8a3d0a2","contentUrl":"http:\/\/vg07.met.vgwort.de\/na\/cdd813ed2d8c4a89bb840f71a8a3d0a2"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/RDBMSTools_als_AddIn_nutzen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"RDBMS-Tools als Add-In nutzen"}]},{"@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\/55000978","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=55000978"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000978\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000978"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000978"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000978"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}