2.1.2 Index-sequentieller Zugriff
2.2.1 Planung von Datenbanken;
Entity-Relationship-Modell
2.2.2 Umsetzung des ER-Diagramms in das
relationale Modell
2.3 Normalisierung von Datenbanken
3.1 Erstellen einer einfachen
Datenbank
3.2.1 Regeln für Feldnamen,
Tabellennamen und anderen Access-Objekten:
3.6.1 Erstellen einer neuen
Auswahlabfrage:
3.6.2 Formulieren von Kriterien:
3.6.3 Berechnete Felder in Abfragen
3.7 Formulare zur Dateneingabe
4.1 Importieren und Verknüpfen von
Tabellen
4.3 Auswahlabfragen basierend auf
mehreren Tabellen
4.5 Komplexe Nachschlagefelder, die
auf in Beziehung gesetzten Tabellen beruhen:
4.6.4 Tabellenerstellungsabfrage
4.7 Formulare auf Grund von
komplexeren Abfragen; Unterformulare
4.9 Selbsterstellte Berichte (Reports)
4.11 Formulare zur Gestaltung einer
Bedieneroberfläche
4.12 Verhalten von Access im Netzwerk
4.13 Absichern einer Access-Anwendung
4.13.1 Einstellung der Startoptionen
[Extras]-[Start]
4.13.2 Erstellen einer *.MDE-Datei
Vorbemerkung: In diesem Kurs wird eine Datenbank für ein kleines Unternehmen erstellt, das Artikel verkauft. Es soll möglich sein, Artikel- und Kundenstammdaten zu verwalten sowie auf „Knopfdruck“ Rechnungen und Adressetiketten auszudrucken.
MS Access ist ein relationales Datenbankmanagementsystem (RDBMS). Dabei liegen Expertenfunktionen gleich neben Grundfunktionen.
Wir wiederholen aus dem Access-Grundkurs alle wichtigen Schritte und erhöhen die Detailgenauigkeit.
Eine Datenbank ist eine Sammlung von Daten aus der Realität.
Älteres Datenzugriffsverfahren (Speicherung auf Magnetbändern!). Sequenziell = „hintereinander“ (vgl. Videokassette).
Beispiel: Das CSV-Dateiformat (Comma Separated Value) kann von Excel gelesen werden und wird oft als Schnittstelle zu Großdatenbanksystemen verwendet
KNr;Nachname;Vorname;PLZ;Strasse
1;Camino;Alejandra;28001;Gran
Vía, 1
2;Feuer;Alexander;04179;Heerstr.
22
3;Trujillo;Ana;05021;Avda.
de la Constitución 2222
4;Domingues;Anabela;05634-030;Av.
Inês de Castro, 414
5;Fonseca;André;04876-786;Av.
Brasil, 442
6;Devon;Ann;WX3
6FW;35 King George
7;Roulet;Annette;31000;1
rue Alsace-Lorraine
8;Moreno;Antonio;05023;Mataderos 2312
9;Cruz;Aria;05442-030;Rua
Orós, 92
10;Braunschweiger;Art;82520;P.O. Box 555
11;Batista;Bernardo;02389-673;Rua
da Panificadora, 12
12;Schmitt;Carine;44000;54,
rue Royale
13;González;Carlos;3508;Carrera
52 con Ave. Bolívar #65-98 Llano Largo
14;Hernández;Carlos;5022;Carrera
22 con Ave. Carlos Soublette #8-35
15;Dewey;Catherine;B-1180;Rue
Joseph-Bens 532
Beispiel: INI-Dateien
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINNT
[operating
systems]
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows
NT Server, Version 4.0"
multi(0)disk(0)rdisk(0)partition(1)\WINNT="Windows
NT Server, Version 4.0 [VGA-Modus]" /basevideo /sos
· Speicherung der Daten so wie beim sequentiellen Zugriff
· Zusätzlich wird eine „schlanke“ Index-Datei angelegt, in der zum Beispiel ein „indiziertes Feld“ (etwa der Nachname) und die Nummer des Bytes, an dem der Datensatz beginnt, gespeichert wird. Eine Suche nach Nachnamen ist somit wesentlich schneller möglich, da nur die Indexdatei durchsucht wird und nicht die gesamte Datenbank.
Das relationale Datenbankmodell wurde 1970 von E. F. Codd entwickelt.
· Die Daten sind generell in Relationen gespeichert.
· Relationen sind Tabellen, wobei
o die Reihenfolge der Spalten ("Felder") egal sein muss
o die Reihenfolge der Zeilen (Datensätze) egal sein muss
o es ein Feld geben muss, über dessen Wert jeder Datensatz eindeutig identifiziert werden kann ("Primärschlüssel")
· Relationen bestehen aus Feldern („Spaltenüberschriften“), deren konkrete Ausprägungen als „Attribute“ (in Excel= Zelle) bezeichnet werden.
· Der Wertebereich eines Attributs kann eingeschränkt sein.
Marktübersicht für relationale Datenbank-Management-Systeme (RDBMS):
a) Dateibasierende Datenbanksysteme ("Klein-Datenbanken"): Bei diesen Datenbanksystemen befinden sich alle Datenbank-Objekte (Tabellen, Abfragen etc.) alle in einer einzigen Datei (zum Beispiel in Access: *.MDB-Datei).
· Microsoft Access, aktuelle Version Access XP (für "experience", intern Version 10)
·
Microsoft
FoxPro
·
MySQL
(Linux Open Source)
b)
Client-/Server-Datenbanksysteme: Hier
sind die Datenbankobjekte auf mehr als eine Datei verteilt. Typischerweise gibt
es keine Berichts- und Formularobjekte. Der Server stellt benötigte Daten meist
als "Datensatzgruppen" (Recordsets) den Clients zur Verfügung, die
Darstellung wird meist am Client von Frontend-Software übernommen.
· Microsoft SQL Server
· Oracle
· postgreSQL (Linux Open Source)
· Sybase Adaptive Server
·
Informix-Systeme
Grafische Unterstützung beim DB-Design bietet das Entity-Relationship-Modell
(Peter Chen, 1976).
In diesem Modell sind folgende Begriffe
wesentlich:
·
Entity: Ein real existierendes
Objekt, das in einer DB abgebildet werden soll. Wird durch ein Rechteck
gekennzeichnet.
·
Relationship: gibt an,
wie zwei Entitäten miteinander verknüpft sind. Relationships werden durch eine
Raute symbolisiert.
· Attribut: "Feld", wird durch ein Oval dargestellt
· Primärschlüsselattribut: Der Attributname wird zusätzlich unterstrichen.
Beispiel:
Kardinalität von Beziehungen: Sie gibt an, wie viele Elemente der einen Entität mit wie vielen Elementen der anderen Entität in Beziehung stehen.
a) 1:1-Beziehung:
Jedem Element der linken Entität kann nur genau ein Element der rechten Entität zugeordnet werden und umgekehrt.
Beispiel:
b) 1:n-Beziehung:
Jedem Element der linken Entität können beliebig viele Elemente der rechten Entität zugeordnet werden. Jedem Element der rechten Entität kann nur genau ein Element der linken Entität zugeordnet werden.
Beispiel:
c) m:n Beziehung:
Beliebig vielen Elementen der linken Entität können beliebig viele Elemente der rechten Entität zugeordnet werden. Dieser Verknüpfungstyp kommt in der Realität am häufigsten vor.
Beispiel:
Hinweis: m:n Beziehungen können nicht direkt in ein relationales Modell übertragen werden.
Beispiel: ER-Diagramm für ein Schulungsinstitut
Hier sind nur einige Grundregeln zu beachten:
1. Aus jeder Entität wird eine Relation. Relationen dieser Art werden oft als "Stammdaten-Tabelle" bezeichnet.
2. Bei 1:1-Beziehungen ist zu überprüfen, ob die beiden Entitäten nicht in einer Tabelle zusammengefasst werden können.
3. 1:N-Beziehungen können direkt in ein relationales Modell umgesetzt werden; in die N-Tabelle muss ein Fremdschlüsselfeld eingefügt werden.
4. M:N-Beziehungen sind nicht direkt in ein relationales Modell umsetzbar; hier ist eine Zwischentabelle notwendig.
Die Umsetzung wird zu einem späteren Zeitpunkt an Hand des praktischen Beispiels näher erläutert.
Ziele bei der Realisierung von Datenbanken ist die Vermeidung von:
· Redundanz: Die Daten in einer Datenbank sind dann redundant, wenn Teile der Daten mehrfach vorkommen!
· Inkonsistenz: mehrere Schreibweisen für ein und dasselbe Objekt: zum Beispiel St. Pölten, Sankt Pölten, St. Poelten, St Pölten, ...
Zur Vermeidung von Redundanzen und
Inkonsistenzen gibt es die sogenannten Normalformen.
Wenn die Tabellen einer DB den Normalformen genügen, ist ein wichtiger Beitrag
zur Redundanzvermeidung geleistet (noch keine Garantie, dass überhaupt keine
Redundanz!)
·
1. Normalform: Keine Listen als
Wertebereiche
·
2. Normalform: Attribute dürfen
nicht von einem Teil eines Schlüssels abhängen
·
3. Normalform: Attribute dürfen
nicht voneinander ableitbar sein.
Probleme
bei Datenbanken in 1. Normalform:
Als Attributwerte sind nur atomare Werte (integer, string) erlaubt, keine Listen oder Mengen.
tblBuch
Buchnr Buchtitel Autor
184 Sozialstaat Österreich Ernst, Federspiel, Langbein
Lösung:
Buchnr Buchtitel Autor
184 Sozialstaat Österreich Ernst
184 Sozialstaat Österreich Federspiel
184 Sozialstaat Österreich Langbein
tblKunden
Name Adresse
Harrer, Heinrich Bahnhofplatz 3, 3100, St. Pölten
Lösung: Zerlegung in mehrere Felder
Nachname Vorname Straße PLZ Ort
Harrer Heinrich Bahnhofplatz
3 3100 St.
Pölten
Andere Formulierung:
Eine Tabelle befindet sich in der 2. Normalform, wenn
a) sie sich in der 1. Normalform befindet und wenn
b) alle Nichtschlüsselattribute von allen Attributen des Primärschlüssels
abhängen.
Beispiel: tblEntlehnung
Kundennr Nachname Vorname ...... Buchnr Entlehndatum
23 Müller Aloisia 770182 02.05.2001
23 Müller Aloisia 912341 02.05.2001
109 Giger Brunhilde 891021 30.04.2001
176 Huber Herbert NULL NULL
entspricht nicht der 2. Normalform:
Buchnr hängt nicht vom Primärschlüssel Kundennr ab
Entlehndatum hängt nicht vom Primärschlüssel Kundennr ab
Anomalien:
1. Löschanomalie:
Bei Rückgabe aller Bücher werden auch die Informationen über
den/die Entleiher/in gelöscht.
2. Einfügeanomalie:
Will man Informationen über einen Kunden einfügen, der noch kein Buch ausgeliehen hat, dann müssen alle Felder, die sich auf das Ausleihen von Büchern beziehen, mit NULL-Einträgen bzw. (noch schlimmer) mit Dummy-Einträgen gefüllt werden (zB Buchnr = 999999 bedeutet "noch kein Buch ausgeborgt"). Setzt man Primärschlüssel auf Buchnr, so können Kunden, die noch kein Buch entlehnt haben, gar nicht angelegt werden. Ist allerdings Kundennr Primärschlüssel, so kann jeder Kunde nur ein Buch ausborgen.
3. Änderungsanomalie:
Bei Änderung von Personendaten (neuer Name, neue Adresse, neue Telefonnummer) müssen diese Änderungen in mehreren Datensätzen durchgeführt werden. Wird ein betroffener Datensatz nicht geändert, so enthält die
Datenbank widersprüchliche Informationen.
Lösung:
Tabelle muss in mehrere Tabellen aufgespalten werden.
Wenn man eine neue leere Datenbank erstellen möchte, erscheint vorher ein Fenster, um diese zu speichern. In diesem Beispiel wird die Datenbank „Auftragsverwaltung“ genannt.
Nach der Bestätigung durch das Klicken auf „Erstellen“ erscheint das Datenbankfenster.
Dieses Datenbankfenster fungiert als Drehscheibe für alle Datenbankobjekte, die gemeinsam die Datenbank bilden.
Datenbank-Entwickler ENTWURFSANSICHT |
DB-Objekte |
DB-Anwender TABELLENANSICHT |
Eigentlich sind hier zwei Programme in einem Paket vereinigt. Es besteht eine Schizophrenie. Man ist Datenbankentwickler und -anwender gleichzeitig. Dies ist natürlich gewöhnungsbedürftig.
Access-Dateiformate
und Konvertierung:
Durch die laufende Verbesserung von Anwendersoftware kommt es in unregelmäßigen Abständen auch zu Änderungen im internen Dateiaufbau. Es wird berücksichtigt, dass mit neueren Programmen auch Datenbanken geöffnet werden können, die mit älteren Access-Versionen erstellt wurden (Abwärtskompatibilität). In umgekehrter Reihenfolge ist dies jedoch nicht möglich.
Access XP bietet im Menü [Extras] – [Datenbank-Dienstprogramme] Konvertierungstools an, mit denen Sie eine Datenbank ins Access 97- oder Access 2000-Dateiformat konvertieren können.
Da die Daten in Tabellen gespeichert werden, wird als erster Schritt eine neue Tabelle erstellt.
Wenn das Objekt „Tabellen“ links markiert ist, klickt man auf oder und wählt die Entwurfsansicht oder .
Wir tragen nun die Feldnamen und Felddatentypen nach folgendem Muster ein bzw. vergeben den Namen tKunden für die Tabelle.
Bei der Erstellung der Tabelle sind verschiedene Punkte zu beachten.
Feldnamen und andere Objektnamen dürfen maximal 64 Zeichen enthalten.
Verboten sind: Rufzeichen, eckige Klammern, Punkte und Akzentzeichen
Dringend abzuraten ist von der Verwendung von Leerzeichen, Umlauten und Sonderzeichen.
Erfüllen Feldnamen diese Regel, so werden sie „reguläre Bezeichner" genannt.
Dringend abzuraten ist von der Verwendung von Bezeichnungen, die bereits Access-intern verwendet werden, zum Beispiel „Name“.
Wenn Sie einen Feldnamen wählen, der mit „-nummer“ endet, so schlägt Access automatisch eine Indizierung „Ja (Duplikate möglich)“ vor.
Tipp für das
Speichern von Tabellen: Beginnen Sie den Namen der Tabelle mit einem kleingeschriebenen t
oder tbl (also beispielsweise tKunden, tblKunden, tbl_Kunden); bei Abfragen
verwenden Sie q (für "query"). Damit können Sie beim Erstellen von
Formularen und Berichten Tabellen sofort von Abfragen unterscheiden.
·
Text:
maximal 255 Zeichen, alle Datenbankoperationen sind damit möglich (Suchen,
Sortieren, ...)
·
Memo:
max. 65536 Zeichen, kein Suchen oder Sortieren möglich (z.B. Anmerkungen,
Kommentare)
·
Hyperlink (Verweis auf
eine Web-Adresse)
·
Ganzzahlig: mit ganzzahligen Werten kann exakt (ohne Ungenauigkeiten) gerechnet
werden. Beim Datentyp "Zahl" stehen folgende Möglichkeiten zur
Verfügung:
o Byte (1 Byte): 0 bis 255
o Integer (2 Byte): -32768 bis +32767
o Long Integer (4 Byte): ca. –2 Mrd. bis ca. +2 Mrd.
· Gleitkommazahlen: Damit kann nicht exakt gerechnet werden. Es treten bei jedem Rechenvorgang Ungenauigkeiten und Rundungsfehler auf (z.B. 2.0 + 3.0 = 4.999999542)
o Single (4 Byte)
o Double (8 Byte)
Unterschied: Genauigkeit, Wertebereich
·
Spezielle
Ganzzahlen:
o Datum/Uhrzeit (intern: Datum = Anzahl der Tage seit 01.01.1900; Zeit = Anzahl der Sekunden seit Mitternacht)
o Währung (engl. Currency): skalierte Ganzzahl; intern wird die Zahl mit 10000 multipliziert, für die Darstellung wieder dividiert und auf zwei Stellen gerundet.
o AutoWert (engl. AutoNumber) = Long Integer-Wert, der automatisch vergeben wird; es wird bei 1 zu zählen begonnen (nicht änderbar) und aufwärts gezählt; vergebene und dann gelöschte Nummern können nachträglich nicht mehr vergeben werden.
o Ja/Nein (engl. Yes/No): kann nur zwei Werte haben, nämlich –1 für Ja und 0 für Nein
· OLE-Objekt: Object Linking and Embedding (z.B. Grafiken, Sound, Video,…). Diese sind nicht zu empfehlen, da sonst die Datenbank sehr groß werden kann.
Jedes einzelne Feld, das angelegt wird, kann man mit bestimmten Feldeigenschaften versehen werden.
Feldeigenschaften für KundenNr |
|
Feldeigenschaften für GebDatum |
|
Dies ist das Ausgabeformat: Wie sollen die eingegebenen Daten angezeigt werden? Es sind Standard- und benutzerdefinierte Formate möglich.
Beispiele
für Standardformate:
Datum kurz 19.06.1994
Euro € 1.798,78
Beispiele
für benutzerdefinierte Formate:
0000 Zahlen werden vierstellig dargestellt
#.##0,00 Zahlen werden mit 2 Kommastellen und Tausenderpunkt dargestellt
zwischen 5 und 10
> ... bei Texten wird der Text dann in Großbuchstaben ausgegeben
Sowohl vorgegebene als auch Excel-Formate sind erlaubt.
Bei Datumsangaben ist es sinnvoll. Access stellt eine „Maske“ dar, die als Eingabehilfe zu verstehen ist.
Ist nicht erwünscht, dass der Feldname in Formularen und Berichten automatisch als Beschriftung übernommen wird, kann hier eine eigene Beschriftung vergeben werden.
In Formularen wird diese statt des Feldnamens sichtbar. Sie ist empfehlenswert, wenn Feldname zu wenig aussagt, oder wenn wegen der Feldnamenregeln bewusst Schreibfehler vorkommen (z.B.: Geburtsdatum Straße, KdNr., …)
Das ist der Wert, der in der Tabelle beim Anlegen eines neuen Datensatzes automatisch vorgeschlagen wird.
Zum Beispiel bedeutet <Datum(), dass das eingegebene Datum in der Vergangenheit liegen soll
Sie wird angezeigt, wenn die Gültigkeitsregel verletzt wird.
Hier ist zu beachten, dass ein Datensatz nicht gespeichert werden kann, so lange dieses Feld nicht mit einem konkreten Eingabewert belegt wurde. Daher nur wirklich bei jenen Feldern einsetzen, ohne die der Datensatz nicht identifizierbar wäre – in unserer Tabelle wäre das der Nachname.
Damit wird der Suchvorgang beschleunigt (gezielt einsetzen: Nachname); Änderungs- und Löschvorgänge jedoch finden langsamer statt.
Bei JA ist eine leere Zeichenfolge "" erlaubt, auch wenn eine Eingabe erforderlich ist.
Ursprünglich wurden Informationen mit einem 7 bit-ASCII-Code (ASCII = American Standard Code for Information Interchange) gespeichert, einem Code, der heute noch zur Übertragung von E-Mails verwendet wird. Mit diesem Code konnten 27=128 Zeichen gespeichert werden; die Codierung war und ist international einheitlich. Um die nationalen Sonderzeichen unterzubringen, wurde der 8 bit-ASCII-Code eingeführt, der 256 Zeichen unterscheiden konnte. Die Zeichen mit den Codenummer 128 bis 255 waren aber länderspezifisch; sogenannte Code-Tabellen für jeden Sprachraum machten die Systeme inkompatibel. Ein Lösungsansatz wurde erst in den 90er-Jahren mit der Einführung des 16 bit-UNICODE-Systems gefunden. Hier sind insgesamt 65536 Zeichen codierbar, die Codierung ist wieder international einheitlich. Wird die Unicode-Kompression aktiviert, so wird nur ein 8 bit-Code gespeichert (speicherplatzsparend, aber nicht international kompatibel).
Wir ergänzen nun das Feld „Familienstand“. Um sicherzustellen, dass man eindeutig: ledig, verheiratet, geschieden, verwitwet einträgt, erzeugt man ein Nachschlagefeld.
Bei den Feldeigenschaften wechseln wir auf die Registerkarte Nachschlagen.
Alles, was man in Windows sehen kann, besteht in Wirklichkeit aus vielen Steuerelementen (Controls); z.B. Kombinationsfeld (Kombination aus Textfeld und Listenfeld), Textfeld oder Listenfeld . Das Listenfeld sieht aus wie ein Kombinationsfeld ohne der obersten Zeile; es wird nicht mehr verwendet.
Er ist in diesem Fall keine Tabelle oder Abfrage, sondern eine Werteliste.
Wir füllen die Zeile mit den Werten aus, die durch Semikolon und ohne Leerschritt getrennt werden.
Wir verwenden JA, sonst wären auch andere Werte erlaubt.
In einem Formular wird immer das Steuerelement verwendet, welches in der Rubrik „Nachschlagen“ definiert wurde: im Normalfall also ein Textfeld.
Ergebnis in der Datenblattansicht:
Fehlermeldung, wenn ein Text eingegeben wurde, der nicht in der definierten Wertliste aufscheint:
Das ist das Feld, über
das jeder Datensatz eindeutig identifizierbar ist.
Als Primärschlüssel muss ein Feld verwendet werden, dessen Werte eindeutig sind. Das bedeutet, es muss aus der Kenntnis des Primärschlüsselwertes möglich sein, auf genau einen Datensatz rückzuschließen.
Beispiele für Primärschlüsselfelder:
Es gibt auch mehrteilige Primärschlüssel. Dieser wird beispielsweise aus der Kombination von Geburtsdatum und Sozialversicherungsnummer gebildet wird. Dazu markiert man beide Zeilen mit gedrückter STRG-Taste. In diesem Fall Achtung: Die beiden Schlüsselsymbole sind irreführend; auch in dieser Tabelle gibt es nur einen Primärschlüssel!
Anmerkung: Jedes indizierte Feld in Access kann als „Sekundärschlüssel“ bezeichnet werden. Der Begriff wird aber im Zusammenhang mit Access-Datenbanken praktisch nicht verwendet, da – außer den bereits erwähnten Zeitvorteilen beim Suchen und Sortieren – ein Sekundärschlüssel keine weiteren Vorteile bringt.
Wechseln Sie auf die Datenblattansicht der eben erzeugten Tabelle und geben Sie einige Datensätze ein. Sie sind nun Datenbank-Anwender.
Der Datensatz wird bei jeder Art von Navigation gespeichert. Das Speichern im Menü oder mit dem Symbol speichert lediglich das Aussehen (Spaltenbreite, Sortierung, …).
Datensatz in Bearbeitung, noch nicht auf
der HD gespeichert.
Bereits gespeicherter Datensatz.
Zeigt den aktuellen Datensatz.
Nächster neuer Datensatz.
Verglichen wird mit ganzem Feld (whole field) oder
mit einem Teil des Feldes (any part of field) oder mit dem Anfang des
Feldinhalts (beginn of field).
Ausschalten
des Filters mit . Es werden
alle Datensätze angezeigt, die identisch mit der markierten Auswahl sind.
Da kein Symbol dafür vorgesehen ist, wird
dieser über das Menü [Datensätze] – [Filter] – [Auswahlausschließender Filter]
aufgerufen. Alle ausgewählten
Attribute werden nicht aufgelistet. Ausgeschaltet wird er mit .
filter by form. Im Formular werden verschiedenste Filtereinstellungen getroffen. Dann wird der Filter mit aktiviert.Ausschalten des Filters wie vorher.
Er wird in der Praxis nicht verwendet. Stattdessen erstellt man eine Abfrge.
Übung: Erstellen Sie bitte eine weitere Tabelle tArtikel (oder tblArtikel) und geben Sie einige Beispiel-Datensätze ein!
Man unterscheidet prinzipiell zwei Typen von Abfragen:
·
Teilbereich
oder auch alle Daten aus einer Tabelle auswählen (entspricht Filter)
·
Daten aus
mehreren Tabellen in einer Ansicht zusammenstellen
·
„Aktionsabfragen“:
Daten automatisch ändern, löschen und hinzufügen (z.B. Preise in einer
Artikeltabelle automatisch um 5 % erhöhen)
Aus welcher Tabelle (bzw. welchen Tabellen)
kommen die Daten?
Welche Felder (welche Spalten)
sollen im Abfrageergebnis angezeigt werden (Projektion)? Felder müssen im
QbE-Bereich (Query by Example) (Abfrage lt. Beispiel) eingegeben werden?.
Welche Datensätze (welche Zeilen) sollen im Abfrageergebnis
angezeigt werden (Selektion)? Einschränken durch Kriterien (Criteria)-Vergabe.
Shift + F2 Feld vergrößern
F12 Abfrage speichern
Wenn man eine neue
Abfrage erstellen möchte, muss man angeben, woher die Daten kommen sollen. Mit kann man einzelne markierte Tabellen auswählen
und mit fortsetzen.
QbE-Bereich (Query
by Example)
Um Felder in den
QbE-Bereich zu stellen, hat man mehrere Möglichkeiten.
Mit Doppelklick auf die
graue Überschrift der Tabelle tKunden können Sie alle Felder markieren.
Wenn Anzeigen a aktiviert ist, wird dieses Feld bei der Abfrage
angezeigt.
Der Stern würde alle
Felder gleichzeitig in eine Spalte eintragen.
Im QbE-Bereich werden nun
Kriterien formuliert, nach denen die Daten gefiltert werden.
Suchmuster für Textfelder
werden in Access immer mit einem doppelten Anführungszeichnen gekennzeichnet.
=“Müller“ |
exakte Übereinstimmung
wird gefordert (es werden alle Datensätze im Abfrageergebnis ausgegeben,
deren Eintrag im Nachnamen exakt dem Wort „Müller“ entspricht); das =-Zeichen
kann weggelassen werden |
Wie „S*“ |
Wie =
Ähnlichkeitsoperator; es sind auch Jokerzeichen im Suchmuster zugelassen. * ... 0 bis beliebig
viele Zeichen (laut Norm: %) |
Wie „M??er“ |
? ... exakt ein
unbekanntes Zeichen (laut Norm: _) |
<“S*“ |
A bis R |
>“S*“ |
S bis Z; eigentlich
>= (>= gibt es bei Texten nicht) |
Zwischen „B*“ Und „S*“ |
B bis R |
Einträge in Datumsfeldern
werden in Access mit # (Nummern-Zeichen) gekennzeichnet.
Zwischen #01.01.1970#
Und #31.03.1970# |
|
<Datum() |
keine #-Zeichen, da
Datum() eine Access-Funktion darstellt |
Werte werden immer ohne
spezielle Kennzeichnung (Anführungszeichen bzw. Nummernzeichen) eingetragen.
Zwischen 100 Und 500 |
<100 und >500 |
>34 |
|
<150 |
|
>=56,3 |
|
Sind eigentlich Zahlen,
Werte daher ebenfalls ohne Anführungszeichen!
Wie Ja Wie Wahr Wie –1 Wie True |
|
Wie Nein Wie Falsch Wie 0 Wie False |
|
Nicht benützte Felder
werden intern durch die symbolische Konstante <NULL> gekennzeichnet.
<NULL>-Einträge können mit keinem anderen Wert verglichen werden, nicht
einmal mit anderen <NULL>-Werten. Daher darf der Wie-Operator in diesem
Fall nicht verwendet werden, es gibt eine eigene Syntax:
Ist Null |
|
Ist Nicht Null |
|
Diese erfolgt mit BOOLEschen Operatoren (AND, OR, NOT)
Dabei stehenKriterien in
derselben Zeile nebeneinander. Ein Datensatz erscheint nur dann im
Abfrageergebnis, wenn beide Kriterien wahr sind.
Übliche Darstellung:
„Wahrheitswerte-Tabelle“
A |
B |
A And B |
wahr |
wahr |
wahr |
wahr |
falsch |
falsch |
falsch |
wahr |
falsch |
falsch |
falsch |
falsch |
Der Datensatz erscheint
dann im Abfrageergebnis, wenn mindestens ein Kriterium oder auch beide wahr
sind. Achtung: Es entspricht nicht dem üblichen Sprachgebrauch.
Dabei steht das erste Kriterium
steht in der Kriterienzeile und das zweite Kriterium steht in der Oder-Zeile.
A |
B |
A Or B |
wahr |
wahr |
wahr |
wahr |
falsch |
wahr |
falsch |
wahr |
wahr |
falsch |
falsch |
falsch |
Hier werden alle Kunden angezeigt, deren Nachname mit K oder mit A beginnt.
Syntax: Feldname:Formel[Feldnamen], z.B.: Geburtsmonat:Monat([Geburtsdatum])
Das Gleichheitszeichen entfällt wegen dedm Doppelpunkt. Die Formel kann auch aus einer Funktion bestehen. Argumente werden Feldnamen, die in eckige Klammern geschrieben werden.
z.B. Name: [Vorname] &“ „& [Nachname]
Hier werden der Vorname und der Nachname in einem Feld vereinigt. Vor und nach & wird ein Leerschritt gesetzt, sonst werden diese nicht erkannt.
z.B. Gehalt in Euro: [Gehalt]/13,7603
Hier wird in einer weiteren Zelle ein Gehalt in Euro ausgegeben.
z.B. Anrede: wenn([weiblich]=-1;“Frau“;“Herrn“)
Das berechnete Feld wird nicht gespeichert. so wird die DB nicht unnötig belastet. Erst bei Abfragen wird dieses Feld erzeugt.
Bei den Kriterien wird die Frage in [ ] geschrieben. Es gelten die gleiche Regeln wie bei Feldnamen (keine.[?“ und nicht identisch mit Feldnamen!).
z.B. Wie [Geburtsmonat eingeben]
... führt eine Abfrage aus
.... wechselt in die Datenblattansicht
Bei Auswahlabfragen bedeuten beide Symbole dasselbe. Bei Aktionsabfragen wird mit dem 2. Symbol eine „Voransicht“ möglich, die zum Beispiel anzeigt, welche Datensätze geändert bzw. gelöscht werden sollen. Das Rufzeichen führt diese Aktionsabfrage dann durch.
Am besten soll man den Abfragenamen
mit „q....“ (für „Query“) oder „a...“ (für „Abfrage“) beginnen lassen.
Es werden aber niemals
die angezeigten Datensätze gespeichert, sondern nur die Abfrageanforderung
in Form eines SQL-Statements (SQL = Structured Query Language). Damit
wird Speicherplatz gespart, und jede Abfrage ist mit dem neuerlichen
Durchführen wieder aktuell, da immer wieder auf die zugrunde liegenden Tabellen
zugegriffen wird.
Der SQL-Befehl kann
jederzeit angesehen (und geändert) werden:
Für fortgeschnittene Anwendungen werden Abfragen oft nicht in der Entwurfsansicht sondern in der SQL-Ansicht erstellt.
Beispiel:
Wichtig: Über die Datenblattansicht jeder Abfrage können Änderungen bzw. Neueinträge
oder Löschungen in der Tabelle durchgeführt werden!
SELECT tKunden.KdNr, tKunden.Nachname, tKunden.Vorname, tKunden.Titel, tKunden.Anrede, tKunden.Strasse, tKunden.PLZ, tKunden.Ort, tKunden.GebDat, tKunden.weiblich
FROM tKunden
WHERE tKunden.Nachname Like "K*" OR
tKunden.Titel Is Not Null;
Formulare dienen zur
Dateneingabe für den Anwender. Die Eingabe erfolgt über eine Eingabemaske, die
man erstellt. Die Daten werden in der Tabelle gespeichert. Üblicherweise werden
nicht Tabellen, sondern Abfragen als Datenquelle verwendet.
Man kann in einem
Formular dieselben Aktionen durchführen wie in der Datenblattansicht einer Tabelle:
Datensätze anzeigen, ändern und löschen
neue Datensätze hinzufügen
Datensätze sortieren, suchen, filtern
Wir erstellen ein
Formular mit dem Assistenten.
Jedes Fenster wird
Schritt für Schritt abgearbeitet. Bei Tabellen/Abfragen wählt man aus, woraus
dieses Formular erstellt werden soll. Mit den Schaltflächen zwischen den
verfügbaren und ausgewählten Feldern kann man jene selektieren, die am Formular
angeführt werden sollen.
In diesem Fall soll ein
Formular zur Eingabe von Kunden erstellt werden. Darum werden alle verfügbaren
Felder ausgewählt. Mit der Schaltfläche „Weiter“ gelangt man dann zum nächsten
Schritt.
Bei den nächsten folgenden Schritten kann man nun das Aussehen festlegen.
Schließlich wird noch ein Name vergeben und der Assistent mit „Fertig stellen“ beendet.
Hier können nun die selben Aktionen wie in der Datenblattansicht einer Tabelle vorgenommen werden. Dies ist aber eine wesentlich komfortablere Möglichkeit, wo eine Datenverwaltung auch für reine Anwender möglich ist.
Die dazugehörige Entwurfsansicht sieht folgendermaßen aus:
Der schraffierte Bereich ist der tatsächlich für Formularinhalte verwendete Bereich.
Man unterscheidet Formularkopf, Detailbereich und Formularfuß.
Für Eingabeformulare kann die Regel gelten, dass alle Textfelder, die Datensätze anzeigen, und die dazugehörigen Bezeichnungsfelder immer im Detailbereich erstellt werden. Im Formularkopf könnte etwa eine Überschrift (mit Hilfe eines Bezeichnungsfeldes) stehen.
Alles, was in Windows sichtbar ist, wird als „Steuerelement“ (engl. „control“) bezeichnet.
Alle Vorlagen für die Erstellung von Steuerelementen befinden sich in der „Toolbox“.
|
Bezeichnungsfeld (Label): enthält fixen Text, der nicht aus der Datenbank kommt Textfeld (Text Box): enthält Datenbankinhalte (etwa Felder) oder Formeln Beispiele: =[Nachname] ="Euratsfeld, am " & Datum() =Glätten([Titel] & " " & [Vorname] & " " & [Nachname]) =Datum() Rahmen (Frame): dient zum Gruppieren mehrerer anderer Steuerelemente (etwa Optionsfelder, Kontrollkästchen usw.) Umschaltfläche: dient als "Ein-/Ausschaltknopf", selten verwendet Optionsfeld (Option Button, Radio Button): Teil einer Optionsgruppe; es kann jeweils nur eine Option einer Optionsgruppe angewählt werden Kontrollkästchen (Check Box): Ist unabhängig anklickbar/nicht anklickbar; "Tri-State" möglich (für ja/nein/noch nicht gewählt) Kombinationsfeld (Combo Box): Auswahl von mehreren "Menüpunkten" möglich Listenfeld (List Box) Befehlsschaltfläche (Command Button): wird etwa zum Ausführen von Aktionen wie "OK" bzw. "Abbrechen" verwendet; wichtig in Menüformularen zur Benutzerführung Bild (Picture): dient zum Einfügen von statischen Grafiken, vergleichbar mit einem Bezeichnungsfeld bei Texten Objektfeld (Object): dient zum Einfügen von statischen Objekten (Grafiken, Sounds, Videos etc.) gebundenes Objektfeld: enthält Objekte aus der Datenbank (vergleichbar mit einem Textfeld bei Texten) Seitenumbruch: wird nur bei Berichten verwendet Register: erzeugt mehrere "Karteikarten", zum Erstellen mehrseitiger Formulare Unterformular-Steuerelement Linie Rechteck Weitere Steuerelemente |
Berichte werden zur Datenausgabe verwendet. Mit dem Berichts-Assistent kann man rasch aussagekräftige Berichte erstellen.
Zuerst wird wiederum die zugrunde liegende Tabelle oder Abfrage ausgewählt.
Bei den Feldern werden alle ausgewählt, die für den Bericht notwendig sind.
Es kann nach verschiedenen Kriterien gruppiert werden.
Auch eine Sortierung ist möglich.
In den nächsten Schritten wird wieder das Aussehen festgelegt.
Schließlich benötigt der Bericht auch einen Namen und ist somit fertig.
In der Seitenansicht wird eine Vorschau auf den fertigen Bericht gegeben, die auch ausgedruckt werden kann.
Entwurfsansicht:
Berichtskopf / Berichtsfuß
Seitenkopf, Seitenfuß
Gruppenkopf, -fuß für jede Gruppierungsebene
Detailbereich
Raster ist die Größe des Druckbereiches und nicht die Größe des Papiers.
A4 hoch
2,5cm
2,5cm
2,5cm
2,5cm
210 mm
In der Entwurfsansicht können noch verschiedenste Änderungen vorgenommen werden: (Die Toolbox wird gleich verwendet wie in Formularen.):
Überschrift als
Bezeichnungsfeld einfügen
Bilder mit Toolbox
einfügen
Durch Markieren des Tools „Bild“ kann man mit dem Mauszeiger bei der gewünschten Stelle einen Rahmen aufziehen. Dann muss man den Pfad des Bildes angeben. Nach Fertigstellung kann man mit dem Kontextmenü Einstellungen ändern. Damit beispielsweise Grafiken nicht „abgeschnitten“ dargestellt werden, wird die Größenanpassung auf „Zoomen“ gestellt.
Der Name eines Steuerelements darf nie einem Feldnamen übereinstimmen! Mit der Funktion „Glätten“ werden gegebenenfalls Leerzeichen am Schluss und Leerzeichen am Anfang entfernt glätten(). Summen werden im Berichtsfuß gebildet.
· Telefonliste
· Adress-Etiketten
· Lieferschein
· Rechnung
· Krankenschein
· Zeugnis
· Laboranalyse Blutuntersuchung
· erweiterte „Serienbriefe“ (Kurseinladung)
· §58a-(„Pickerl“)-Ausdruck
· Stundenpläne
Beispiel: Importieren Sie die Tabelle "Kunden" aus der Nordwind-Beispieldatenbank.
Klicken Sie auf "Neu" und wählen Sie "Tabelle importieren":
Hinweis: Bei Office XP-Standardinstallationen finden Sie die Beispieldatenbank NORDWIND.MDB üblicherweise im Verzeichnis C:\Programme\Microsoft Office\Office10\Samples!
Wählen Sie die Nordwind-Datenbank aus und klicken Sie auf "Importieren". Es werden die Datenbankobjekte angezeigt, die importiert werden können. Wählen Sie bitte nur die Tabelle Kunden aus und klicken Sie auf "OK".
Die Tabelle Kunden erscheint nun im Datenbankfenster.
Auf demselben Weg können Sie eine Verknüpfung zu einer externen Tabelle herstellen. (Versuchen Sie das mit der Tabelle "Lieferanten" aus der Nordwind-Datenbank!)
Gegenüberstellung Import –
Verknüpfung:
Importierte Tabelle |
Verknüpfte Tabelle |
Die Daten und die Tabellenstruktur werden tatsächlich kopiert. |
Nur die Tabellenstruktur wird kopiert, die Daten bleiben in der externen Tabelle. Es wird kaum Platz in der Datenbank benötigt. |
Die Tabellenstruktur kann jederzeit geändert werden. |
Die Tabellenstruktur kann nicht geändert werden. |
Auf die Daten in den Tabellen kann zugegriffen werden. |
Beziehungen
Autowert beim Schlüsselfeld è Long Integer Fremdschlüsselfeld
Relationenschema oder
Struktur der Tabelle
Beziehung mit Drag and
Drop ziehen
Referenzielle Integrität: Prüfmechanismus von Access, ob in Verkaufstabelle nur Kunden enthalten sind, die auch in der Kundentabelle angelegt sind
Tabelle in
Datenbankbüchern = Relation
Beziehung = Relationship
tbl_Verkauf =Detailtabelle,
weil sonst M:N-Beziehung bestande hätte
Aktualisierungsweitergabe an ein Detailfeld: Ist nicht immer erwünscht, muss im Einzelfall
überlegt werden; genauso wenn ich die Löschweitergabe anklicke.
Beispiel: Wenn ein Kunde stirbt und ich den Datensatz in
der tblKunden lösche, so werden auch alle Daten in der Verkaufstabelle
gelöscht, die diesen Kunden betreffen. Eine Auswertung der Umsätze ist dann
nicht mehr möglich.
Bei Beziehungen muss die
Feldlänge und der Feldtyp übereinstimmen, nicht aber die Gültigkeitsregel.
Tipp: Detailtabelle in
die Mitte und die Mastertabellen sternförmig anordnen.
Man sollte nie direkt mit
den Tabellen, sondern immer mit Abfragen arbeiten.
Tipp: Beziehungen nur im Beziehungsfenster erstellen, nicht in der Abfrage! Beziehungen gelten nämlich nicht nur für die Abfrage, sondern für die gesamte Datenbank!
WICHTIG!
Niemals verknüpfte Primärschlüsselfelder in der
Abfrage verwenden!
Verknüpfte Felder
in der Detailtabelle MÜSSEN in der Abfrage enthalten sein!
„qryHauptabfrage“ ... enthält alle Felder aller verknüpften Tabellen mit Ausnahme
Beruhen auf intern erstellten Beziehungen
Werden üblicherweise in der Entwurfsansicht der Detailtabelle definiert.
Kombinationsfeld wählen
|
Herkunftstypen Gebundene Spalte = Spalte mit Primärschlüssel Spaltenbreite: für jede Spalte die eingestellt ist die cm angeben wenn ich sie auf 0 stelle wird sie ausgeblendet |
Statt Wertlisten lieber Tabellen anlegen Wertlisten verändern die Programmierung Datenbank wird durch Wertlisten unflexibler
Nachschlagefelder beziehen sich meist auf andere Tabellen
Listenbreite nicht auf „Automatisch“ setzen, weil dann nur eine Spalte angezeigt wird; besser Summe der einzelnen Spalten in cm einsetzen.
Mit einem Nachschlagefeld ist es möglich, benutzerfreundliche Ansichten durch „Täuschung“ des Anwenders herbeizuführen.
Voraussetzung: Eine Beziehung zwischen der Detailtabelle „Häuser“ und der Mastertabelle „Hausmeister“ besteht, zum Beispiel:
Im Feld „Gebundene Spalte“ wird angegeben, in welcher Spalte der Tabelle „Hausmeister“ (in welcher ja nachgeschlagen werden soll) der Wert steht, der hier (im Feld HausmeisterNr) eingetragen werden soll. Üblicherweise ist das die Spalte 1, da zur Erstellung der Beziehung der Primärschlüssel HausmeisterNr verwendet wurde, der ja üblicherweise in der 1. Spalte stehen sollte.
Das würde folgende Ansicht nach sich ziehen:
In der Datenblattansicht wären die Hausmeisternummern sichtbar. Das ist aber für einen Anwender zu wenig aussagekräftig. Besser wäre es, in dieser Spalte den Nachnamen des Hausmeisters zu sehen, obwohl intern die Hausmeisternummer gespeichert wird.
Dazu bedient man sich des Tricks, dass der Eintrag „Spaltenbreiten“ für „HausmeisterNr“ auf 0 cm gesetzt wird. Dann wird automatisch das nächstfolgende Feld in der Spalte angezeigt:
Perfekt wird die Täuschung dadurch, dass als Beschriftung für das Feld nicht „HausmeisterNr“, sondern „Hausmeister“ gewählt wurde:
Übersicht:
ABFRAGEN |
|
Auswahlabfragen |
Aktionsabfragen |
verändern weder den Datenbestand noch die Struktur der Datenbank |
können den Datenbestand und die Struktur der Datenbank ändern |
Wir wollen nun die Datensätze der importierten Tabelle in unsere "normale" Kundentabelle einfügen. Eine Anfügeabfrage bietet diese Möglichkeit.
Vorgang:
Schritt 1: Fügen Sie zunächst in Ihre tblKunden ein Textfeld "Voller_Name" hinzu.
Schritt 2: Erstellen Sie eine neue Abfrage in der Entwurfsansicht.
Schritt 3: Wählen Sie anschließend im Menü [Abfrage] – [Anfügeabfrage].
Achtung: Geben Sie bei der Tabellenauswahl die Quell-Tabelle (also unsere importierte Tabelle Kunden aus der Nordwind-Datenbank) an.
Schritt 4: Im Dialogfenster "Anfügen an" wählen Sie die Ziel-Tabelle aus (also Ihre ursprüngliche tblKunden):
Schritt 5: Ordnen Sie die einander entsprechenden Felder richtig zu!
Führen Sie die Anfügeabfrage aus und beobachten Sie das Ergebnis!
Achtung: Wenn Sie die Abfrage mehrmals ausführen, so werden auch die Datensätze mehrfach angefügt!
Eine Aktualisierungsabfrage ändert Datenbestände automatisch.
Beispiel 1: Preiserhöhung um 10 %
In der Artikel-Tabelle sollen alle Preise automatisch um 10 % erhöht werden.
Vorgangsweise:
Schritt 1: Erstellen Sie eine neue Abfrage in der Entwurfsansicht.
Schritt 2: Wählen Sie anschließend im Menü [Abfrage] – [Aktualisierungsabfrage].
Schritt 3: Wählen Sie die Artikel-Tabelle, anschließend fügen Sie das Feld AEinzelpreis in den QbE-Bereich ein.
Schritt 4: Unter "Aktualisieren" ist ein Wert oder eine Formel einzutragen, die die neuen Werte repräsentiert. In unserem Fall sollen die alten Einzelpreise um 10 % erhöht werden; die korrekte Formel lautet also
[AEinzelpreis]*1,1
Führen Sie die Abfrage aus!
Beispiel 2: Namen trennen
Unser nächstes Problem: Wir haben eigentlich die Felder "Nachname" und "Vorname" für die Speicherung der Kundennamen vorgesehen; leider ist durch den Import aus der Nordwind-Datenbank nur die Kombination aus Vor- und Nachname in das Feld "Voller_Name" übernommen worden (das kommt davon, wenn man sich nicht an die 1. Normalform hält!):
Wie kann man die Namen trennen und gleichzeitig erreichen, dass die korrekten Vor- und Nachnamen automatisch in die entsprechende Spalte eingetragen werden?
Für die Erstellung der Formeln benötigt man Access-Funktionen. In der deutschen Version von Access ist es möglich, deutsche und englische Befehle wahlweise zu verwenden; in der englischen Version allerdings sind nur die englischsprachigen Anweisungen möglich.
Funktion (Syntax) |
Bedeutung |
Left(String; Anzahl Zeichen) Links(String; Anzahl Zeichen) |
Schneidet aus einem Text, beginnend vom links, die angegebene Anzahl Zeichen heraus |
Right(String; Anzahl Zeichen) Rechts(String; Anzahl Zeichen) |
Schneidet aus einem Text, beginnend vom rechts, die angegebene Anzahl Zeichen heraus |
InStr(String;Teilstring) |
Ermittelt die Position des ersten Auftretens des Teilstrings im Gesamtstring |
Trim(String) Glätten(String) |
Schneidet führende und abschließende Leerzeichen ab |
Mid(String;Beginn;Anzahl) TeilStr(String;Beginn;Anzahl) |
Schneidet einen Teil des Strings heraus, beginnend vom Zeichen "Beginn" werden "Anzahl" Zeichen herausgeschnitten |
DatePart(Datum) DatTeil(Datum) |
|
Mit Löschabfrage können ganze Datensatze gelöscht werden.
Achtung: Der
Löschvorgang kann nicht rückgängig gemacht werden!
Versuchen Sie, eine Löschabfrage zu erstellen, die alle Datensätze aus der Kunden-Tabelle löscht, deren Nachname mit S beginnt!
Der Screenshot soll eine Hilfestellung sein:
Tabellenerstellungsabfragen
werden oft zur Archivierung von Datenbeständen herangezogen. So könnten Sie
beispielsweise versuchen, alle Verkaufsvorgänge vor einem bestimmten Datum zu
archivieren. Die neu entstehende Tabelle befindet sich zwar sinnvollerweise in
einer anderen Datenbank (zB AUFTRAEGE1998.MDB), Sie können aber im Kurs auch
eine Archivtabelle in Ihrer Datenbank erzeugen.
Schritt 1: Erzeugen Sie
eine neue Abfrage und wählen Sie für die Datenherkunft die Hauptabfrage:
Es ist also auch möglich, Abfragen zu definieren, die auf anderen Abfragen
beruhen!
Schritt 2: Wählen Sie
alle Felder der Hauptabfrage aus und fügen Sie sie in den QbE-Bereich ein! Als
Kriterium können Sie eine Datumseinschränkung oder eine Einschränkung über die
Auftragsnummer wählen.
Schritt 3: Wählen Sie anschließend im Menü [Abfrage] – [Tabellenerstellungsabfrage]. Als Namen der neuen Tabelle geben Sie beispielsweise tArchiv an.
Führen Sie die Abfrage
aus! Das Abfrageergebnis wird in einer neuen Tabelle tArchiv gespeichert.
Achtung: Obwohl die Tabellenblattansicht von tArchiv und qHauptabfrage
gleich aussieht, handelt es sich im einen Fall um eine Tabelle (die tatsächlich
Daten enthält), im anderen Fall um eine Abfrage (die keine Daten enthält, sondern
nur Tabelleninhalte darstellt)!
Erstellen Sie mit Hilfe des Formular-Assistenten ein Formular, welches auf der Hauptabfrage beruht!
Die einzelnen Schritte:
Im nächsten Schritt wählen Sie bei der Datengruppierung aus "nach tblKunden". Sie werden dann die Auswahl zwischen verknüpften Formularen oder einem Formular mit Unterformularen haben. Wählen Sie die Unterformulartechnik.
Die Formularansicht dieses gekoppelten Formulars wird dann in etwa folgendermaßen aussehen:
Sehen Sie bitte im Datenbankfenster nach: Es sind zwei Formulare entstanden. Der Zusammenhang zwischen beiden Formularen wird über ein spezielles Steuerelement hergestellt, welches im Hauptformular zu finden ist, das Unterformular-Steuerlement.
Sehen Sie sich nun die Eigenschaften des Unterformular-Steuerelements an:
Die Tatsache, dass die Daten richtig angezeigt werden, beruht auf der Erstellung einer internen Abfrage mit einem SQL-Statement, in diesem Fall:
SELECT
tblVerkauf.VKNr, tblVerkauf.VAnzahl, tblVerkauf.VANr, tblArtikel.ABez,
tblArtikel.AEinzelpreis FROM tblArtikel INNER JOIN tblVerkauf ON
tblArtikel.ANr=tblVerkauf.VANr;
Erstellen Sie eine Parameterabfrage qRechnungsnummer, basierend auf der Hauptabfrage. Als Parameter soll die Rechnungsnummer angegeben werden.
Als Kriterium legen Sie bitte folgendes fest:
Beispiel: Erstellen Sie einen Rechnungsbericht manuell! Dieser Bericht beruht auf der eben erstellten Parameterabfrage qRechnungsnummer.
Vorschlag für Rechnungsgestaltung:
Beachten Sie, dass auch hier wieder
Aggregatfunktionen zur Gruppierung von Ergebnissen verwendet wurden, etwa die
Summen-Funktion im Berichtsfuß!
Kreuztabellenabfragen sind mit PivotTables in Excel vergleichbar. Sie diesen zur Zusammenfassung und Analyse umfangreicher Datenbestände.
Typische Fragestellungen sind:
Erstellen Sie eine Kreuztabellenabfrage aus der qHauptabfrage!
Für die korrekte Erstellung einer Kreuztabellenabfrage sind drei Feldkonfigurationen notwendig:
Beachten Sie folgende Grafik:
Das Ergebnis sollte ähnlich wie in folgender Grafik aussehen (abhängig von Ihren Eingaben):
Steuerelemente: Befehlsschaltfläche
Verbinden von Befehlsschaltflächen bzw. anderen Steuerelementen mit Makros bzw. VBA-Code
Erstellen Sie ein Formular, welches auf keiner Datenquelle aufbaut! Speichern Sie dieses Formular unter dem Namen frmStart ab!
Formularbasierte
Abfragetechnik: Hier hat man die
Möglichkeit, Rückgabewerte eines Formulars (Werte, Namen,... die der Benutzer
eingibt) in einer Abfrage zu bearbeiten.
Beispiel: Der Anwender
möchte alle Kunden, deren Nachname mit a beginnt, aufgelistet haben (er gibt in
die Textbox a* ein). Auf genau diese Eingabe wird in der Query verwiesen: Wie
[Formulare]![FrmAbfrage]![TxtSuchmaske]
Es besteht natürlich auch
die Möglichkeit, den Stern schon in der Query einzufügen.
Realisierung:
Man erstellt zuerst ein
Formular. Im Formular fügt man eine Text-, Combo-,...Box ein. Unter Properties
kann man ihr einen Namen geben. Anschließend setzt man einen Button und
verknüpft mit dem sogenannten „Button Wizard“ die Textbox, Combobox etc. mit
der Query. In der Query kann man dann den Rückgabewert bearbeiten, zum Beispiel:
[Formulare]![FrmAbfrage]![TxtSuchmaske]
Durch diese Angabe bei
den Kriterien verweist man also auf die Eingabe des Anwenders.
Benutzerdefinierte Zugänge
Passwörter
Hier können Sie beispielsweise das Datenbankfenster ausblenden, die Access-Menüleisten nicht anzeigen oder statt "Microsoft Access" einen anderen Anwendungstitel anzeigen lassen.
Hinweis: Beachten
Sie, dass das Datenbankfenster und die Menüleisten nur mehr angezeigt werden,
wenn Sie Access im "administrativen Modus" starten: Öffnen Sie die
MDB-Datei dazu mit gedrückter Umschalt-Taste (sonst haben Sie sich selbst
ausgesperrt)!
MDE-Dateien lassen sich zwar benutzen, eine Änderung der Datenbankstruktur ist jedoch nicht mehr möglich.
Eine Rückkonvertierung ins MDB-Format ist nicht vorgesehen.
Importieren externer Daten in Excel über MS Query
OLAP-Cubes (Begriff)
Parameterabfragen mit MS Query