Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 4/2007.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Legen Sie temporäre Datenbanken an und füllen Sie diese mit den Daten aus einem Backend.

Techniken

Datenmodellierung, SQL, VBA

Voraussetzungen

Access 2000 und höher

Beispieldateien

TemporaryDatabases.mdb, BackendDaten.mdb

Shortlink

470

Temporäre Datenbanken in der Praxis

Uwe Ricken, Erzhausen

In der letzten Ausgabe haben Sie erfahren, wie einfach es ist, die Basis für die Verwendung von temporä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ärer Datenbanken in der Praxis demonstrieren.

Der Hintergrund für den Einsatz einer temporären Datenbank ist, in Frontend-Backend-Szenarios oft verwendete, aber selten geänderte Daten - etwa zum Füllen von Kombinationsfeldern - für die Dauer einer Sitzung auf den lokalen Rechner zu kopieren. Dabei soll nicht nur eine temporäre Tabelle, sondern direkt eine temporäre Datenbank helfen, weil dies das Aufblähen des eigentlichen Frontends verringert.

Im Beitrag Temporäre Datenbanken (Shortlink 461) haben Sie erfahren, wie Sie mit einem geeigneten Formular die dafür anzulegende temporäre Datenbank konfigurieren. Der vorliegende Beitrag zeigt, wie Sie diese Lösung in der Praxis einsetzen und die Tabellen der temporären Datenbank mit den gewünschten Daten füllen.

Anwendungsgebiet "Referenztabellen"

Die Daten in Kombinations- oder Listenfeldern zur Anzeige von Kundennamen, Zahlungsbedingungen etc. holt Access normalerweise bei jedem Öffnen des Formulars aus den Tabellen des Backends.

Warum also nicht, um die Belastung des Backends zu verringern, diese "statischen" Daten einfach beim Start Ihrer Anwendung in den Pool der temporären Datenbank überführen und anschließend die Listenfelder durch die Einträge aus den Tabelle der temporären Datenbank füllen?

Zur Demonstration dieser Vorgehensweise soll das nachfolgende Beispiel dienen: Das Backend enthält eine Tabelle mit Bundesländern, Kreisstädten und Gemeinden. Die Struktur dieser Tabelle entnehmen Sie Tab. 1.

Feldname

Datentyp

Länge

Tab. 1: Struktur der Datenquelle

Id

Autowert

Schluessel

Text

8

Type

Text

1

RegionalName

Text

40

Das zu füllende Kombinationsfeld benötigen Sie zur Auswahl des Bundeslandes bei der Erfassung einer Adresse.

Konfiguration der temporären Datenbank

Starten Sie den Konfigurator (frm_app_Konfigurator) und geben Sie dort den Datenbankpfad und den Namen der zu erstellenden temporären Datenbank an (s. Abb. 1). Dann müssen Sie die temporäre Tabelle namens tbl_ref_Bundeslaender im Konfigurator anlegen (genaue Informationen zum Konfigurator siehe Shortlink 461).

pic001.tif

Abb. 1: Konfigurieren Sie die erste Tabelle für den Gebrauch als Referenztabelle.

Haben Sie den Namen festgelegt, müssen Sie noch die Felder für die neue Tabelle bestimmen. Dazu klicken Sie auf das Register Felder und wählen die Tabelle tbl_ref_Bundeslaender aus dem Kombinationsfeld aus (s. Abb. 2).

pic002.tif

Abb. 2: Konfiguration der benötigten Felder für die Referenztabelle

tbl_ref_Bundeslaender

Die Feldgröße der Felder für die temporäre Tabelle leiten sich von der Struktur der Ausgangsdatenquelle ab. Wie in Tab. 1 beschrieben, enthält die temporäre Tabelle lediglich zwei Felder vom Datentyp Text mit den passenden Feldgrößen.

Zu guter Letzt legen Sie noch zwei Indizes für die temporäre Tabelle an (s. Abb. 3).

pic003.tif

Abb. 3: Indizes der temporären Tabelle

Der Index PrimaryKey verhindert redundante Daten im Primärschlüssel während der zweite Index SortOrder dazu verwendet wird, die Ausgabe der Bundesländer in sortierter Form zu beschleunigen.

Lassen Sie, nachdem Sie die Konfiguration fertig gestellt haben, die temporäre Datenbank für einen ersten Testlauf erstellen. Sollten keine Fehler auftauchen, werden Sie über den Erfolg informiert und die verknüpfte Tabelle erscheint im Datenbankfenster.

Wie kommen die Daten in die Tabelle?

Nun gut - 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änder aus der Tabelle tbl_app_LaenderKreiseGemeinden der Backend-Datenbank in die temporäre Tabelle zu transferieren. Bundesländer sind diejenigen Datensätze mit dem Feldinhalt L im Feld Type (s. Abb. 4).

pic004.tif

Abb. 4: Bundesländer sind durch eine eindeutige Typen-kennzeichnung charakterisiert.

Datenübertragung mittels DAO und JET

Die erste Möglichkeit besteht darin, die Quelldaten in einem RecordSet zu speichern und zu durchlaufen. Jeder Datensatz, der dem Kriterium für die temporäre Datenquelle entspricht, wird anschließend mittels VBA-Code in diese Tabelle eingetragen (s. Listing 1).

Listing 1: Import von Daten in die temporäre Tabelle via DAO

Private Sub StartDAOImport()

    On Error GoTo ErrorHandler:

    Call DoCmd.Hourglass(True)

    Set db = DBEngine(0)(0)

    Set rstSource = db.OpenRecordset("tbl_app_LaenderKreiseGemeinden", dbOpenForwardOnly)

    Set rstTarget = db.OpenRecordset("tbl_ref_Bundeslaender", dbOpenDynaset)

    While Not rstSource.EOF

        If rstSource!Type = "L" Then

            rstTarget.AddNew

            rstTarget!Schluessel = rstSource!Gemeindeschluessel

            rstTarget!BundesLand = rstSource!RegionName

            rstTarget.Update

        End If

        rstSource.MoveNext

    Wend

ExitCode:

    On Error Resume Next

    Set rstSource = Nothing

    Set rstTarget = Nothing

    Set db = Nothing

    Call DoCmd.Hourglass(False)

    Exit Sub

ErrorHandler:

    Select Case Err.Number

        Case 3022: Resume Next

        Case Else: MsgBox Err.Description, vbInformation, "Fehler: " & Err.Number

    End Select

Resume ExitCode

End Sub

Im obigen Code werden zwei Recordsets initialisiert und geöffnet. Das Recordset rstSource enthält die Datenmenge der zu übertragenden Daten, während das Recordset rstTarget die temporäre Tabelle tmp_app_BundesLaender abbildet.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

© 2003-2015 André Minhorst Alle Rechte vorbehalten.