{"id":55000470,"date":"2007-08-01T00:00:00","date_gmt":"2021-02-11T21:17:04","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=470"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Temporaere_Datenbanken_in_der_Praxis","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Temporaere_Datenbanken_in_der_Praxis\/","title":{"rendered":"Tempor&auml;re Datenbanken in der Praxis"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg03.met.vgwort.de\/na\/354c8e36be3d4abaad1ceb766e33e82c\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>In der letzten Ausgabe haben Sie erfahren, wie einfach es ist, die Basis f&uuml;r die Verwendung von tempor&auml;ren Tabellen zu schaffen. Durch Parameter und ein paar Zeilen Code erstellen Sie eine Datenbank, die bei jedem Start Ihrer Anwendung automatisch erzeugt wird. Dieser Artikel soll Ihnen nun die Anwendung tempor&auml;rer Datenbanken in der Praxis demonstrieren.<\/b><\/p>\n<\/p><\/div>\n<div class=\"story\">\n<p>Der Hintergrund f&uuml;r den Einsatz einer tempor&auml;ren Datenbank ist, in Frontend-Backend-Szenarios oft verwendete, aber selten ge&auml;nderte Daten &#8211; etwa zum F&uuml;llen von Kombinationsfeldern &#8211; f&uuml;r die Dauer einer Sitzung auf den lokalen Rechner zu kopieren. Dabei soll nicht nur eine tempor&auml;re Tabelle, sondern direkt eine tempor&auml;re Datenbank helfen, weil dies das Aufbl&auml;hen des eigentlichen Frontends verringert.<\/p>\n<p>Im Beitrag <b>Tempor&auml;re Datenbanken <\/b>(Shortlink 461) haben Sie erfahren, wie Sie mit einem geeigneten Formular die daf&uuml;r anzulegende tempor&auml;re Datenbank konfigurieren. Der vorliegende Beitrag zeigt, wie Sie diese L&ouml;sung in der Praxis einsetzen und die Tabellen der tempor&auml;ren Datenbank mit den gew&uuml;nschten Daten f&uuml;llen.<\/p>\n<p><b>Anwendungsgebiet &#8222;Referenztabellen&#8220;<\/b><\/p>\n<p>Die Daten in Kombinations- oder Listenfeldern zur Anzeige von Kundennamen, Zahlungsbedingungen etc. holt Access normalerweise bei jedem &ouml;ffnen des Formulars aus den Tabellen des Backends.<\/p>\n<p>Warum also nicht, um die Belastung des Backends zu verringern, diese &#8222;statischen&#8220; Daten einfach beim Start Ihrer Anwendung in den Pool der tempor&auml;ren Datenbank &uuml;berf&uuml;hren und anschlie&szlig;end die Listenfelder durch die Eintr&auml;ge aus den Tabelle der tempor&auml;ren Datenbank f&uuml;llen<\/p>\n<p>Zur Demonstration dieser Vorgehensweise soll das nachfolgende Beispiel dienen: Das Backend enth&auml;lt eine Tabelle mit Bundesl&auml;ndern, Kreisst&auml;dten und Gemeinden. Die Struktur dieser Tabelle entnehmen Sie Tab. 1.<\/p>\n<table class=\"table-style-2\">\n<thead>\n<tr>\n<td>\n<p class=\"kastentabelleheader\">Feldname<\/p>\n<\/td>\n<td>\n<p class=\"kastentabelleheader\">Datentyp<\/p>\n<\/td>\n<td>\n<p class=\"kastentabelleheader\">L&auml;nge<\/p>\n<\/td>\n<\/tr>\n<\/thead>\n<tfoot>\n<tr>\n<td  colspan=\"3\">\n<p><b><span style=\"color:darkgrey\">Tab. 1: Struktur der Datenquelle<\/span><\/b><\/p>\n<\/td>\n<\/tr>\n<\/tfoot>\n<tbody>\n<tr>\n<td class=\"aiu-zeile1\">\n<\/td>\n<td class=\"aiu-zeile1\">\n<\/td>\n<td class=\"aiu-zeile1\">\n                            <\/td>\n<\/tr>\n<tr>\n<td class=\"aiu-zeile1\">\n<\/td>\n<td class=\"aiu-zeile1\">\n<\/td>\n<td class=\"aiu-zeile1\">\n<\/td>\n<\/tr>\n<tr>\n<td class=\"aiu-zeile1\">\n<\/td>\n<td class=\"aiu-zeile1\">\n<\/td>\n<td class=\"aiu-zeile1\">\n<\/td>\n<\/tr>\n<tr>\n<td class=\"aiu-zeile1\">\n<\/td>\n<td class=\"aiu-zeile1\">\n<\/td>\n<td class=\"aiu-zeile1\">\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Das zu f&uuml;llende Kombinationsfeld ben&ouml;tigen Sie zur Auswahl des Bundeslandes bei der Erfassung einer Adresse.<\/p>\n<p><b>Konfiguration der tempor&auml;ren Datenbank<\/b><\/p>\n<p>Starten Sie den Konfigurator (<b>frm_app_Konfigurator<\/b>) und geben Sie dort den Datenbankpfad und den Namen der zu erstellenden tempor&auml;ren Datenbank an (siehe Bild 1). Dann m&uuml;ssen Sie die tempor&auml;re Tabelle namens <b>tbl_ref_Bundeslaender<\/b> im Konfigurator anlegen (genaue Informationen zum Konfigurator siehe Shortlink 461).<\/p>\n<div class=\"image\">\n                    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_03\/TemporaereDatenbanken_II_3-web-images\/pic001_opt.jpeg\" alt=\"pic001.tif\" \/>\n                <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 1: Konfigurieren Sie die erste Tabelle f&uuml;r den Gebrauch als Referenztabelle.<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Haben Sie den Namen festgelegt, m&uuml;ssen Sie noch die Felder f&uuml;r die neue Tabelle bestimmen. Dazu klicken Sie auf das Register <b>Felder<\/b> und w&auml;hlen die Tabelle <b>tbl_ref_Bundeslaender <\/b>aus dem Kombinationsfeld aus (siehe Bild 2).<\/p>\n<div class=\"image\">\n                    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_03\/TemporaereDatenbanken_II_3-web-images\/pic002_opt.jpeg\" alt=\"pic002.tif\" \/>\n                <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 2: Konfiguration der ben&ouml;tigten Felder f&uuml;r die Referenztabelle <\/span><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">tbl_ref_Bundeslaender<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Die Feldgr&ouml;&szlig;e der Felder f&uuml;r die tempor&auml;re Tabelle leiten sich von der Struktur der Ausgangsdatenquelle ab. Wie in Tab. 1 beschrieben, enth&auml;lt die tempor&auml;re Tabelle lediglich zwei Felder vom Datentyp <b>Text<\/b> mit den passenden Feldgr&ouml;&szlig;en.<\/p>\n<p>Zu guter Letzt legen Sie noch zwei Indizes f&uuml;r die tempor&auml;re Tabelle an (siehe Bild 3).<\/p>\n<div class=\"image\">\n                    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_03\/TemporaereDatenbanken_II_3-web-images\/pic003_opt.jpeg\" alt=\"pic003.tif\" \/>\n                <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 3: Indizes der tempor&auml;ren Tabelle<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Der Index <b>PrimaryKey <\/b>verhindert redundante Daten im Prim&auml;rschl&uuml;ssel w&auml;hrend der zweite Index <b>SortOrder <\/b>dazu verwendet wird, die Ausgabe der Bundesl&auml;nder in sortierter Form zu beschleunigen.<\/p>\n<p>Lassen Sie, nachdem Sie die Konfiguration fertig gestellt haben, die tempor&auml;re Datenbank f&uuml;r einen ersten Testlauf erstellen. Sollten keine Fehler auftauchen, werden Sie &uuml;ber den Erfolg informiert und die verkn&uuml;pfte Tabelle erscheint im Datenbankfenster.<\/p>\n<p><b>Wie kommen die Daten in die Tabelle<\/b><\/p>\n<p>Nun gut &#8211; die Datenbank und damit auch die konfigurierte Tabelle wurden erfolgreich erstellt. Aber wie bekommen Sie nun die Daten aus dem Backend in diese Tabelle Ziel ist es, alle Bundesl&auml;nder aus der Tabelle <b>tbl_app_LaenderKreiseGemeinden <\/b>der Backend-Datenbank in die tempor&auml;re Tabelle zu transferieren. Bundesl&auml;nder sind diejenigen Datens&auml;tze mit dem Feldinhalt <b>L<\/b> im Feld <b>Type<\/b> (siehe Bild 4).<\/p>\n<div class=\"image\">\n                    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_03\/TemporaereDatenbanken_II_3-web-images\/pic004_opt.jpeg\" alt=\"pic004.tif\" \/>\n                <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 4: Bundesl&auml;nder sind durch eine eindeutige Typen-kennzeichnung charakterisiert.<\/span><\/b><\/p>\n<\/p><\/div>\n<p><b>Daten&uuml;bertragung mittels DAO und JET<\/b><\/p>\n<p>Die erste M&ouml;glichkeit besteht darin, die Quelldaten in einem RecordSet zu speichern und zu durchlaufen. Jeder Datensatz, der dem Kriterium f&uuml;r die tempor&auml;re Datenquelle entspricht, wird anschlie&szlig;end mittels VBA-Code in diese Tabelle eingetragen (s. Listing 1).<\/p>\n<div class=\"abbildung\">\n<p class=\"tabellenkopf\">Listing 1: Import von Daten in die tempor&auml;re Tabelle via DAO<\/p>\n<pre>Private Sub StartDAOImport()<\/pre>\n<pre>     On Error GoTo ErrorHandler:<\/pre>\n<pre>     Call DoCmd.Hourglass(True)<\/pre>\n<pre>     Set db = DBEngine(0)(0)<\/pre>\n<pre>     Set rstSource = db.OpenRecordset(\"tbl_app_LaenderKreiseGemeinden\", dbOpenForwardOnly)<\/pre>\n<pre>     Set rstTarget = db.OpenRecordset(\"tbl_ref_Bundeslaender\", dbOpenDynaset)<\/pre>\n<pre>     While Not rstSource.EOF<\/pre>\n<pre>         If rstSource!Type = \"L\" Then<\/pre>\n<pre>             rstTarget.AddNew<\/pre>\n<pre>             rstTarget!Schluessel = rstSource!Gemeindeschluessel<\/pre>\n<pre>             rstTarget!BundesLand = rstSource!RegionName<\/pre>\n<pre>             rstTarget.Update<\/pre>\n<pre>         End If<\/pre>\n<pre>         rstSource.MoveNext<\/pre>\n<pre>     Wend<\/pre>\n<pre>ExitCode:<\/pre>\n<pre>     On Error Resume Next<\/pre>\n<pre>     Set rstSource = Nothing<\/pre>\n<pre>     Set rstTarget = Nothing<\/pre>\n<pre>     Set db = Nothing<\/pre>\n<pre>     Call DoCmd.Hourglass(False)<\/pre>\n<pre>     Exit Sub<\/pre>\n<pre>ErrorHandler:<\/pre>\n<pre>     Select Case Err.Number<\/pre>\n<pre>         Case 3022: Resume Next<\/pre>\n<pre>         Case Else: MsgBox Err.Description, vbInformation, \"Fehler: \" &amp; Err.Number<\/pre>\n<pre>     End Select<\/pre>\n<pre> Resume ExitCode<\/pre>\n<pre>End Sub<\/pre>\n<\/p><\/div>\n<p>Im obigen Code werden zwei Recordsets initialisiert und ge&ouml;ffnet. Das Recordset <b>rstSource <\/b>enth&auml;lt die Datenmenge der zu &uuml;bertragenden Daten, w&auml;hrend das Recordset <b>rstTarget <\/b>die tempor&auml;re Tabelle <b>tmp_app_BundesLaender <\/b>abbildet.<\/p>\n<p>In einer kopfgesteuerten Schleife wird im Anschluss die Datenquelle durchlaufen. Sobald die Bedingung <b>[Type] = &#8222;L&#8220; <\/b>erf&uuml;llt ist, versucht die Routine, den gefundenen Datensatz in die Zieltabelle einzutragen. Da Sie nicht ausschlie&szlig;en k&ouml;nnen, dass eventuell bereits ein Datensatz mit gleichem Prim&auml;rschl&uuml;sseleintrag in der Zieltabelle vorhanden ist, wird in der Fehlerroutine auf eine m&ouml;gliche Schl&uuml;sselverletzung (Fehler 3022) reagiert und die Quelle einfach weiter durchlaufen.<\/p>\n<p><b>Daten&uuml;bertragung mittels SQL<\/b><\/p>\n<p>Eine elegantere L&ouml;sung stellt die Verwendung einer passenden gespeicherten SQL-Abfrage f&uuml;r das F&uuml;llen der Zieltabelle dar.<\/p>\n<p><!--30percent--><\/p>\n<p>Ziel soll es auch hier sein, alle Bundesl&auml;nder aus der Tabelle <b>tbl_app_LaenderKreiseGemeinden <\/b>in die tempor&auml;re Tabelle <b>tbl_ref_Bundeslaender <\/b>zu &uuml;bertragen. Im Gegensatz zur codebasierten L&ouml;sung muss das SQL-Statement selbst ber&uuml;cksichtigen, dass eventuelle Daten in der Zieltabelle vorhanden sind. Der L&ouml;sungsansatz ist ein OUTER JOIN, der die Quell- und die Zieltabelle miteinander &uuml;ber ihre Schl&uuml;sselfelder verbindet. Bevor Sie das komplette SQL-Statement verwenden, schauen Sie sich zun&auml;chst das SQL-Statement f&uuml;r die Ermittlung der Daten an (siehe Bild 5). Die Quelltabelle <b>tbl_app_LaenderKreiseGemeinden <\/b>und die Zieltabelle <b>tbl_ref_BundesLaender <\/b>sind &uuml;ber die Felder <b>Gemeindeschluessel <\/b>und <b>Schluessel <\/b>miteinander verkn&uuml;pft.<\/p>\n<div class=\"image\">\n                    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_03\/TemporaereDatenbanken_II_3-web-images\/pic005_opt.jpeg\" alt=\"pic005.tif\" \/>\n                <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 5: Ein OUTER JOIN f&uuml;r die Ermittlung der ben&ouml;tigten Daten<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Die Besonderheit dieser Verbindung ist die Richtung des unscheinbaren Pfeils. Bei dieser Art der Verbindung handelt es sich um einen OUTER JOIN, der Folgendes ausdr&uuml;ckt: &#8222;Zeige alle Daten aus <b>tbl_app_LaenderKreiseGemeinden <\/b>an, unabh&auml;ngig davon, ob es in der Tabelle <b>tbl_ref_BundesLaender <\/b>Datens&auml;tze mit gleichem Schl&uuml;sselwert gibt.&#8220;<\/p>\n<p>Schauen Sie sich anschlie&szlig;end die Abfragekriterien an, d&uuml;rfte Ihnen die Erkl&auml;rung f&uuml;r die Einschr&auml;nkungen leicht fallen. Die Zieltabelle soll ausschlie&szlig;lich mit den Bundesl&auml;ndern gef&uuml;llt werden; somit muss als erstes Kriterium die Einschr&auml;nkung auf das Feld <b>Type <\/b>gesetzt werden. Das zweite Kriterium definiert, dass ausschlie&szlig;lich Daten aus der Quelle angezeigt werden sollen, die noch nicht in der Zieltabelle vorhanden sind. Sofern sich in der Zieltabelle bereits Daten befinden, werden diese Daten durch die Abfrage ausgeschlossen. Angezeigt werden ausschlie&szlig;lich die Felder <b>Gemeindeschl&uuml;ssel <\/b>und <b>RegionName<\/b>.<\/p>\n<p>Mit Hilfe einer Anf&uuml;geabfrage lassen sich nun die durch diese Abfrage ermittelten Daten in die Zieltabelle &uuml;bertragen. Das vollst&auml;ndige SQL-Statement sieht dann wie folgt aus:<\/p>\n<pre>INSERT INTO tbl_ref_BundesLaender<\/pre>\n<pre>(Schluessel, BundesLand)<\/pre>\n<pre>SELECT Gemeindeschluessel, RegionName<\/pre>\n<pre>FROM tbl_app_LaenderKreiseGemeinden LEFT JOIN tbl_ref_Bundeslaender<\/pre>\n<pre>ON (tbl_app_LaenderKreiseGemeinden.Gemeindeschluessel = tbl_ref_Bundeslaender.Schluessel)<\/pre>\n<pre>WHERE Type=\"L\" AND Schluessel Is Null<\/pre>\n<p>Sowohl die Auswahl- als auch die Anf&uuml;geabfrage sind in der Beispieldatenbank vorhanden. Wenn Sie sich den Code f&uuml;r die Ausf&uuml;hrung der Abfrage anschauen, werden Sie feststellen, dass er nicht so kompliziert und auch leichter zu pflegen ist (s. Listing 2). Letztendlich wird der eigentliche Aufruf auf zwei Zeilen reduziert. Zun&auml;chst wird eine Instanz des Datenbankobjektes referenziert, um anschlie&szlig;end &uuml;ber dieses Datenbankobjekt die eigentliche Abfrage <b>qry_Append_Bundeslaender <\/b>auszuf&uuml;hren.<\/p>\n<div class=\"abbildung\">\n<p class=\"tabellenkopf\">Listing 2: Import von Daten in die tempor&auml;re Tabelle via gespeicherter Abfrage<\/p>\n<pre>Private Sub StartSQLImport()<\/pre>\n<pre>     On Error GoTo ErrorHandler<\/pre>\n<pre>     Call DoCmd.Hourglass(True)<\/pre>\n<pre>     SQLStartTime = Now()<\/pre>\n<pre>     Set db = DBEngine(0)(0)<\/pre>\n<pre>     db.Execute \"qry_Append_BundesLaender\", dbFailOnError<\/pre>\n<pre>ExitCode:<\/pre>\n<pre>     On Error Resume Next<\/pre>\n<pre>     Set db = Nothing<\/pre>\n<pre>     SQLFinishTime = Now()<\/pre>\n<pre>     Me.Recalc<\/pre>\n<pre>     Call DoCmd.Hourglass(False)<\/pre>\n<pre>     Exit Sub<\/pre>\n<pre>ErrorHandler:<\/pre>\n<pre>     MsgBox Err.Description, vbInformation<\/pre>\n<pre>     Resume ExitCode<\/pre>\n<pre>End Sub<\/pre>\n<\/p><\/div>\n<p><b>Hinweise zu den <br \/>Ausf&uuml;hrungsgeschwindigkeiten<\/b><\/p>\n<p>Bei den Tests mit den einzelnen Varianten war besonders interessant, welche Variante die schnellere ist. Letztendlich waren die Zeitunterschiede gering. Sofern Sie Wert darauf legen, Ihren Anwendern durch Aktivit&auml;ten auf dem Bildschirm den Fortschritt der &uuml;bertragung anzuzeigen, sollten Sie die erste Variante verwenden. Sie l&auml;sst mehr Spielraum f&uuml;r Interaktivit&auml;t.<\/p>\n<p><b>Anwendungsgebiet &#8222;Ergebnis-\/Zwischentabellen&#8220;<\/b><\/p>\n<p>Sicherlich haben Sie auch schon das eine oder andere Mal einen Bericht erstellt, f&uuml;r den Zwischenergebnisse erzeugt und angewendet werden m&uuml;ssen. Auch f&uuml;r diesen Anwendungsbereich bieten sich tempor&auml;re Tabellen an.<\/p>\n<p>Das vorliegende Beispiel demonstriert, wie Sie mit Hilfe von tempor&auml;ren Tabellen Verh&auml;ltnisanteile von Mitgliedern ermitteln k&ouml;nnen. Sie finden in der Beispieldatenbank eine Tabelle mit dem Namen <b>tbl_app_Mitglieder<\/b>. Der Aufbau dieser Tabelle ist recht einfach gehalten (s. Tab. 2).<\/p>\n<table class=\"table-style-2\">\n<tbody>\n<tr>\n<td class=\"aiu-zeile1\">\n<p class=\"kastentabelleheader\">Feldname<\/p>\n<\/td>\n<td class=\"aiu-zeile1\">\n<p class=\"kastentabelleheader\">Datentyp<\/p>\n<\/td>\n<td class=\"aiu-zeile1\">\n<p class=\"kastentabelleheader\">L&auml;nge<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td class=\"aiu-zeile1\">\n<\/td>\n<td class=\"aiu-zeile1\">\n<\/td>\n<td class=\"aiu-zeile1\">\n<\/td>\n<\/tr>\n<tr>\n<td class=\"aiu-zeile1\">\n<\/td>\n<td class=\"aiu-zeile1\">\n<\/td>\n<td class=\"aiu-zeile1\">\n<\/td>\n<\/tr>\n<tr>\n<td class=\"aiu-zeile1\">\n<\/td>\n<td class=\"aiu-zeile1\">\n<\/td>\n<td class=\"aiu-zeile1\">\n<\/td>\n<\/tr>\n<tr>\n<td class=\"aiu-zeile1\">\n<\/td>\n<td class=\"aiu-zeile1\">\n<\/td>\n<td class=\"aiu-zeile1\">\n                            <\/td>\n<\/tr>\n<tr>\n<td class=\"aiu-zeile1\"  colspan=\"3\">\n<p><b><span style=\"color:darkgrey\">Tab. 2: Struktur der Datenquelle<\/span><\/b><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Die Auswertung soll f&uuml;r das hier gezeigte Beispiel recht simpel sein und folgende Anforderungen erf&uuml;llen: Als Ergebnis soll in der tempor&auml;ren Tabelle mit dem Namen <b>tbl_Mitgliederstatistik <\/b>der Name, die Mitgliedsart, das Datum des Beginns der Mitgliedschaft sowie der prozentuale Anteil aller Mitglieder im gleichen Jahr und der prozentuale Anteil &uuml;ber alle Mitglieder ausgegeben werden. Die tempor&auml;re Tabelle hat den Aufbau aus Tab. 3.<\/p>\n<table class=\"table-style-3\">\n<tbody>\n<tr>\n<td>\n<p class=\"kastentabelleheader\">Feldname<\/p>\n<\/td>\n<td>\n<p class=\"kastentabelleheader\">Datentyp<\/p>\n<\/td>\n<td>\n<p class=\"kastentabelleheader\">L&auml;nge<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<\/td>\n<td>\n<\/td>\n<td>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<\/td>\n<td>\n<\/td>\n<td>\n<\/td>\n<\/tr>\n<tr>\n<td>\n<\/td>\n<td>\n<\/td>\n<td>\n                            <\/td>\n<\/tr>\n<tr>\n<td>\n<\/td>\n<td>\n<\/td>\n<td>\n                            <\/td>\n<\/tr>\n<tr>\n<td>\n<\/td>\n<td>\n<\/td>\n<td>\n                            <\/td>\n<\/tr>\n<tr>\n<td  colspan=\"3\">\n<p><b><span style=\"color:darkgrey\">Tab. 3: Struktur der tempor&auml;ren Tabelle<\/span><\/b><\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Auch hier gehen Sie wieder wie oben beschrieben vor und konfigurieren die Ausgabetabelle wie dem Konfigurator der Beispieldatenbank zu entnehmen.<\/p>\n<p><b>Erstellen des Berichtsergebnisses mittels VBA<\/b><\/p>\n<p>Die im Bericht anzuzeigenden Daten werden erst in dem Moment ermittelt, in dem der Bericht ge&ouml;ffnet wird. Da zu diesem Zeitpunkt die Daten noch nicht aus der Datenquelle abgerufen werden, k&ouml;nnen Sie die Daten noch nach Belieben bearbeiten. W&auml;hrend der Datenaufbereitung wird der Bericht Informationen &uuml;ber die aktuell auszuf&uuml;hrende Operation liefern.<\/p>\n<p>Die nachfolgenden Operationen m&uuml;ssen vor der Anzeige des Berichts ausgef&uuml;hrt werden:<\/p>\n<ul>\n<li class=\"aufz-hlung\">L&ouml;schen von eventuell vorhandenen Daten in der Tempor&auml;rtabelle<\/li>\n<li class=\"aufz-hlung\">Bef&uuml;llen der Basisdaten (Mitgliederdaten)<\/li>\n<li class=\"aufz-hlung\">Ermitteln der kalkulierten Werte pro Jahr und insgesamt<\/li>\n<\/ul>\n<p><b>Der Dialog w&auml;hrend der Ausf&uuml;hrung der <br \/>Berichtsoperationen<\/b><\/p>\n<p>In Ihrer Beispieldatenbank finden Sie ein Formular mit dem Namen <b>frm_app_ReportStatus<\/b>. Dieses Formular besitzt lediglich ein Bezeichnungsfeld, das dynamisch mit Hilfe einer selbst erstellten Eigenschaft mit einem Text versehen werden kann (siehe Bild 6). Die Eigenschaft\/Property, um die das Formular erweitert wurde, besitzt folgenden kurzen Code:<\/p>\n<pre>Public Property Let SetStatus(StatusMeldung <br \/> As String)<\/pre>\n<pre> With Me<\/pre>\n<pre> !txtStatusMeldung.Caption = _<br \/> Status-Meldung<\/pre>\n<pre> .Repaint<\/pre>\n<pre> End With<\/pre>\n<pre>End Property<\/pre>\n<div class=\"image\">\n                    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_03\/TemporaereDatenbanken_II_3-web-images\/pic006_opt.jpeg\" alt=\"pic006.tif\" \/>\n                <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 6: Das hervorgehobene Bezeichnungsfeld wird zur Laufzeit mit Text gef&uuml;llt<\/span><\/b><\/p>\n<\/p><\/div>\n<p>Wenn Sie selbst planen, Formulare oder Berichte um selbst definierte Eigenschaften zu erweitern, achten Sie darauf, dass diese Properties als <b>Public <\/b>deklariert sein m&uuml;ssen, um sie von au&szlig;en zu verwenden!<\/p>\n<p>Damit Sie im vorliegenden Fall zum Beispiel einen eigenen Text im Bezeichnungsfeld platzieren k&ouml;nnen, rufen Sie die Eigenschaft &uuml;ber ihren Container auf:<\/p>\n<pre>Dim frm As Form<\/pre>\n<pre>Forms!frm_app_ReportStatus.SetStatus = _<br \/> \"Willkommen bei ''Access im Unternehmen''\"<\/pre>\n<p class=\"zwischen-berschriftnachquellcode\">Der Bericht wird ge&ouml;ffnet &#8230;<\/p>\n<p>Das &ouml;ffnen des Berichts l&ouml;st das Ereignis <b>Beim &ouml;ffnen <\/b>aus, f&uuml;r das die Prozedur aus Listing 3 hinterlegt ist. Alle Einzelschritte der Datenaufbereitung sind in separate Prozeduren und Funktionen ausgegliedert worden, sodass der Code leichter zu lesen ist.<\/p>\n<div class=\"abbildung\">\n<p class=\"kastentabelleheader\">Listing 3: Diese Routine wird beim &ouml;ffnen des Berichts ausgef&uuml;hrt.<\/p>\n<pre>Private Sub Report_Open(Cancel As Integer)<\/pre>\n<pre>     On Error GoTo ErrorHandler:<\/pre>\n<pre>     '' Einschalten der Statusmeldungen<\/pre>\n<pre>     Call fn_app_StatusMeldung(True)<\/pre>\n<pre>     StatusForm.SetStatus = \"Umgebungsvariablen werden initialisiert\"<\/pre>\n<pre>     '' Initialisieren aller ben&ouml;tigten Variablen und Objekte<\/pre>\n<pre>     Set db = DBEngine(0)(0)<\/pre>\n<pre>     '' Leeren von m&ouml;glichen bestehenden Informationen<\/pre>\n<pre>     Call fn_app_Clear_TempResults<\/pre>\n<pre>     '' Bef&uuml;llen der Basisdaten<\/pre>\n<pre>     Call fn_app_Fill_MemberList<\/pre>\n<pre>     '' Tempor&auml;re Abfrage f&uuml;r Zwischenergebnisse<\/pre>\n<pre>     Set rstMembersByYear = fn_app_GetMembersByYear()<\/pre>\n<pre>     Set rstMembersByTotal = fn_app_GetMembersByTotal()<\/pre>\n<pre>     Set rstMemberList = fn_app_GetAllMembers()<\/pre>\n<pre>     '' Berechnen der Leistungsindizes<\/pre>\n<pre>     Call fn_app_Fill_LeistungsIndex_Jahr<\/pre>\n<pre>     Call fn_app_Fill_LeistungsIndex_Total<\/pre>\n<pre>ExitCode:<\/pre>\n<pre>     On Error Resume Next<\/pre>\n<pre>     Call fn_app_StatusMeldung(False)<\/pre>\n<pre>     DoCmd.Maximize<\/pre>\n<pre>     Exit Sub<\/pre>\n<pre>ErrorHandler:<\/pre>\n<pre>     MsgBox Err.Description, vbInformation<\/pre>\n<pre>     Resume ExitCode<\/pre>\n<pre>End Sub<\/pre>\n<\/p><\/div>\n<p>Die einzelnen Funktionen k&ouml;nnen Sie im Entwurf des Berichts selbst analysieren; sie haben die nachfolgende Bedeutung:<\/p>\n<ul>\n<li class=\"aufz-hlung\"><b>fn_app_Clear_TempResults<\/b>: L&ouml;scht aus der tempor&auml;ren Tabelle alle eventuell vorhandenen Daten.<\/li>\n<li class=\"aufz-hlung\"><b>fn_app_Fill_MemberList<\/b>: F&uuml;gt aus den Originaldaten mittels einer gespeicherten Abfrage alle Basisdaten in die tempor&auml;re Tabelle ein.<\/li>\n<li class=\"aufz-hlung\"><b>fn_app_GetMembersByYear<\/b>: Liefert ein Recordset mit der Anzahl aller Mitglieder pro Jahr und pro Mitgliedsart.<\/li>\n<li class=\"aufz-hlung\"><b>fn_app_GetMembersByTotal<\/b>: Liefert ein Recordset mit der Anzahl aller Mitglieder pro Mitgliedsart.<\/li>\n<li class=\"aufz-hlung\"><b>fn_app_GetAllMembers<\/b>: Liefert ein editierbares Recordset, dessen Basis die tempor&auml;re Tabelle selbst ist.<\/li>\n<li class=\"aufz-hlung\"><b>fn_app_Fill_LeistungsIndex_Jahr<\/b>: Berechnet f&uuml;r jedes Mitglied den auf das Jahr bezogenen Leistungsindex.<\/li>\n<li class=\"aufz-hlung\"><b>fn_app_Fill_LeistungsIndex_Total<\/b>: Berechnet f&uuml;r jedes Mitglied den Leistungsindex in Bezug auf die Gesamtheit der Mitglieder.<\/li>\n<\/ul>\n<p>Die Vorteile aus dieser Bearbeitungsweise liegen auf der Hand: Dadurch, dass die zu analysierenden Daten bereits in der tempor&auml;ren Tabelle vorhanden sind, erfolgt der Zugriff &#8211; und damit auch die Berechnungen &#8211; lokal.<\/p>\n<p>Die Ergebnisse liegen schneller vor und Sie belasten das Netzwerk nur einmal beim Transport der Daten in die tempor&auml;re Tabelle. Durch diese Art der Anwendung k&ouml;nnen Sie die Ausgabe des Berichts deutlich beschleunigen. Tests haben gezeigt: Je komplexer die Berechnung von Zwischenergebnissen, umso schneller die Ausgabe bei der Verwendung von tempor&auml;ren Ergebnissen.<\/p>\n<p><b>Schritt f&uuml;r Schritt durch die Prozedur<\/b><\/p>\n<p>Die folgenden Abs&auml;tze zeigen die einzelnen Schritte bis zum fertigen Ausdruck auf.<\/p>\n<p>Zun&auml;chst m&uuml;ssen Sie immer sicherstellen, dass die Daten in eine leere Tabelle flie&szlig;en, die tempor&auml;re Tabelle also geleert wird. Dazu f&uuml;hrt der Bericht die Funktion <b>fn_app_ClearTempResults <\/b>aus.<\/p>\n<p>Nachdem Sie sich nun sicher sein k&ouml;nnen, dass die Basis f&uuml;r die neuen Daten keine Altlasten mehr mit sich f&uuml;hrt, k&ouml;nnen die Grunddaten f&uuml;r die Berechnungen in die tempor&auml;re Tabelle &uuml;bertragen werden.<\/p>\n<p>Dazu wird die Funktion <b>fn_app_Fill_MemberList <\/b>beim &ouml;ffnen des Berichts ausgef&uuml;hrt.<\/p>\n<p>Wie Bild 7 zeigt, wurden nur die Basisdaten &uuml;bertragen, die beiden Felder f&uuml;r die Berechnungen sind noch leer. Sie werden in den n&auml;chsten Schritten gef&uuml;llt.<\/p>\n<div class=\"image\">\n                    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_03\/TemporaereDatenbanken_II_3-web-images\/pic007_opt.jpeg\" alt=\"pic007.tif\" \/>\n                <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 7: Die Basisdaten sind nun in der tempor&auml;ren Tabelle vorhanden.<\/span><\/b><\/p>\n<\/p><\/div>\n<p>F&uuml;r die Berechnung der Leistungsindexe werden zwei separate Funktionen im Bericht ausgef&uuml;hrt. Die Funktion f&uuml;r die Berechnung des Jahresindex errechnet f&uuml;r jedes Mitglied einen Wert, der in das Feld <b>[ProzAnteilJahr] <\/b>eingetragen wird.<\/p>\n<p>Nachdem die erste Berechnung durchgef&uuml;hrt wurde, kann nun die zweite Auswertung ausgef&uuml;hrt werden. Im Anschluss wird der Bericht angezeigt und kann ausgedruckt werden (siehe Bild 8).<\/p>\n<div class=\"image\">\n                    <img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_03\/TemporaereDatenbanken_II_3-web-images\/pic008_opt.jpeg\" alt=\"pic008.tif\" \/>\n                <\/div>\n<div class=\"story\">\n<p><b><span style=\"color:darkgrey\">Bild 8: Fertig zum Ausdrucken &#8211; der Bericht mit allen Ergebnissen<\/span><\/b><\/p>\n<\/p><\/div>\n<p><b>Zusammenfassung und Ausblick<\/b><\/p>\n<p>Tempor&auml;re Tabellen bringen viele Vorteile. Sie k&ouml;nnen Anwendungen beschleunigen oder aber komplizierte Abl&auml;ufe vereinfachen, wenn man Zwischenergebnisse in tempor&auml;ren Tabellen aufbereitet.<\/p>\n<p>Ein Nachteil ist, dass tempor&auml;re Tabellen zum Aufbl&auml;hen der Datenbanken f&uuml;hren. Es ist deshalb auf regelm&auml;&szlig;iges Komprimieren zu achten.<\/p>\n<p>Ein weiterer Wermutstropfen beim Einsatz dieser Methode ist die Beschr&auml;nkung auf JET und ODBC. Wenn Sie mit Access-Projekten (ADP) arbeiten, funktioniert diese Methode so leider nicht &#8211; weil nur mit Objekten auf dem SQL-Server gearbeitet werden kann.<\/p>\n<p>Auch mit einem SQL-Server-Backend l&auml;sst sich die Arbeit mit tempor&auml;ren Tabellen vereinfachen &#8211; sie m&uuml;ssen nur anders erzeugt und angesprochen werden.<\/p>\n<h3>Downloads zu diesem Beitrag<\/h3>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>BackendDaten2000.mdb<\/p>\n<p>BackendDaten.mdb<\/p>\n<p>Readme.txt<\/p>\n<p>TEMPDB.MDB<\/p>\n<p>TemporaryDatabases2000.mdb<\/p>\n<p>TemporaryDatabases.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/B64BBDB8-2DD9-45E3-B9C0-3CD95B55D861\/aiu_470.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der letzten Ausgabe haben Sie erfahren, wie einfach es ist, die Basis f&uuml;r die Verwendung von tempor&auml;ren Tabellen zu schaffen. Durch Parameter und ein paar Zeilen Code erstellen Sie eine Datenbank, die bei jedem Start Ihrer Anwendung automatisch erzeugt wird. Dieser Artikel soll Ihnen nun die Anwendung tempor&auml;rer Datenbanken in der Praxis demonstrieren.<\/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":[662007,66042007,44000027,44000021],"tags":[],"class_list":["post-55000470","post","type-post","status-publish","format-standard","hentry","category-662007","category-66042007","category-Loesungen","category-Tabellen_und_Datenmodellierung"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Tempor&auml;re Datenbanken in der Praxis - 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\/Temporaere_Datenbanken_in_der_Praxis\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tempor&auml;re Datenbanken in der Praxis\" \/>\n<meta property=\"og:description\" content=\"In der letzten Ausgabe haben Sie erfahren, wie einfach es ist, die Basis f&uuml;r die Verwendung von tempor&auml;ren Tabellen zu schaffen. Durch Parameter und ein paar Zeilen Code erstellen Sie eine Datenbank, die bei jedem Start Ihrer Anwendung automatisch erzeugt wird. Dieser Artikel soll Ihnen nun die Anwendung tempor&auml;rer Datenbanken in der Praxis demonstrieren.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Temporaere_Datenbanken_in_der_Praxis\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-11T21:17:04+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg03.met.vgwort.de\/na\/354c8e36be3d4abaad1ceb766e33e82c\" \/>\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=\"14\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datenbanken_in_der_Praxis\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datenbanken_in_der_Praxis\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Tempor&auml;re Datenbanken in der Praxis\",\"datePublished\":\"2021-02-11T21:17:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datenbanken_in_der_Praxis\\\/\"},\"wordCount\":2495,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datenbanken_in_der_Praxis\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg03.met.vgwort.de\\\/na\\\/354c8e36be3d4abaad1ceb766e33e82c\",\"articleSection\":[\"2007\",\"4\\\/2007\",\"L\u00f6sungen\",\"Tabellen und Datenmodellierung\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datenbanken_in_der_Praxis\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datenbanken_in_der_Praxis\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datenbanken_in_der_Praxis\\\/\",\"name\":\"Tempor&auml;re Datenbanken in der Praxis - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datenbanken_in_der_Praxis\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datenbanken_in_der_Praxis\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg03.met.vgwort.de\\\/na\\\/354c8e36be3d4abaad1ceb766e33e82c\",\"datePublished\":\"2021-02-11T21:17:04+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datenbanken_in_der_Praxis\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datenbanken_in_der_Praxis\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datenbanken_in_der_Praxis\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg03.met.vgwort.de\\\/na\\\/354c8e36be3d4abaad1ceb766e33e82c\",\"contentUrl\":\"http:\\\/\\\/vg03.met.vgwort.de\\\/na\\\/354c8e36be3d4abaad1ceb766e33e82c\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Temporaere_Datenbanken_in_der_Praxis\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tempor&auml;re Datenbanken in der Praxis\"}]},{\"@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":"Tempor&auml;re Datenbanken in der Praxis - 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\/Temporaere_Datenbanken_in_der_Praxis\/","og_locale":"de_DE","og_type":"article","og_title":"Tempor&auml;re Datenbanken in der Praxis","og_description":"In der letzten Ausgabe haben Sie erfahren, wie einfach es ist, die Basis f&uuml;r die Verwendung von tempor&auml;ren Tabellen zu schaffen. Durch Parameter und ein paar Zeilen Code erstellen Sie eine Datenbank, die bei jedem Start Ihrer Anwendung automatisch erzeugt wird. Dieser Artikel soll Ihnen nun die Anwendung tempor&auml;rer Datenbanken in der Praxis demonstrieren.","og_url":"https:\/\/access-im-unternehmen.de\/Temporaere_Datenbanken_in_der_Praxis\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-02-11T21:17:04+00:00","og_image":[{"url":"http:\/\/vg03.met.vgwort.de\/na\/354c8e36be3d4abaad1ceb766e33e82c","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"14\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datenbanken_in_der_Praxis\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datenbanken_in_der_Praxis\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Tempor&auml;re Datenbanken in der Praxis","datePublished":"2021-02-11T21:17:04+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datenbanken_in_der_Praxis\/"},"wordCount":2495,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datenbanken_in_der_Praxis\/#primaryimage"},"thumbnailUrl":"http:\/\/vg03.met.vgwort.de\/na\/354c8e36be3d4abaad1ceb766e33e82c","articleSection":["2007","4\/2007","L\u00f6sungen","Tabellen und Datenmodellierung"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Temporaere_Datenbanken_in_der_Praxis\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datenbanken_in_der_Praxis\/","url":"https:\/\/access-im-unternehmen.de\/Temporaere_Datenbanken_in_der_Praxis\/","name":"Tempor&auml;re Datenbanken in der Praxis - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datenbanken_in_der_Praxis\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datenbanken_in_der_Praxis\/#primaryimage"},"thumbnailUrl":"http:\/\/vg03.met.vgwort.de\/na\/354c8e36be3d4abaad1ceb766e33e82c","datePublished":"2021-02-11T21:17:04+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datenbanken_in_der_Praxis\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Temporaere_Datenbanken_in_der_Praxis\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datenbanken_in_der_Praxis\/#primaryimage","url":"http:\/\/vg03.met.vgwort.de\/na\/354c8e36be3d4abaad1ceb766e33e82c","contentUrl":"http:\/\/vg03.met.vgwort.de\/na\/354c8e36be3d4abaad1ceb766e33e82c"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Temporaere_Datenbanken_in_der_Praxis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Tempor&auml;re Datenbanken in der Praxis"}]},{"@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\/55000470","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=55000470"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000470\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000470"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000470"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}