Die Beispieldateien sind im ZIP-Format archiviert. Eine Evaluationskopie der neuesten 32-Bit-Version von WinZip zum Expandieren von ZIP-Dateien können Sie herunterladen von:
http://www.winzip.com/
Abbildung 21.1 zeigt die in Excel 97 geöffnete Arbeitsmappe STK_21.XLS, die drei TabellenblätterAktienkurse (Beispieldateien) umfaßt. Das Tabellenblatt STK_21_1 enthält drei vollständige Sätze von Beispieldaten mehr als 300 Aktien in mehr als 1200 Zeilen. Im Tabellenblatt STK_21_2 sind 201 Zeilen und 50 Aktien enthalten, während STK_21_3 einen Umfang von 17 Zeilen und 4 Aktien aufweist. Die beiden kleineren Tabellenblätter STK_21_2 und STK_21_3 sollen den Einfluß der Tabellenblatt-Größe auf die Leistung von Access zeigen und kommen später in diesem Kapitel in den Abschnitten zum Thema OLE zum Einsatz. Die erste Zeile jedes Tabellenblatts wird für die Feldnamen der Tabelle verwendet. Die erste Spalte der ersten Zeile enthält den Eintrag »Day« (Tag), und die restlichen Spalten der ersten Zeile sind fortlaufend von 1 bis 21 numeriert.
Abbildung 21.1: In Excel 97 geöffnete Beispielarbeitsmappe STK_21.XLS.
Die Organisation dieser Tabellenblätter ist besonders für das erste Beispiel im nächsten Abschnitt »Das Beispiel-Tabellenblatt importieren« geeignet. Dort erfahren Sie, wie man ein Tabellenblatt reorganisiert, um eine geeignet gestaltete Tabelle zu erzeugen. Alternativ können Sie für die Beispiele jede Excel- oder .WK?-Datei verwenden, die mehrere Zahlenreihen enthält.
Das Beispiel-Tabellenblatt importieren
Als erstes ist eine neue Datenbank zu erstellen, in die die Daten des Tabellenblatts importiert werden. Führen Sie dazu folgende Schritte aus:
- Starten Sie Access, falls es nicht bereits geöffnet ist, wählen Sie die Option Leere Datenbank im Eröffnungsdialogfeld, und klicken Sie auf OK. Wenn Access bereits läuft, können Sie alternativ Datei/Neue Datenbank anlegen wählen und auf das Symbol Leere Datenbank doppelklicken. Es erscheint das Dialogfeld Neue Datenbankdatei.
- Geben Sie Aktien.mdb im Dialogfeld Neue Datenbankdatei als Name Ihrer neuen Datenbank ein, und klicken Sie dann auf Erstellen.
- Wählen Sie Datei/Externe Daten/Importieren. Es wird das Dialogfeld Importieren geöffnet (Abbildung 21.2).
Abbildung 21.2: Das Dialogfeld Importieren von Access 97.
- Markieren Sie in der Dropdown-Liste Dateityp den Eintrag Microsoft Excel (.XLS). (Die Unterstützung für das Importieren aller Dateiversionen von Excel über die Auswahl eines einzigen Dateityps wurde mit Access 95 eingeführt.)
- Markieren Sie STK_21.XLS in der Dateiliste, und klicken Sie auf die Schaltfläche Importieren, um das erste Dialogfeld des Import-AssistentImport-Assistent fuer Kalkulationstabellenen für Kalkulationstabellen anzuzeigen (siehe Abbildung 21.3).
Abbildung 21.3: Das erste Dialogfeld des Import-Assistenten für Kalkulationstabellen von Access 97 für das Importieren von Tabellenblatt-Dateien.
- Markieren Sie STK_21_1 in der Namensliste der Tabellenblätter. (Wenn Sie Platz auf der Festplatte sparen möchten, wählen Sie eines der kleineren Blätter.) Klicken Sie auf Weiter, um das zweite Dialogfeld des Assistenten anzuzeigen.
- Schalten Sie das Kontrollkästchen Erste Zeile enthält SpaltenüberschriftenImportierenSpaltenueberschriften ein (Abbildung 21.4). Klicken Sie dann auf Weiter, um das dritte Dialogfeld des Assistenten (Wahl des Ziels für die importierten Daten) anzuzeigen.
Abbildung 21.4: Das zweite Dialogfeld des Import-Assistenten für Kalkulationstabellen.
- Wählen Sie die Option In einer neuen Tabelle, und klicken Sie auf Weiter, um zum vierten Dialogfeld des Assistenten (Feldoptionen) zu gelangen.
- Im vorliegenden Fall brauchen Sie keine Felddatentypen zu spezifizieren. Klicken Sie daher auf Weiter, um das fünfte Dialogfeld (Optionen für Primärschlüssel) anzuzeigen. Momentan ist noch kein Primärschlüssel erforderlich. Klicken Sie also auf die Option Kein Primärschlüssel und dann auf Weiter, um zum letzten Dialogfeld des Assistenten zu gelangen.
- Da Sie eine neue Tabelle für die zu importierenden Daten angegeben haben, fragt Sie Access nun nach einem Namen für die neue Tabelle. Der vorgegebene Name für die neue Tabelle lautet STK_21_1 und kann übernommen werden. Klicken Sie auf die Schaltfläche Fertigstellen, um das Tabellenblatt zu importieren.
- Wenn das Meldungsfeld des Assistenten ankündigt, daß der Importvorgang abgeschlossen ist, klicken Sie auf OK.
Markieren Sie die Tabelle STK_21_1, und klicken Sie auf die Schaltfläche Öffnen, um die Tabelle in der Tabellenansicht anzuzeigen.
- Markieren Sie alle 22 Felder. Klicken Sie dazu auf den Spaltenkopf der Spalte Day, halten Sie die Maustaste nieder, und ziehen Sie die Maus nach rechts. Wählen Sie Format/Spaltenbreite, um das Dialogfeld Spaltenbreite anzuzeigen (Abbildung 21.5).
- Klicken Sie auf die Schaltfläche Anpassen, um die Breite der Spalten zu reduzieren und an die Einträge in der Tabelle anzugleichen.
Abbildung 21.5: Festlegen der Spaltenbreite für die Tabelle STK_21_1.
Access hat den Feldtyp der numerischen Excel-97-Daten als Double (doppelte Genauigkeit) interpretiert, was für keinen Wert in der Tabelle erforderlich ist. Die numerischen Werte in der Tabelle lassen sich ausreichend durch den Datentyp Single (einfache Genauigkeit) darstellen. Durch Verwendung von Single statt Double reduziert sich der erforderliche Platz auf der Festplatte um etwa 33 Prozent.
Zum Ändern der Eigenschaft FeldgrößeEigenschaft der numerischen Felder der Tabelle STK_21_1 führen Sie die folgenden Schritte aus:
Klicken Sie auf die Schaltfläche Entwurfsansicht.
- Markieren Sie das erste Zahlenfeld_ das Feld mit dem Namen 1. Ändern Sie den Wert der Eigenschaft Feldgröße von Double nach Single.
- Wiederholen Sie Schritt 2 für die restlichen 20 Zahlenfelder (2 bis 21).
Klicken Sie auf die Schaltfläche Datenblattfenster, um zur Tabellenansicht zurückzukehren. Es erscheint die Frage, ob Sie die Tabelle jetzt speichern möchten. Antworten Sie mit Ja. Falls der Hinweis erscheint, daß einige Daten gelöscht sein könnten, antworten Sie ebenfalls mit Ja. Access konvertiert jetzt die Feldgrößen in der Tabelle STK_21_1 von Double nach Single es gehen keine Daten verloren. Ihre Tabelle sollte nun Abbildung 21.6 entsprechen.
Abbildung 21.6: Die überarbeitete Version der Tabelle STK_21_1.
Eine Umwandlungsstrategie entwickeln
Im zweiten Schritt des Umwandlungsprozesses definieren Sie die Tabellen, die nach der Normalisierung der Daten im importieren Tabellenblatt zu erzeugen sind. (Normalisierung der Daten bedeutet, diese in eine Form gemäß den Regeln des relationalen Datenbankentwurfs zu bringen.) Sehr wenige Tabellenblätter lassen sich in eine einzige Tabelle konvertieren, die den Standards der relationalen Datenbanken entspricht. Als wichtigste Elemente bei der Konvertierung müssen Sie daher die Tabellen für die Daten entwerfen und die Beziehungen zwischen diesen Tabellen untereinander einrichten. Ihrer Entwurfsstrategie liegen dabei die beiden folgenden Ziele zugrunde:
- Ein Entwurf, der für die Anzeige, die Eingabe und die Bearbeitung der Daten optimiert ist. Dieses Ziel ist vorrangig zu verfolgen, wenn Sie Access für die Dateneingabe heranziehen möchten. Im Beispiel der Aktienkurse kommt die Eingabe und Bearbeitung nicht in Betracht, da die Daten im Tabellenblattformat von Online-Börsendiensten bereitgestellt werden.
- Ein Entwurf, der das Extrahieren der importierten Daten mit den wenigsten Schritten erlaubt. Wenn Sie zum Beispiel periodische Aktualisierungen Ihrer Aktienkurse im Tabellenblattformat erhalten, steht das einfache Importieren der Daten im Vordergrund.
Der anfängliche Entwurf ist gewöhnlich ein Kompromiß zwischen diesen beiden Zielen. Im Beispiel der Aktienkurse liegen die Dinge einfacher, da weder Dateneingabe noch Bearbeitung erforderlich sind.
Bei der Vorbereitung des ersten Tabellenentwurfs für die Kurse und Umsätze der Aktien sind die folgenden Punkte zu berücksichtigen:
- Die Daten für jedes Element der Gruppe Schluß-, Höchst-, Tiefstkurse und Umsätze werden in separaten Tabellen untergebracht. Eine Tabelle mit 84 Feldern zur Aufnahme aller Daten für eine Aktie wäre bestenfalls unhandlich. Wenn man ein Tabellenblatt aus einer derartig gestalteten Tabelle neu aufbaut, führt das zu merkwürdigsten Ergebnissen. Eines der Prinzipien des relationalen Datenbankentwurfs besteht darin, daß man in der Lage sein sollte, die ursprüngliche Datenbank aus den relationalen Daten wieder aufzubauen.
- Als Schlüsselfeld jeder Tabelle, Symbol, wird das Tickersymbol der Aktie verwendet. (Das Tickersymbol ist die von der New Yorker Börse vergebene Abkürzung für den Namen der Aktie.) Dieses Schlüsselfeld erlaubt das Verknüpfen der Tabellen in einer 1:1-Beziehung auf der Basis eines eindeutigen Wertes des Tickersymbols. 1:1-Beziehungen sind in relationalen Datenbanken unüblich, aber in diesem Beispiel durchaus nützlich.
- Abfragen organisieren die Daten in den Tabellen, wie sie für Formulare und Berichte in Access erforderlich sind. Da jedem Feld in der Abfrage der Name der Tabelle vorangestellt ist, sollten die Namen der Tabellen kurz sein, um Tastenanschläge zu sparen.
- Bei Kombination mehrerer Tabellen in einer Abfrage müssen die Datensätze in jeder Tabelle nach dem Typ identifiziert werden. Das zweite Feld, Typ, ist eine einbuchstabige Abkürzung für den Typ der Daten: C(lose), H(igh), L(ow) und V(olume).
Wir behalten in den Beispielen dieses Kapitels die englischen Bezeichnungen bei, da die Quelldaten in dieser Form vorliegen und der echte Börsianer ohnehin mit diesen Begriffen vertraut ist. Für alle, die sich nicht in der Materie auskennen: High (oder Highest Price) Höchstkurs, Low (oder Lowest Price) Tiefstkurs, Close (oder Closing Price) Schlußkurs, Volume Handelsvolumen oder Umsätze. Die Bezeichnung der Tabellenblätter (STK...) ist von Stock Aktie abgeleitet.
Als nächstes ist die Taktik zu entwickeln, um die erforderlichen Tabellen entsprechend der obigen Strategie zu erstellen. Der Plan zur Umwandlung erfordert die folgenden Elemente:
- Die in die separaten Tabellen aufzunehmenden Datensätze werden durch Tabellenerstellungsabfragen aus der Tabelle STK_21_1 extrahiert. Die verwendeten Kriterien basieren auf den Werten im Feld Day.
- Das Feld Symbol der Tabelle Close muß den Tabellen High, Low und Volume hinzugefügt werden.
- In der für das Erstellen der endgültigen Tabelle verwendeten Abfrage erfordert das Hinzufügen des Feldes Symbol in eine Tabelle einen eindeutigen Schlüssel, der die Tabelle Close und die Tabellen ohne Symbolwerte verknüpft. Als temporäres Schlüsselfeld kann ein AutoWert-Feld dienen, das den Tabellen Close, High, Low und Volume hinzugefügt wird.
- Das Erstellen der neuen Tabellen läuft in zwei Schritten ab. Zuerst werden die Daten in einen temporären Satz von Tabellen extrahiert (Hi, Lo und Vol). Der zweite Schritt kombiniert diese drei Tabellen mit dem Feld Symbol einer weiteren temporären Tabelle (Close), um die endgültigen Tabellen High, Low und Volume zu erzeugen. In diesem Fall sind temporäre Tabellen erforderlich, da Tabellenerstellungsabfragen niemals Tabellen ändern sollten, auf denen sie basieren.
- Weil der Tabelle Close ein Typenkennzeichnerfeld fehlt, ist dieser Tabelle ein Typ-Feld hinzufügen. Die restlichen Tabellen enthalten einen Typenkennzeichner, der sich durch den entsprechenden Codebuchstaben ersetzen läßt.
Nachdem Sie nun die Umwandlungsstrategie festgelegt und sich für die Taktiken zu deren Umsetzung entschieden haben, können Sie nun deren Für und Wider testen, wie es der nächste Abschnitt beschreibt.
Daten extrahieren
Tabellenerstellungsabfragen eignen sich insbesondere für das Erstellen neuer Tabellen aus Daten vorhandener Tabellen, wobei bestimmte Kriterien zugrundegelegt werden. Bei STK_21_1 erzeugen Sie mit Tabellenerstellungsabfragen eine endgültige Tabelle (Close) und drei temporäre Tabellen (Hi, Low und Vol). Führen Sie dazu die folgenden Schritte aus:
Öffnen Sie (falls erforderlich) die Tabelle STK_21_1. Klicken Sie auf den Pfeil der Schaltfläche Neues Objekt in der Symbolleiste. Markieren Sie Abfrage in der Liste, um eine neue Abfrage basierend auf STK_21_1 zu erstellen.
- Markieren Sie Entwurfsansicht in der Liste des Dialogfelds Neue Abfrage, und klicken Sie dann auf OK. Access erzeugt eine neue Abfrage und nimmt automatisch die Tabelle STK_21_1 in die Abfrage auf.
- Klicken Sie auf das Feld Day, und ziehen Sie das Feldsymbol in die erste Spalte des Entwurfsbereichs.
- Klicken Sie auf das Sternchen (*, alle Felder), und ziehen Sie das Feldsymbol in die zweite Spalte der Abfrage.
- Deaktivieren Sie das Kontrollkästchen Anzeige im Feld Day, da dieses Feld ebenfalls in der zweiten Spalte der Abfrage enthalten ist. (Es ist nicht zulässig, zwei Felder desselben Namens in eine Tabellenerstellungsabfrage einzubinden.)
- In die Zeile Kriterien des Feldes Day geben Sie High ein, um nur die Datensätze für den Höchstkurs der Aktie in die temporäre Hi-Tabelle zu übernehmen. Ihre Abfrage sollte nun Abbildung 21.7 entsprechen.
- Wählen Sie Abfrage/Tabellenerstellungsabfrage, um das Dialogfeld Neue Tabelle erstellen zu öffnen.
- Geben Sie Hi in das Textfeld Tabellenname ein, und klicken Sie dann auf OK (Abbildung 21.8). Die Standardwerte für die restlichen Elemente im Dialogfeld Neue Tabelle erstellen können Sie beibehalten.
Klicken Sie auf die Schaltfläche Ausführen der Symbolleiste, um die temporäre Tabelle Hi zu erstellen. Access zeigt ein Meldungsfeld mit der Anzahl der in die neue Tabelle einzufügenden Datensätze an (Abbildung 21.9). Klicken Sie auf Ja, um die Tabellenerstellungsabfrage abzuschließen.
Abbildung 21.7: Erstellen der temporären Tabelle Hi mit einer Tabellenerstellungsabfrage.
Abbildung 21.8: Eingabe des Namens für die temporäre Tabelle im Dialogfeld Neu Tabelle erstellen.
Abbildung 21.9: Dieses Meldungsfeld erwartet die Bestätigung, daß Sie die angegebene Anzahl Zeilen in die neue Tabelle einfügen möchten.
Öffnen Sie das Datenbankfenster, klicken Sie auf die Registerkarte Tabellen, und doppelklicken Sie in der Liste auf den Eintrag Hi, um die Tabelle anzuzeigen (Abbildung 21.10).
- Ändern Sie den Kriterienwert Ihrer Tabellenerstellungsabfrage in Low, und wiederholen Sie die Schritte 6 bis 10, wobei Sie Lo für den Tabellennamen in den Schritten 6 und 10 substituieren.
- Ändern Sie den Kriterienwert in Volume, und wiederholen Sie die Schritte 6 bis 10, wobei Sie Vol für den Tabellennamen verwenden.
- Die Schlußkurse befinden sich in der Zeile mit dem Tickersymbol. Jedem dieser Symbole folgt ein Bindestrich und ein Zeichen, das den Typ des Wertpapiers angibt. -S steht für eine gewöhnliche Aktie. Ändern Sie den Kriterienwert in Wie "*-*", um diese Zeilen auszuwählen, und wiederholen Sie die Schritte 6 bis 10, wobei Sie Close für den Tabellennamen einsetzen. Der Ausdruck *-* wählt alle Datensätze aus, die einen Bindestrich enthalten. Sie brauchen in diesem Fall keine temporäre Tabelle zu erzeugen, da die Tabelle Close alle Tickersymbole enthält (Abbildung 21.11).
Abbildung 21.10: Die mit der Tabellenerstellungsabfrage erstellte temporäre Tabelle Hi.
Abbildung 21.11: Die Tabelle Close mit den Tickersymbolen der Aktien.
Die Tabellenstruktur modifizieren
Alle im vorherigen Abschnitt erstellten Tabellen erfordern zusätzliche Felder, so daß Sie eine AnfügeabfrageAnfuegeabfragen entwerfen können, um eine geeignet strukturierte Tabelle zu erstellen. Als temporäres Schlüsselfeld wird ein AutoWert-Feld für jede der vier Tabellen verwendet. Der Tabelle Close ist ein Typ-Feld hinzufügen, und im Feld Day aller temporären Tabellen muß der Name in Typ geändert werden. Führen Sie dazu die folgenden Schritte aus:
Wenn eine Tabelle keine eindeutigen Werte enthält, auf denen man einen Primärschlüssel aufbauen kann, läßt sich mit AutoWert-FelderPrimaerschluesseln am schnellsten ein PrimärschlüsselAutoWert in die Tabelle einfügen.
Klicken Sie im Datenbankfenster auf die Registerkarte Tabellen, markieren Sie die Tabelle Hi, und klicken Sie auf die Schaltfläche Entwurf.
- Ändern Sie den Namen des ersten Feldes von Day in Typ, und setzen Sie die Eigenschaft Feldgröße auf 1 (Abbildung 21.12 ). Damit schneiden Sie den Wert des Feldes Typ High auf den geforderten einbuchstabigen Code H ab, sobald Sie die Entwurfsänderungen gespeichert haben.
Abbildung 21.12: Modifikationen am Entwurf der temporären Tabelle Hi.
Klicken Sie auf die Schaltfläche zur Feldauswahl des Feldes Typ, und drücken Sie (Einfg), um ein Feld am Beginn der Tabelle einzufügen. Tippen Sie ID in die Spalte Feldname ein, und wählen Sie AutoWert in der Spalte Felddatentyp. Klicken Sie auf die Schaltfläche Primärschlüssel in der Symbolleiste, um das ID-Feld zum Primärschlüsselfeld zu machen.
Klicken Sie auf die Schaltfläche Tabellenansicht auf der Symbolleiste. Speichern Sie die Änderungen an der Tabelle. Ein Meldungsfeld weist darauf hin, daß durch Ändern der Feldgröße-Eigenschaft auf einen kleineren Wert eventuell einige Daten gelöscht wurden (Abbildung 21.13). Klicken Sie auf Ja, um die Änderung zu bestätigen. Abbildung 21.14 zeigt die resultierende Tabelle.
Abbildung 21.13: Diese Warnung erscheint, da die Feldgröße für das Feld Typ verringert wurde.
- Wiederholen Sie die Schritte 1 bis 4 für die Tabellen Lo und Vol.
Öffnen Sie die Tabelle Close im Entwurfsmodus. Ändern Sie den Feldnamen Day in Symbol, und legen Sie dessen Eigenschaft Feldgröße auf 10 fest, um die längeren Tikkersymbole unterzubringen.
Klicken Sie auf die Auswahlschaltfläche für das Feld Symbol, und drücken Sie (Einfg), um das AutoWert-Feld ID einzufügen. Klicken Sie auf die Schaltfläche Primärschlüssel auf der Symbolleiste, um den Primärschlüsselindex zu erzeugen.
Abbildung 21.14: Die temporäre Tabelle Hi mit dem hinzugefügten ID-Schlüsselfeld.
- Markieren Sie das Feld 1 (das erste der Zahl-Felder), und drücken Sie dann (Einfg), um ein neues Feld einzufügen. Geben Sie Typ als Feldname des neuen Feldes ein (neue Felder erhalten automatisch den Datentyp Text), und setzen Sie die Eigenschaft Feldgröße auf 1. Abbildung 21.15 zeigt den Entwurf der Tabelle Close.
Abbildung 21.15: Modifikationen am Entwurf der Tabelle Close..
Klicken Sie auf die Schaltfläche Tabellenansicht der Symbolleiste, speichern Sie Ihre Änderungen, und akzeptieren Sie die abgeschnittenen Felder. Abbildung 21.16 zeigt die resultierende Tabelle Close.
Das Extrahieren der Daten aus STK_21_1 in die erforderlichen Tabellen ist ein relativ einfacher Prozeß, da die verwendeten Bezeichnungen zur Kennzeichnung der Daten einheitlich durch das gesamte Tabellenblatt sind. Falls in der Originalversion des Tabellenblatts irgendwelche Bezeichnungen fehlen oder nicht einheitlich sind, können Sie dort mit einem entsprechenden Makro konsistente Bezeichnungen für die in eine bestimmte Tabelle zu übernehmenden Zeilen herstellen.
Abbildung 21.16: Die TabelleClose mit den hinzugefügten Feldern ID und Typ.
Den Typ-Wert in die Tabelle Close einfügen
Wenn in einem Feld Textwerte zu ersetzen sind, arbeitet der Befehl Ersetzen des Menüs Bearbeiten in der Regel schneller als das Erzeugen einer UPDATE-Abfrage. Da das Textfeld Suchen nach im Dialogfeld Ersetzen jedoch keine Null-Werte akzeptiert, können Sie den Code C (für »Close«) nicht über den Befehl Ersetzen des Menüs Bearbeiten in das Feld Typ der Tabelle Close einfügen. Statt dessen müssen Sie den Wert des Felds Typ mit einer Aktualisierungsabfrage ändern. Führen Sie dazu folgende Schritte aus:
Aktivieren Sie die Tabelle Close. Klicken Sie auf den Pfeil der Schaltfläche Neues Objekt der Symbolleiste, und wählen Sie Abfrage aus der Menüliste.
- Markieren Sie Entwurfsansicht in der Liste des Dialogfelds Neue Abfrage, und klicken Sie dann auf OK, um eine neue Abfrage mit der hinzugefügten Tabelle Close zu erstellen.
- Wählen Sie Abfrage/Aktualisierungsabfrage, um den Abfragetyp von Auswahl in Aktualisierung zu ändern.
- Markieren Sie das Feld Typ, und ziehen Sie das Feldsymbol in die erste Spalte der Abfrage.
- Tippen Sie C in die Zeile Aktualisieren. Damit ändern Sie den Feldwert von Typ in allen Datensätzen vom Standardwert Null in den Einzelbuchstaben C. Abbildung 21.17 zeigt den momentanen Entwurf der Aktualisierungsabfrage.
Klicken Sie auf die Schaltfläche Ausführen der Symbolleiste, um das Feld Typ der Tabelle Close zu aktualisieren. Wenn das in Abbildung 21.18 dargestellte Meldungsfeld erscheint, klicken Sie auf Ja.
Abbildung 21.17: Mit dieser Aktualisierungsabfrage nehmen Sie den Code C in das Feld Typ der Datensätze in der Tabelle Close auf.
Abbildung 21.18: Dieses Meldungsfeld gibt die Anzahl der aktualisierten Datensätze an.
Die endgültigen Tabellen erstellen
Das Feld Symbol der Tabelle Close ist nun mit den Daten in den Tabellen Hi, Lo und Vol zu kombinieren, um die endgültigen Tabellen High, Low und Volume zu erstellen. Die drei endgültigen Tabellen erzeugen Sie in diesem Beispiel mit derselben Abfrage und ändern jeweils den Namen der temporären Tabellen.
Wenn Sie in einer Anwendung den Umwandlungsprozeß mit Hilfe von VBA-Code automatisieren, speichern Sie jede Abfrage unter einem eindeutigen Namen, damit sich die Abfrage durch eine VBA-Prozedur ausführen läßt.
Führen Sie die folgenden Schritte aus, um die endgültigen Tabellen High, Low und Volume mit Tabellenerstellungsabfragen anzulegen:
Aktivieren Sie die Tabelle Close, klicken Sie auf die Schaltfläche Neues Objekt: Abfrage der Symbolleiste. Im Dialogfeld Neue Abfrage markieren Sie Entwurfsansicht und klicken dann auf OK, um eine neue Abfrage auf der Basis der Tabelle Close zu erstellen.
- Wählen Sie Abfrage/Tabellenerstellungsabfrage, um das Dialogfeld Neue Tabelle erstellen zu öffnen. Geben Sie High in das Textfeld Tabellenname als Name der zu erstellenden Tabelle ein, und klicken Sie auf OK.
- Markieren Sie das Feld Symbol der Tabelle Close, und ziehen Sie es in die erste Spalte der Tabellenerstellungsabfrage.
Klicken Sie auf die Schaltfläche Tabelle anzeigen der Symbolleiste, oder wählen Sie Abfrage / Tabelle anzeigen, um das Dialogfeld Tabelle anzeigen zu öffnen. Wählen Sie Hi aus der Liste Tabellen aus, und klicken Sie auf Hinzufügen. Wählen Sie dann die Schaltfläche Schließen. Access erstellt automatisch die Beziehung zwischen den ID-Feldern der Tabellen Close und Hi.
Dieser Schritt ist sehr wichtig. Wenn Access beim Einrichten dieser Beziehung scheitert und Sie die Beziehung nicht hinzufügen, entsteht das kartesische Produkt statt des gewünschten Ergebnisses. Ein kartesisches Produkt stellt alle möglichen Kombinationen aller Felder dar, die in den beiden Tabellen enthalten sind. In diesem Fall enthält das kartesische Produkt fast 95.000 Zeilen (305 mal 305).
- Klicken Sie auf das Sternchen (*, alle Felder) der Tabelle Hi, und ziehen Sie das Feldsymbol in die zweite Spalte der Abfrage. Die Tabellenerstellungsabfrage weist nun das in Abbildung 21.19 gezeigte Aussehen auf.
Abbildung 21.19: Die Tabellenerstellungsabfrage für die endgültige Tabelle High
Klicken Sie auf die Schaltfläche Ausführen der Symbolleiste, um die endgültige Tabelle High zu erstellen. Klicken Sie auf OK im Meldungsfeld, das das Erstellen der neuen Tabelle bestätigt.
- Markieren Sie in der Abfrage die Feldliste der Tabelle High, und drücken Sie (Entf), um die Feldliste aus der Abfrage zu entfernen. Wiederholen Sie die Schritte 4 bis 6 für die Tabelle Lo, wobei Sie Low für den Namen der neuen endgültigen Tabelle im Dialogfeld Neue Tabelle erstellen einsetzen.
- Wiederholen Sie Schritt 7 für die Vol-Tabelle, wobei Sie Volume als Name der endgültigen Tabelle im Dialogfeld Neue Tabelle erstellen einsetzen.
- Schließen Sie die Abfrage ohne die Änderungen zu speichern.
Das temporäre SchlüsselfeldTemporaere ID ist aus der Tabelle Close zu entfernen, damit Sie Symbol zum Schlüsselfeld bestimmen können. Führen Sie die folgenden Schritte aus:
Öffnen Sie das Datenbankfenster, klicken Sie auf die Registerkarte Tabellen, und markieren Sie die Tabelle Close. Klicken Sie auf die Schaltfläche Entwurf.
- Klicken Sie auf die Schaltfläche zur Feldauswahl für das Feld ID, und drücken Sie dann (Entf). Bestätigen Sie in den erscheinenden Meldungsfeldern den Löschvorgang des Feldes und des Schlüsselfeldes durch Klicken auf OK.
Markieren Sie das Feld Symbol. Klicken Sie dann auf die Schaltfläche Primärschlüssel der Symbolleiste, um das Feld Symbol zum Primärschlüsselfeld zu machen. Abbildung 21.20 zeigt die Entwurfsansicht der Tabelle Close.
Klicken Sie auf die Schaltfläche Tabellenansicht in der Symbolleiste, um den Inhalt der Tabelle anzuzeigen. Klicken Sie auf OK, wenn Sie Access zum Speichern der Änderungen auffordert.
- Markieren Sie alle Spalten der Tabelle, indem Sie den Mauszeiger über die Feldnamen aller Spalten ziehen.
- Öffnen Sie das Dialogfeld Spaltenbreite durch Wahl von Format/Spaltenbreite. Klicken Sie auf Anpassen, um die Größe der Spalten zu ändern, und schließen Sie das Dialogfeld Spaltenbreite. Abbildung 21.21 zeigt die resultierende Tabelle Close.
Abbildung 21.20: Die TabelleClose mit dem Feld Symbol als Primärschlüsselfeld.
Abbildung 21.21: Die endgültige Version der Tabelle Close.
- Wählen Sie Datei / Speichern, um die Änderung der Spaltenbreiten zu speichern.
Die Tabellen Hi, Lo und Vol können Sie jetzt löschen. Das Löschen temporärer Tabellen spart Festplattenplatz allerdings erst nach dem Komprimieren der Datenbank.
Überprüfen der Tabellen durch Neuerstellen des Tabellenblatts
Ein wichtiger Schritt beim Erstellen von Tabellen aus externen Datenquellen besteht in der Überprüfung, ob die Tabellen die korrekten Informationen enthalten. Dieser Test läßt sich in den meisten Fällen am besten ausführen, wenn man die Daten in ihrem Originalformat oder in einem, dem Originalformat möglichst nahekommenden aus den Tabellen neu aufbaut. Diese Strategie erlaubt Ihnen einen direkten Vergleich der Quelldaten mit den in den Tabellen enthaltenen Daten.
Um ein Replikat des ursprünglichen Tabellenblatts STK_21_1 zu erstellen, führen Sie die folgenden Schritte aus:
Aktivieren Sie das Datenbankfenster, klicken Sie auf die Registerkarte Tabellen, und markieren Sie die Tabelle Close.
- Drücken Sie (Strg)+(C), um die Tabelle in die Zwischenablage zu kopieren, und drükken Sie dann (Strg)+(V), um eine Kopie der Tabelle zu erzeugen. Es erscheint das Dialogfeld Tabelle einfügen als.
- Tippen Sie Aktienkurse als Name der neuen Tabelle in das Dialogfeld Tabelle einfügen als (Abbildung 21.22). Stellen Sie sicher, daß die vorgegebene Option Struktur und Daten ausgewählt ist, und klicken Sie dann auf OK. Access erstellt die neue Tabelle Aktienkurse.
Abbildung 21.22: Eingabe des Tabellennamens in das Dialogfeld Tabelle einfügen als.
Markieren Sie die Tabelle Aktienkurse in der Liste Tabellen des Datenbankfensters, und klicken Sie dann auf die Schaltfläche Entwurf.
Klicken Sie auf die Schaltfläche Indizes der Symbolleiste, um das Dialogfeld Indizes zu öffnen.
Markieren Sie sowohl das Feld Symbol als auch das Feld Typ. Halten Sie dazu die (Umschalt)-Taste nieder, und klicken Sie auf die beiden Feldauswahlschaltflächen. Klicken Sie dann auf die Schaltfläche PrimärschlüsselFestlegen der Symbolleiste.
- Markieren Sie das Feld Symbol, und klicken Sie auf das Textfeld Indiziert im Abschnitt Feldeigenschaften des Entwurfsfensters. Wählen Sie in der Dropdown-Liste Indiziert den Eintrag Ja (Duplikate möglich). Bei Wahl von Ja (Ohne Duplikate) können Sie keine DatensätzeAnfuegen anfügen. Durch Indizieren des Feldes Symbol läßt sich die Geschwindigkeit von Abfragen erhöhen, die auf einem spezifischen Symbol oder einem Satz von Symbolen basieren. Abbildung 21.23 zeigt den Entwurf für die Tabelle Aktienkurse.
Klicken Sie auf die Schaltfläche Tabellenansicht der Symbolleiste und dann auf OK, wenn die Frage zum Speichern der Änderungen erscheint. Überprüfen Sie die Daten in der Tabelle, und schließen Sie dann das Fenster Aktienkurse.
Abbildung 21.23: Modifizieren des Schlüsselfeldes und der Indexeigenschaften der Tabelle Aktienkurse.
Damit Sie die Daten aus den anderen TabellenAnfuegen an die Tabelle Aktienkurse anfügen können, müssen Sie zunächst das Primärschlüsselfeld (ID) entfernen. In vorherigen Versionen von Access konnten Sie Daten aus Tabellen ohne einen identischen Satz von Feldern anfügen. Access 97 erzeugt die Meldung Die INSERT INTO-Anweisung enthält folgenden unbekannten Feldnamen: 'Feldname', wenn die Feldnamen in den Quell- und Zieltabellen nicht übereinstimmen. Öffnen Sie die Tabellen High, Low und Volume in der Entwurfsansicht, und löschen Sie das ID-Feld in allen drei Tabellen.
Statt des Löschens der ID-Felder können Sie auch alle Felder außer dem ID-Feld der Tabellen High, Low und Volume in die Abfragen hinzufügen, die Sie in den folgenden Schritten ausführen. Wenn Sie die ID-Felder aus den Tabellen löschen, sollten Sie sich Sicherungskopien der Tabellen High, Low und Volume anlegen, da Sie diese Tabellen erneut im nächsten Abschnitt dieses Kapitels »Die erstellten Tabellen verwenden« benötigen.
Um die Daten in den Tabellen High, Low und Volume in die Tabelle Aktienkurse aufzunehmen, führen Sie die folgenden Schritte aus:
Markieren Sie die Tabelle High im Datenbankfenster. Klicken Sie dann auf die Schaltfläche Neues Objekt der Symbolleiste, und wählen Sie Abfrage aus der Menüliste aus, um das Dialogfeld Neue Abfrage anzuzeigen.
- Markieren Sie den Eintrag Entwurfsansicht, und klicken Sie auf OK, um eine neue Abfrage basierend auf der Tabelle High zu öffnen.
- Wählen Sie Abfrage/Anfügeabfrage, um das Dialogfeld Anfügen anzuzeigen. Öffnen Sie die Dropdown-Liste Tabellenname, und markieren Sie Aktienkurse (Abbildung 21.24). An diese Tabelle sollen die Datensätze angefügt werden. Klicken Sie auf OK.
Abbildung 21.24: Im Dialogfeld Anfügen spezifizieren Sie den Namen der Tabelle, an die die Datensätze anzufügen sind.
- Markieren Sie das Sternchenfeld (*) in der Feldliste der Tabelle High, und ziehen Sie das Feldlistensymbol in die erste Spalte der Abfrage. Abbildung 21.25 zeigt den Entwurf der AnfügeabfrageAnfuegeabfragen.
Abbildung 21.25: Der Entwurf der Anfügeabfrage für das Hinzufügen von Datensätzen in die Tabelle Aktienkurse aus der Tabelle High..
Klicken Sie auf die Schaltfläche Ausführen der Symbolleiste, um die Datensätze aus der Tabelle High in die Tabelle Aktienkurse anzufügen. Das in Abbildung 21.26 dargestellte Meldungsfeld gibt die Anzahl der anzufügenden Datensätze an. Klicken Sie auf Ja.
Abbildung 21.26: Das Meldungsfeld zur Bestätigung der Anfügeoperation.
Löschen Sie die Feldliste der Tabelle High aus der Abfrage, und klicken Sie dann auf die Schaltfläche Tabelle anzeigen der Symbolleiste. Wiederholen Sie die Schritte 4 und 5, um die Daten der Tabellen Low und Volume an die Tabelle Aktienkurse anzuhängen.
Nachdem Sie die Daten aus den Tabellen High, Low und Volume an Aktienkurse angefügt haben, öffnen Sie die Tabelle Aktienkurse vom Datenbankfenster aus. Die Tabelle sollte Abbildung 21.27 entsprechen. Die Daten für Close, High, Low und Volume stehen in derselben Reihenfolge wie im ursprünglichen Tabellenblatt, da die Tabelle nach der Kombination der Felder Symbol und Typ als Primärschlüssel indiziert ist. Access erzeugt auf dem/den Schlüsselfeld(ern) einen Index ohne Duplikate.
- Ziehen Sie die Tabelle Aktienkurse nach rechts unten auf Ihrem Bildschirm. Öffnen Sie die Tabelle STK_21_1. Klicken Sie dann auf den sichtbaren Bereich des Fensters Aktienkurse, um es mit der Orginalversion zu vergleichen (Abbildung 21.28).
- Durch das Indizieren der Tabelle Aktienkurse hat sich die Reihenfolge einiger Einträge geändert. Überzeugen Sie sich anhand ausgewählter Aktien, daß die Daten ansonsten in beiden Tabellen identisch sind.
Abbildung 21.27: Die endgültige Version der Tabelle Aktienkurse mit allen angefügten Datensätzen.
- Sie können nun die Aktienkurse für zukünftige Daten durch fortlaufende Numerierung der Felder in aufeinanderfolgenden Excel-Tabellen hinzufügen. Als Beispiel würden die nächsten 21 Tage der Kurse und des Handelsvolumens die Feldnamen 22 bis 42 für die numerischen Einträge verwenden. Die neuen Tabellen nennen Sie beispielsweise Close2, High2, Low2 und Volume2. Diese Tabellen fügen Sie dann Ihren Abfragen hinzu, um den Bereich der aufgenommenen Daten zu erweitern. Als Alternative können Sie Tabellen erzeugen, in denen die Daten für High, Low, Close und Volume einer bestimmten Aktie zu einem bestimmten Datum enthalten sind. Die Übernahme der Daten läßt sich dann aber kaum noch manuell bewerkstelligen, so daß Sie die Restrukturierung der Tabellen per Access-VBA-Code realisieren müssen.
Abbildung 21.28: Vergleich der Tabelle Aktienkurse mit der Originalversion.
Die Struktur der Tabelle Aktienkurse entspricht nicht den Regeln für relationale Datenbanken, obwohl sie eine Verbesserung gegenüber dem ursprünglichen Excel-Tabellenblatt darstellt. Die Verwendung individueller Felder für das Datum bildet wiederholende Gruppen eine Verletzung der ersten Normalform für relationale Tabellen. Eine vollständig normalisierte Tabelle würde aus einem einzelnen Datensatz für die Daten High, Low, Close und Volume für eine einzelne Aktie zu einem einzigen Datum bestehen. Der zusammengesetzte Primärschlüssel einer derartigen Tabelle würde das Tickersymbol für die Aktie und das Datum beinhalten. Das Erstellen einer vollständig normalisierten Tabelle aus STK_21.XLS erfordert aber den Einsatz der Automatisierung und umfangreichen Access-VBA-Code.
Die erstellten Tabellen verwenden
In diesem Abschnitt kombinieren Sie die Daten in den Tabellen mit Hilfe von Abfragen, um daraus Formulare und Berichte für die Anzeige der Daten in tabellarischer Form oder als Diagramm zu erstellen. Die Beziehungen zwischen den Tabellen sollten automatisch für die von Ihnen erzeugten Abfragen eingerichtet werden. Darüber hinaus müssen Sie die referentielle Integrität aufrecht erhalten. Es darf demzufolge nicht möglich sein, den Schlußkurs für eine Aktie zu löschen, für die Höchst- und Tiefstkurse sowie der Handelsumsatz vorhanden sind. Aufgrund dieser Forderung sind Beziehungen als Eigenschaften der Tabellen einzurichten.
Führen Sie die folgenden Schritte aus, um die Beziehungen zwischen den Tabellen herzustellen:
Öffnen Sie die Tabelle High in der Entwurfsansicht, markieren Sie das Feld Symbol, und klicken Sie auf die Schaltfläche Primärschlüssel der Symbolleiste, um das Feld Symbol als Primärschlüssel festzulegen. Wiederholen Sie diesen Prozeß für die Tabellen Low und Volume.
- Access 95 und 97 erfordern einen Primärschlüssel, um daraus die BeziehungPrimaerschluessel zwischen den Tabellen (1:1 oder 1:n) zu bestimmen. (In Access 2.0 können Sie den Typ der Beziehung selbst angeben.)
Aktivieren Sie das Datenbankfenster. Klicken Sie auf die Schaltfläche Beziehungen der Symbolleiste, oder wählen Sie Extras / Beziehungen. Es wird das leere Fenster Beziehungen geöffnet, in dem das Dialogfeld Tabelle anzeigen aktiv ist.
- Markieren Sie die Tabelle High im Listenfeld Tabellen, und klicken Sie auf die Schaltfläche Hinzufügen.
- Wiederholen Sie Schritt 2 für die Tabellen Low, Close und Volume. Klicken Sie dann auf die Schaltfläche Schließen. Das Fenster Beziehungen sollte nun Abbildung 21.29 entsprechen.
- Ziehen Sie das Feld Symbol aus der Feldliste der Tabelle High in das Feld Symbol der Feldliste der Tabelle Low, um eine Verknüpfung einzurichten. Access öffnet das Dialogfeld Beziehungen.
- Schalten Sie das Kontrollkästchen Mit referentieller IntegritätBeziehungenReferentielle Integritaet ein, um die Weitergabe von Aktualisierungen und Löschungen zu aktivieren. Access bestimmt automatisch die Beziehung zwischen jeder Tabelle als 1:1 durch Testen der verknüpften Felder.
Abbildung 21.29: Das Fenster Beziehungen mit den vier hinzugefügten Tabellen.
- AktualisierungsweitergabeLoeschweitergabeSchalten Sie das Kontrollkästchen Aktualisierungsweitergabe an Detailfeld ein. Diese Aktion erlaubt Ihnen die Änderung des Symbol-Wertes für eine Aktie, wenn sich deren NYSE-Tickersymbol ändern sollte, ein unwahrscheinliches (aber vorstellbares) Ereignis. Wenn Sie einen Symbol-Wert ändern, ändern sich die Symbol-Werte für alle der in Beziehung stehenden Tabellen im Einklang.
- Schalten Sie das Kontrollkästchen Löschweitergabe an Detaildatensatz ein. Damit ermöglichen Sie das Entfernen von Datensätzen für eine Aktie, deren Handel an der New Yorker Börse eingestellt wurde ein wahrscheinlicheres Ereignis. Abbildung 21.30 zeigt das fertige Dialogfeld Beziehungen.
Abbildung 21.30: Im Dialogfeld Beziehungen legen Sie die Regeln für das Aufrechterhalten der referentiellen Integrität fest.
- Klicken Sie auf die Schaltfläche Erstellen, um die Verknüpfung zu erstellen und das Dialogfeld Beziehungen zu schließen.
- Wiederholen Sie die Schritte 5 bis 8 für die Verknüpfung zwischen den Tabellen Low und Close sowie die Verknüpfung zwischen den Tabellen Close und Volume. Das Fenster Beziehungen entspricht nun Abbildung 21.31.
Abbildung 21.31: Das Fenster Beziehungen mit 1:1-Beziehungen zwischen jeder Tabelle.
- Schließen Sie das Fenster Beziehungen, und speichern Sie Ihre Änderungen.
Richten Sie immer Standardbeziehungen zwischen den Tabellen Ihrer Datenbank ein, damit diese Beziehungen automatisch in die erzeugten Abfragen eingefügt werden. Wenn Sie keine Standardbeziehungen festlegen und Access keine Beziehungen für Ihre Abfrage erzeugt (oder Sie vergessen, die Beziehungen zu erstellen), erhalten Sie wahrscheinlich das kartesische Produkt (weiter vorn in diesem Abschnitt erläutert) und nicht das gewünschte Ergebnis. Das kartesische Produkt kann bei großen Tabellen über alle Schranken wachsen und mehrere Minuten für die Erzeugung benötigen. Eine Unterbrechung über (Strg)+(Pause) ist eventuell nicht möglich. Windows verbraucht die gesamten Ressourcen beim Erzeugen des kartesischen Produkts und erzeugt schließlich einen Fehler wegen Speichermangels.
Zum Erstellen einer Testabfrage, die alle Daten aus Ihren Tabellen enthält, führen Sie die folgenden Schritte aus:
Markieren Sie die Tabelle High im Datenbankfenster, klicken Sie auf den Pfeil der Schaltfläche Neues Objekt der Symbolleiste, und wählen Sie Abfrage aus dem Menü, um das Dialogfeld Neue Abfrage anzuzeigen.
- Klicken Sie bei markierter Entwurfsansicht auf OK, um eine Abfrage mit der hinzugefügten Tabelle High zu erstellen.
Klicken Sie auf die Schaltfläche Tabelle anzeigen der Symbolleiste. Fügen Sie die Tabellen Low, Close und Volume hinzu. Sobald Sie eine Tabelle neu aufnehmen, werden die Verknüpfungen zwischen den Tabellen automatisch eingerichtet (durch die Beziehungen, die Sie in den vorherigen Schritten festgelegt haben) und durch die Verbindungslinien zwischen den Feldern Symbol gekennzeichnet (Abbildung 21.32). Klicken Sie auf die Schaltfläche Schließen, um das Dialogfeld Tabelle anzeigen zu schließen.
Abbildung 21.32: Teil des Abfrageentwurfs für die 21-Tage Aktienkurs-Abfrage.
- Doppelklicken Sie auf den Kopf der Feldliste der Tabelle High, um alle Felder auszuwählen, und ziehen Sie die Spalte mit den Feldern in die erste Spalte der Abfrage.
- Markieren und löschen Sie die Spalten ID und Typ. Blättern Sie dann mit Hilfe der horizontalen Bildlaufleiste bis zur ersten leeren Spalte nach den 21 Spalten, die für die High-Felder vorgesehen sind.
- Wiederholen Sie die Schritte 4 und 5 für die Tabellen Low, Close und Volume. Löschen Sie bei diesen drei Tabellen zusätzlich noch das Feld Symbol.
Klicken Sie auf die Schaltfläche Ausführen der Symbolleiste, um die Abfrage anzuzeigen. Sie können die Spalten der Abfrage ziehen, um diese in einer logischen Reihenfolge anzuordnen (Abbildung 21.33).
- Wählen Sie Ansicht / SQL, um die SQL-Anweisung für die Abfrage anzuzeigen (Abbildung 21.34).
Abbildung 21.33: Die Ergebnismenge der Abfrage mit den neu angeordneten Spalten.
Abbildung 21.34: Die SQL-Anweisung für die Abfragen gemäß Abbildung 21.32 und 21.33.
Mit Abfragen des obigen Typs können Sie beliebige Daten in den vier Tabellen auf einem Formular anzeigen oder bearbeiten. Ebenso lassen sich mit diesen Abfragen die Aktiendaten insgesamt oder auszugsweise mit einem Access-Bericht ausdrucken. Mit einem entsprechenden Entwurf der Abfrage können Sie die Anzeige auch auf Aktien einschränken, die nach bestimmten Kriterien etwa einem minimalen Handelsvolumen oder einem Bereich von Schlußkursen ausgewählt sind. Die Möglichkeit, Daten in nahezu beliebiger Reihenfolge der Zeilen und Spalten auf schnelle Weise mit Hilfe einfacher Abfragen neu anzuordnen, zeigt, daß Access-Abfragedatenblätter zumindest so flexibel wie Tabellenblätter sind.
Aktiendaten als Tabellenblatt exportieren
Wenn Sie für ein und denselben Satz von Aktien Daten sammeln, können Sie den Umwandlungsprozeß vereinfachen, indem Sie den Entwurf des Excel-Tabellenblatts modifizieren und an den Entwurf der Tabellen anpassen. Umfangreichere Änderungen am Excel-Tabellenblatt können Sie umgehen, wenn Sie die Access-Tabelle Aktienkurse zurück nach Excel im Format von Excel 97 exportieren.
Führen Sie die folgenden Schritte aus, um die Tabelle Aktiendaten in eine .XLS-Arbeitsmappe zu exportieren:
Markieren Sie die Tabelle Aktienkurse im Datenbankfenster.
Klicken Sie auf den Pfeil der Schaltfläche OfficeVerknüpfungenAnalysieren mit MS Excel in der Symbolleiste, und wählen Sie Analysieren mit MS ExcelOfficeVerknuepfungen, um die Tabellendaten zu exportieren und Excel mit dem aktiven Tabellenblatt Aktienkurse.xls zu starten (Abbildung 31.35).
Abbildung 21.35: Die Aktienkurse erscheinen in der Reihenfolge der Primärschlüsselfelder der Tabelle.
- Wählen Sie Datei/Speichern, um das sortierte Tabellenblatt zu speichern. Schließen Sie dann Excel durch Wahl von Datei/Beenden.
Das neue Tabellenblatt können Sie als Vorlage für die Eingabe oder den Import von Aktienkursen und Umsatzdaten für andere Datumsbereiche verwenden. Durch das neue Format entfällt auch das Anlegen temporärer Tabellen während des Umwandlungsprozesses.
Excel als OLE-Server verwenden
Dieser Abschnitt beschreibt das Einrichten von Verknüpfungen zwischen Datenzellen in OLE-Objektfeldern und Tabellenblättern, die mit Excel 97 erstellt wurden. Bestimmte Beispiele können Sie zwar mit Excel 3.0 und 4.0 nachvollziehen, aber die Version 5 und spätere Versionen verfügen im Hinblick auf die OLE 2+-Kompatibilität über verschiedene zusätzliche Funktionen, die diesen Vorgang vereinfachen. Die schrittweisen Anleitungen dieses Abschnitts gehen davon aus, daß Sie mit dem Einsatz von Excel 5+ vertraut sind.
Ein Tabellenblatt oder Diagramm aus Excel können Sie als gebundenes oder ungebundenes OLE-Objekt einbetten oder verknüpfen. Daten des OLE-Tabellenblattobjekts lassen sich in die Zwischenablage kopieren und dann in ein gebundenes oder ungebundenes Textfeld einfügen. Die folgenden Abschnitte bringen Beispiele für diese Techniken.
Ein Excel -Tabellenblatt in ein Formular einbetten
Mit dem nachstehend beschriebenen Verfahren können Sie ein vollständiges Excel-Tabellenblatt in ein ungebundenes Objektfeld einbetten. In diesem Fall stellt die Präsentation eines Excel-Tabellenblatts (oder das, was Sie auf dem Tabellenblatt in einem gebundenen Objektfeld anzeigen können) den gesamten Inhalt des Tabellenblatts dar. Große eingebettete Tabellenblätter nehmen beträchtlichen Festplattenplatz ein und benötigten geraume Zeit für die Anzeige der Präsentation. Gegebenenfalls arbeiten Sie mit einem kleineren Tabellenblatt (mit einer Dateigröße von etwa 5 Kbyte oder weniger, beispielsweise mit einer aus dem Tabellenblatt STK_21_3 erzeugten Arbeitsmappe), falls der Festplattenplatz bei Ihnen knapp ist.
Führen Sie die folgenden Schritte aus, um ein Excel-Tabellenblatt in ein ungebundenes ObjektfeldExcel-Tabellenblaetter einbetten eines neuen Formulars einzubetten:
Öffnen Sie (falls erforderlich) die Datenbank AKTIEN.MDB. Erstellen Sie ein neues, leeres Formular mit einer Höhe von etwa 9 cm und einer Breite von etwa 15 cm.
- Klicken Sie auf die Schaltfläche Toolbox in der Symbolleiste, und wählen Sie das Tool Objektfeld aus. Erstellen Sie ein Feld, dessen linke Ecke etwa 1 cm vom linken Rand des Formulars und etwa 1 cm vom oberen entfernt ist. (Die Abmessungen dieser Ränder sind wichtig. Siehe dazu die Anmerkung zur Fehlerbehebung am Ende dieses Abschnitts.) Es erscheint das Dialogfeld Objekt einfügen.
- Klicken Sie auf die Option Aus Datei erstellen, und klicken Sie dann auf die Schaltfläche Durchsuchen, um das Dialogfeld Durchsuchen zu öffnen und den Ordner mit der Datei Aktienkurse zu lokalisieren. Markieren Sie AKTIENKURSE.XLS (oder den Namen einer anderen Excel 5+-Arbeitsmappe, die Sie einbetten möchten) in der Liste der Dateinamen, und klicken Sie dann auf Öffnen, um das Dialogfeld Durchsuchen zu schließen. Klicken Sie auf OK, um das Dialogfeld Objekt einfügen zu schließen (Abbildung 21.36).
Abbildung 21.36: Einfügen eines ungebundenen Objekts aus einer Excel 97-Datei.
Es erscheint ein Meldungsfeld, daß das Excel-Tabellenblatt beschädigt ist, daß Excel nicht geeignet registriert ist oder daß nicht genügend Speicher zur Verfügung steht, um Excel zu öffnen.
Schließen Sie andere geöffnete Anwendungen, und versuchen Sie es erneut. Wenn die Prozedur weiterhin Fehlermeldungen anzeigt, verlassen Sie Windows und starten es erneut. (Eine Anwendung hat wahrscheinlich die von ihr belegten globalen Speicherblöcke beim Schließen nicht freigegeben.) Erhalten Sie weiterhin Fehlermeldungen, die sich auf die Registrierung beziehen, müssen Sie die Einträge für Excel in der Registrierung überprüfen. In Kapitel 19 finden Sie detaillierte Anweisungen zu den Registrierungseinträgen, die für lokale Server erforderlich sind.
- Markieren Sie das ungebundene Objektfeld, und ziehen Sie den rechten Rand auf etwa 14 cm. Ziehen Sie den unteren Rand auf etwa 8 cm.
- Klicken Sie auf die Schaltfläche Eigenschaften der Symbolleiste. Aktivieren Sie die Registerkarte Daten, und setzen Sie die Eigenschaft Aktiviert auf Ja und die Eigenschaft Gesperrt auf Nein. Das Objekt läßt sich andernfalls nicht aktivieren (Abbildung 21.37).
Abbildung 21.37: Festlegen der Eigenschaften Aktiviert und Gesperrt des Objekts, um die direkte Aktivierung zu ermöglichen.
Klicken Sie auf die Schaltfläche Formularansicht der Symbolleiste, um die Präsentation Ihres Tabellenblatts anzuzeigen (Abbildung 21.38). Wird nur ein Teil einer Spalte angezeigt, wechseln Sie in die Entwurfsansicht und passen die Breite Ihres Objektfelds an, so daß eine vollständige Spalte mit einem rechten Rand von etwa 0,5 cm sichtbar ist. Gegebenenfalls können Sie auch die Höhe des Formulars anpassen, um einen unteren Rand von etwa 0,5 cm einzustellen. (Die Ränder innerhalb des Objektfelds sind notwendig. Siehe den folgenden Hinweis zur Fehlerbehebung.)
- Doppelklicken Sie auf das Objektfeld, um das TabellenblattDirekt Aktivieren direkt zu aktivieren. Wenn Sie die linke und obere Position Ihres Objektfelds gesetzt und die inneren Ränder vorgesehen haben, sollte Ihr Tabellenblatt etwa Abbildung 21.39 entsprechen. Die Menüs Bearbeiten und Ansicht von Excel 97 ersetzen die Menüs Bearbeiten und Ansicht von Access, während die Menüs Einfügen, Format, Extras und Daten der Menüleiste von Access hinzugefügt werden. Die beim Öffnen von Excel normalerweise eingeblendeten Symbolleisten werden den Symbolleisten von Access 97 hinzugefügt. Der aktivierte Modus ist durch einen umlaufenden Rahmen um das Objektfeld gekennzeichnet.
Abbildung 21.38: Die Präsentation eines Tabellenblatts in einem ungebundenen Objektfeld.
Abbildung 21.39: Das direkt aktivierte Tabellenblatt.
Wenn das Objekt aktiviert ist, können Sie jede Operation ausführen, die in Excel 97 möglich ist. Ausgenommen sind Operationen, die die Verwendung des Menüs Datei von Excel erfordern beispielsweise Speichern der Arbeitsmappe in eine Datei oder Drucken des Tabellenblatts.
- Klicken Sie außerhalb des gebundenen Objektfelds, um die Markierung des Objekts aufzuheben, und kehren Sie in den Präsentationsmodus zurück, so daß die Menüleiste von Access aktiv ist.
- Wählen Sie Bearbeiten/Tabelle-Objekt/Öffnen, um das Fenster von Excel 97 mit den eingebetteten Daten als Quelle der aktuellen Excel-Arbeitsmappe zu öffnen (siehe Abbildung 21.40). Wenn Sie Excel öffnen, können Sie das Tabellenblatt drucken oder die eingebettete Arbeitsmappe in einer Datei speichern.
Abbildung 21.40: Öffnen von Excel 97 im eigenen Fenster (aus dem Präsentationsmodus heraus).
- Wählen Sie Datei/Beenden, um die Instanz von Excel zu schließen und zum Präsentationsmodus zurückzukehren.
- Schließen Sie Ihr Formular, und speichern Sie die Änderungen.
Die Schaltflächen zur Spalten- und Zeilenauswahl, die Tabellenblatt-Register, horizontale oder vertikale Bildlaufleiste erscheinen nicht, wenn das Objekt aktiviert ist.
Zwei Faktoren bestimmen die Sichtbarkeit dieser Funktionselemente beim direkten Aktivieren eines Objekts. Die obere Position des Objektfelds muß für die Schaltflächen zur Spaltenauswahl im Formularbereich Platz bieten (etwa 1 cm) und die linke Position des Feldes für die Auswahlschaltflächen der Zeilen (etwa 1 cm). Die Anzeige der horizontalen und vertikalen Bildlaufleiste ergibt sich aus dem internen Rand des Objekt, das heißt, dem Abstand zwischen dem Rand der Tabellenblatt-Präsentation und dem unteren und rechten Rand des Objektfelds (etwa 0,5 cm).
Wenn nach Einstellung dieser Werte alle der in Abbildung 21.39 dargestellten Funktionselemente nicht erscheinen, setzen Sie den Mauszeiger auf die obere linke Ecke des Markierungsrahmens und ziehen die Ecke diagonal nach unten, um die Größe des Markierungsrahmens zu reduzieren. Gegebenenfalls sind wiederholte Anpassungen der Größe des Objektfelds und des Markierungsrahmens erforderlich, bis alle Funktionselemente im Anzeigebereich erscheinen.
Schließlich können Sie noch die Eigenschaft Größenanpassung des ungebundenen Objektfelds auf Zoomen setzen. Bei einem großen Tabellenblatt kann der Standardwert dieser Eigenschaft (Abschneiden) bewirken, daß die Funktionselemente an der rechten Seite und den unteren Rändern des aktivierten Arbeitsmappenobjekts abgeschnitten werden.
Werte aus einem OLE-Objekt extrahieren
Einzelne Zahlen oder Textwerte können Sie gezielt aus einem verknüpften oder eingebetteten Excel-OLE-Objekt kopieren und in einem TextfeldDaten aus Excel-Tabellenblaettern importieren plazieren. Im nächsten Beispiel fügen Sie die Werte Close, High und Low für die Aktie AAL-S in ein mehrzeiliges Textfeld auf dem Formular ein, das Sie im vorherigen Abschnitt erstellt haben. Führen Sie dazu die folgenden Schritte aus:
- Reduzieren Sie in der Entwurfsansicht die Größe des ungebundenen Objektfelds mit dem Excel-Tabellenblatt-Objekt, und verschieben Sie das Feld nach unten, um Platz für ein mehrzeiliges Textfeld am oberen Rand des Formulars zu schaffen.
- Fügen Sie auf dem Formular ein Textfeld ein, und setzen Sie den Wert der Eigenschaft Bildlaufleisten auf Vertikal.
- Doppelklicken Sie in der Formularansicht auf das ungebundene Objektfeld, um das Arbeitsmappenobjekt zu aktivieren.
Die ausgewählten Werte müssen Sie kopieren und einfügen, während das Formular in der Formularansicht ist. Andernfalls wird der eingefügte Text zur Eigenschaft Steuerelementinhalt des Textfelds, wodurch der Fehler #NAME? erscheint, wenn Sie das Formular in der Formularansicht anzeigen.
- Markieren Sie die Zelle oder den Zellbereich, den Sie in ein Textfeld-Steuerelement importieren möchten. In diesem Fall markieren Sie A2:H5, um die Kursangaben für sieben Tage für die Aktie AA-S zurückzugeben.
- Wählen Sie Bearbeiten/Kopieren, oder drücken Sie (Strg)+(C), um den Bereich A2:H5 in die Zwischenablage zu kopieren.
- Markieren Sie das Textfeld (dabei wird die Markierung des Objektfelds aufgehoben), und wählen Sie dann Bearbeiten/Inhalte einfügen, um das Dialogfeld Inhalte einfügen anzuzeigen. Wenn Sie Datenelemente von einem eingebetteten Objekt in ein Textfeld einfügen, haben Sie nur die Möglichkeit, sie als Text einzufügen (Abbildung 21.41). Klicken Sie auf OK, um den Text in das Textfeld zu übernehmen.
Abbildung 21.41: Einfügen eines markierten Bereichs aus einem Excel-Tabellenblatt als Text.
- Abbildung 21.42 zeigt die eingefügten Datenelemente. Die Striche zwischen den Werten im Textfeld repräsentieren die Tabulator-Zeichen, mit denen Excel die Datenspalten in einer Zeile trennt.
Wenn Sie ein oder mehrere gebundene Textfelder mit einem numerischen Datentyp erstellen, können Sie eine Zahl von einer markierten Einzelzelle in jedes Textfeld einfügen. Mit diesen Werten können Sie dann die Felder der Tabelle aktualisieren, an die das Textfeld gebunden ist. Per Automatisierung lassen sich allerdings die Werte in Tabellen mit Daten aus einer anderen Anwendung effizienter aktualisieren.
Abbildung 21.42: In ein ungebundenes Textfeld eingefügte Markierung aus einem Excel-Tabellenblatt.
Verknüpfen mit einem Zellbereich in einem Excel-Tabellenblatt
Das Einbetten von Excel-Objekten bietet sich an, wenn Sie per Automatisierung Daten von einem Recordset-Objekt in eingebettete Tabellenblatt-Zellen übertragen. In den meisten Fällen ist jedoch das Erstellen einer OLE-Verknüpfung zu allen oder einem Bereich von Zellen in einem Tabellenblatt die gebräuchlichere Praxis. Das Verknüpfen erlaubt Ihnen das Anzeigen oder die Bearbeitung der neuesten Version der Tabellenblatt-Daten aus der Quelldatei. Die in Access vorgenommenen Änderungen werden zurückgegeben, wenn Sie Excel schließen, falls Sie die Änderungen speichern.
Der konventionelle Ablauf beim Verknüpfen einer Datei in Excel ist dem Einsatz von OLE 1.0 zum Verknüpfen von Grafikdateien ähnlich. Die direkte Aktivierung ist bei verknüpften Objekten nicht verfügbar. Führen Sie die folgenden Schritte aus, um eine Verknüpfung mit einem Bereich von Zellen in einer Excel-Datei zu erzeugen:
- Öffnen Sie ein neues, leeres Access-Formular.
- Starten Sie Excel unabhängig von Access.
- Wählen Sie Bearbeiten/Öffnen, und markieren Sie im Öffnen-Dialogfeld von Excel die zu verknüpfende Datei. Dieses Beispiel verwendet AKTIENKURSE.XLS.
- Markieren Sie die Zellen des Tabellenblatts, die Sie in Ihre Access-Tabelle aufnehmen möchten, und kopieren Sie die markierten Zellen mit (Strg)+(C) in die Zwischenablage. In diesem Beispiel wird der Zellbereich A1:E17 des Tabellenblatts Aktienkurse verwendet.
- Wählen Sie in Access den Befehl Bearbeiten/Inhalte einfügen, um das Dialogfeld Inhalte einfügen anzuzeigen. Klicken Sie auf die Option Verknüpfung einfügen. Die einzigen Möglichkeiten bei einem verknüpften Objekt sind das Objekt oder der Text in den markierten Datenelementen. Die Datenquelle Aktienkurse!Z1S1:Z17S5 erscheint im Bezeichnungsfeld Quelle (Abbildung 21.43).
Abbildung 21.43: Das Dialogfeld Inhalte einfügen für einen verknüpften Zellbereich in einem Excel-Tabellenblatt.
- Klicken Sie auf OK, um das ungebundene Objektfeld mit der Präsentation der markierten Zellen zu erstellen. Im Entwurf brauchen Sie keine Ränder vorzusehen, da die direkte Aktivierung bei verknüpften Objekten nicht verfügbar ist.
Öffnen Sie das Eigenschaftenfenster, und setzen Sie die Eigenschaft Aktiviert des Objektfelds auf Ja und die Eigenschaft Gesperrt auf Nein.
Klicken Sie auf die Schaltfläche Formularansicht der Symbolleiste. Abbildung 21.44 zeigt die Präsentation des verknüpften Objekts.
- Doppelklicken Sie auf die Präsentation des Tabellenblatts, um Excel im eigenen Fenster zu starten. Die verknüpften Zellen sind im Tabellenblatt markiert (Abbildung 21.45). Wie bereits weiter vorn in diesem Abschnitt erwähnt, ist die direkte Aktivierung nicht auf verknüpfte Objekte anwendbar.
- Wählen Sie in Excel den Befehl Datei/Beenden, um den Fokus an Access zurückzugeben. Falls Sie Änderungen an den Daten vorgenommen haben, können Sie jetzt entscheiden, ob Sie die Änderungen speichern möchten.
Abbildung 21.44: Die Präsentation eines verknüpften Bereichs von Tabellenblatt-Zellen.
Abbildung 21.45: Durch Doppelklicken auf die Präsentation der verknüpften Zellen gestartete Instanz von Excel.
© 1997 Que
Ein Imprint des Markt&Technik Buch- und Software- Verlag GmbH
Elektronische Fassung des Titels: Special Edition: Access 97, ISBN: 3-8272-1013-5