access - Fachbereich Maschinenbau

Werbung
Prof. Dr.-Ing. Christine Wahmkow
Fachhochschule Stralsund
Fachbereich Maschinenbau
Lehrgebiet Informatik
Eine Einführung in ACCESS
1. Tabellen einrichten und verknüpfen
Zu einer Datenbank gehören Objekte (Tabellen, Formulare, Berichte usw.).
Vom Windows-Dateimanager (WindowsExplorer) wird nur der Name der Datenbank
verwaltet. Alle Objekte (Tabellen, Formulare, Abfragen, Makros usw.) werden intern
von ACCESS verwaltet. Eine Datenbank kann also als Projekt verstanden werden.
Die Datenbank mit der Dateierweiterung .accdb muss gleich zu Beginn der Arbeit
definiert und gespeichert werden.
Man gelangt sofort in die Datenblattansicht einer neuen Tabelle. Um eine neue
Tabelle anzulegen, wechselt man in die Entwurfsansicht.
Sehr
wichtige
Schaltfläche
Hier kann die Tabelle angelegt werden, d.h., die Spalten und deren Datentypen:
Zur Definition des Primärschlüssels markiert man das entsprechende Attribut (Feld)
und klickt auf das Symbol „Primärschlüssel“
Sollen mehrere Elemente den Primärschlüssel bilden, so werden diese
Elemente vor der Definition des Schlüssels im Block markiert.
____________________________________
Arbeitsblätter ACCESS
Seite 1
In der Datenblattansicht können Werte eingegeben werden:
Wechsel zwischen
Datenblatt- und
Entwurfsansicht
Beziehungen zwischen Tabellen werden wie folgt definiert:
Registerkarte: Datenbanktools
Beziehungen
Mastertabelle
Verknüpfen der
Feldelemente
durch Klicken in
der Mastertabelle
und Ziehen in die
Detailtabelle
Detailtabelle
Bearbeiten einer
Beziehung durch
Doppelklick auf die
Verbindungslinie;
es öffnet sich das
abgebildete
Fenster
____________________________________
Arbeitsblätter ACCESS
Seite 2
Was heißt
- referenielle Integrität:
In der Detailtabelle dürfen nur Datensätze stehen, deren verknüpftes Feldelement
auch in der Mastertabelle vorkommt.
Beispiel: Im Lager dürfen nur Artikel liegen, deren Artikelnummern in der Tabelle
T_Artikel auch vorkommen.
- Aktualisierungsweitergabe:
Bekommt in der Mastertabelle das verknüpfende Feldelement einen neuen Wert,
wird auch in der Detailtabelle automatisch mit korrigiert.
Beispiel: Die Artikelnummern werden in der Tabelle T_Artikel geändert; automatisch
ändern sich die Artikelnummern auch in den Detailtabellen
- Löschweitergabe
Wird in der Mastertabelle ein Datensatz mit einem verknüpften Feldelement
gelöscht, wird in der Detailtabelle der Datensatz mit dem entsprechenden
Feldelement auch gelöscht.
Beispiel: In der Tabelle T_Artikel wird der Datensatz mit der Artikelnummer 10
gelöscht; in allen Detailtabellen wird dieser Datensatz ebenfalls gelöscht.
Bei der Definition der Beziehungen sind diese drei Eigenschaften stets kritisch
zu beurteilen!!!
____________________________________
Arbeitsblätter ACCESS
Seite 3
Die Lagerplatzzuordnung im Beispiel
Die Lagerplatzzuordnung ist abhängig von der Größe der Gehäuse !
Artikel
Größe
(Gehäuse)
Notebook
1
Größe je
Lagerfach
Lagerfächer
1
Minitower
2
1, 2
Tower
3
1, 2, 3
15
16
…….
21
8
9
.....
14
1
2
…..
7
Die Größe 1, 2 und 3 beschreiben die Größen der Artikel, nicht der Lagerfächer !!!
In jedes Lagerfach passen 100 Gehäuse der entsprechenden Größe:
 Größe 3 passt in Lagerfach 1 … 7
(jeweils 100)
Größe 2 passt in Lagerfach 8 … 14 (jeweils 100)
Größe 1 passt in Lagerfach 15 … 21 (jeweils 100)
In größere Lagerfächer passt immer die doppelte Anzahl der Gehäuse:

Größe 2 passt in 1 … 7
jeweils 200 Stück
Größe 1 passt in 8 … 14
jeweils 200 Stück
Größe 1 passt in 1 … 7
jeweils 400 Stück
____________________________________
Arbeitsblätter ACCESS
Seite 4
2. Formulare erstellen
Es gibt 2 Arten von Formularen:
- als Benutzeroberfläche zum Navigieren in der Anwendung
- zur Datenein- und -ausgabe
Formulare als Benutzeroberfläche steuern den Fluß einer Anwendung. Der Benutzer hat es
während seiner Tätigkeit zum Erfassen, Ändern, Hinzufügen, Recherchieren in einer
Datenbank ausschließlich mit Formularen zu tun. Wir als Entwickler müssen natürlich diese
bedienfreundlichen Benutzeroberflächen erst einmal zur Verfügung stellen.
Zuerst soll ein Hauptformular für die Anwendung erstellt werden. Das enthält außer paar
hübschen ansprechenden bekannten Windows-Elementen wie Grafiken, Linien, farbigen
Hintergrund usw. vor allem Steuerelemente in Form von Befehlsschaltflächen.
Datenein- und –ausgabe ist nicht möglich, deshalb können die Navigationsleisten und der
Datensatzmarkierer ausgeschaltet werden. (siehe Eigenschaften des Formulars)
Das Klicken auf die Befehlsschaltflächen öffnet jeweils ein Formular zur Datenein- oder –
ausgabe. Diese Formulare müssen natürlich erst vorhanden sein.
Deshalb bietet sich bei der Entwicklung einer Datenbank wieder die Bottom-up-Methode an.
Das heißt von unten nach oben. Die unteren Formulare können erst mal Dummies sein, d.h.
leere Formulare.
Hauptformular
Button1
Formular 1
Button2
Formular 2
Für unsere Lagerverwaltung könnte das Hauptformular beispielhaft so aussehen:
____________________________________
Arbeitsblätter ACCESS
Seite 5
Die wesentliche Eigenschaft ergibt sich für eine Befehlsschaltfläche aus der Vorgabe
„Beim Klicken“. Hier im Beispiel wird das Makro „Schaltfläche Datenbankfenster“
aufgerufen.
Die Eigenschaften der Ereignisse der Befehlsschaltfläche sind in der unteren
Abbildung zu sehen.
Beim Klicken der
Befehlsschaltfläche
wird das Makro
M_Datenbankfenster
aufgerufen.
Und so wird das Makro erzeugt:
Klick…… und dann:
Makro- Generator wählen
Diese 3 Einträge zeigen das
Datenbankfenster an.
Der Nutzer will bei seiner Arbeit so wenig wie möglich mit dem eigentlichen
Datenbanksystem ACCESS zu tun haben. Am besten ist es, wenn beim Start der
Anwendung sofort das Hauptformular geöffnet wird. Das lässt sich in ACCESS sehr
einfach realisieren:
Registerkarte DATEI
Optionen
____________________________________
Arbeitsblätter ACCESS
Seite 6
In folgendem Dialogfenster sind ein paar wenige Eintragungen notwendig:
1. Erstellen Sie selbständig das Hauptformular, so daß die Schaltflächen
„Datenbankfenster“ und „Anwendung verlassen“ tatsächlich funktionieren.
2. Definieren Sie die Startoptionen, wie oben beschrieben.
3. Erstellen Sie selbst ein Formular zum Eingeben von Artikeln (PC-Gehäuse).
Verwenden Sie ein Kombinationsschaltfeld für die Eingabe der Gehäusegrößen.
Legen Sie dafür vorher eine einfache Tabelle mit möglichen Gehäusegrößen an.
4. Definieren Sie für das Formular und dessen Elemente Eigenschaften.
Das Eigenschaftenfenster für das Formular öffnen Sie nach untenstehender
Abbildung.
Klicken Sie mit der rechten Maustaste auf ein Formularelement, um dessen
Eigenschaftenfenster zu öffnen. Definieren Sie das Erzwingen der Eingabe bei
den Feldern der Tabelle.
Eigenschaften von Formularen definieren:
Rechter
Mausklick auf
das kleine
schwarze Quadrat
öffnet das
Eigenschaftenfens
ter
____________________________________
Arbeitsblätter ACCESS
Seite 7
3. Abfragen erstellen und anwenden
Abfragen ermöglichen die verschiedensten Sichten auf eine Datenbank. Das heißt,
daß die Daten einer Datenbank verschieden kombiniert und dem Nutzer zur
Verfügung gestellt werden können.
Mittels Abfrage stellt man also eine Frage an eine oder mehrere Tabellen.
Die Antwort darauf ist ein Dynaset, was dynamische Menge heißt. Dynamisch
deshalb, weil sich die Antworten immer entsprechend dem Inhalt der Tabellen
ändern.
Überlegen Sie, welche Fragen und Antworten aus der Datenbank Lager.mdb
interessant sein könnten.
Zum Beispiel: Welche Lagerplätze befinden sich in der untersten Zeile des
Hochregals ?
Zur Definition einer Abfrage muß natürlich die Datenherkunft bekannt sein, also in
welchen Tabellen befinden sich die Daten. Da ein Dynaset die gleichen
Eigenschaften wie eine Tabelle hat, kann auch eine Abfrage Grundlage einer neuen
Abfrage sein. Aber das wollen wir erst einmal außen vor lassen.
In die Abfrage werden alle interessierenden Datenfelder aufgenommen, die anderen
bleiben unberücksichtigt. Das bringt ja den Vorteil, daß jetzt Daten gruppiert werden
können, die in einem anderen Zusammenhang eigentlich gar nicht zueinander
passen.
Zum Beispiel:
Die Datei Eingang enthält folgende Datensätze:
Datensat Art.nr.
z
1
10
2
20
3
10
Anzahl
100
200
200
Eingangsdatu
m
20.02.
20.02.
22.02.
Lagerfac
h
2
4
4
Bei den folgenden Abfragen sind die aufgeführten Felder interessant und liefern die
entsprechenden Ergebnisse:
Abfrage
Wieviel Teile der Art.nr.10 liegen im
Lager ?
Wieviel Teile wurden am 20.02.
geliefert ?
Wieviel Teile liegen im Lagerfach 4
?
Welche Teile wurden am 20.2.
geliefert ?
aufzunehmende
Feldelemente
Art.nr., Anzahl
Ergebnis
Anzahl,
Eingangsdatum
Anzahl, Lagerfach
300
Art.nr.,
Eingangsdatum
300
400
10,20
Eine Abfrage ist in ACCESS wie folgt zu definieren:
____________________________________
Arbeitsblätter ACCESS
Seite 8
Beruht eine Abfrage auf mehreren Tabellen, muß es ein Feldelement als
verknüpfendes Element geben. Existiert zwischen beiden Tabellen schon eine
Beziehung, die schon in der Datenbankkonzeption festgelegt wurde, braucht man
sich um die Verknüpfung nicht zu kümmern. Im anderen Fall kann man bei der
Definition einer Abfrage die Verknüpfung definieren und deren Eigenschaften
festlegen.
Definieren Sie für das Beispiel einige Abfragen ! (Siehe Tabelle )
Sie können die Ergebnisse über die Datenblattansicht kontrollieren.
Um die Abfrage in die Anwendung zu integrieren, erstellt man ein Formular auf der
Basis der Abfrage. Probieren Sie das aus !
Erstellen Sie folgende Abfragen:
Wie viel Gehäuse sind an den einzelnen Tagen eingegangen?
Ausprobieren der Funktion „ Gruppierung“
Wann wurden welche Artikelnr. geliefert und wie viel?
____________________________________
Arbeitsblätter ACCESS
Seite 9
Wie oft wurde jede Artikelnr. geliefert?
Von welchen Artikelnr. sind mehr als 300 ins Lager eingegangen?
Von welchen Artikelnr. sind mehr als x ins Lager eingegangen?
Welche Artnr. Wurden im LF 8-14 eingelagert?
Wie viel Gehäuse sind insgesamt eingegangen?
Wie viel Gehäuse sind in den letzten x Tagen eingegangen?
Welche Gehäuse wurden in einer Zeitspanne zwischen 10 Tagen eingeliefert?
An wie viel Tagen sind Gehäuselieferungen eingegangen?
Welche roten Gehäuse wurden geliefert?
Wie viel Tower sind eingegangen?
In welchen LF liegen Notebooks?
____________________________________
Arbeitsblätter ACCESS
Seite 10
Beispiel einer Abfrage für den Bestand
Als Ausgang dienen die Abfragen über die Summe der Eingänge und der Ausgänge:
Ergebnis der Bestandsabfrage ohne Verknüpfung beider Abfragen:
Hier mit Equi join (Gleichheitsverknüpfung):
und hier mit Inklusionsverknüpfung (Outer join):
____________________________________
Arbeitsblätter ACCESS
Seite 11
Bestandsabfrage mit wenn- Funktion für Anzeige, auch wenn keine Ausgänge
____________________________________
Arbeitsblätter ACCESS
Seite 12
Benötigte Abfragen für Visual Basic:
1.) A_Größe_Lagerfach:
Herkunft der Elemente der Abfrage:
- Artikelnummer aus T_Artikel
- Größe aus T_Artikel
- Lagerfachnummer aus T_Zuordnung
Name der Abfrage in meinen
Unterlagen:
rst
2.) A_Sum_Eingang_Lagerfach:
Herkunft der Elemente der
Abfrage:
- Artikelnummer aus T_Eingang
- AnzahlE aus T_Eingang → Funktion
Summe
- Größe aus T_Artikel
- Lagerfachnummer aus T_Eingang
Name der Abfrage in meinen
Unterlagen:
rs
3.) A_Bestand_Lagerfach:
Diese Abfrage entspricht der Nr.2,
nur wird hier die Summe der
Ausgänge gebildet.
Herkunft der Elemente der
Abfrage:
- Artikelnummer aus
A_Sum_Eingang_Lagerfach
- LFE aus
A_Sum_Eingang_Lagerfach
- Größe aus
A_Sum_Eingang_Lagerfach
- SummevonAnzahlE aus
A_Sum_Eingang_Lagerfach
- SummevonAnzahlA aus
A_Sum_Ausgang_Lagerfach
- Bestand: berechnete Größe
Name der Abfrage in meinen
Unterlagen:
rsb
____________________________________
Arbeitsblätter ACCESS
Seite 13
4. SQL - Structured Query Language
Jede Abfrage wird von Access immer in die Sprache SQL übersetzt. Im
Abfragefenster kann man in die SQL-Ansicht wechseln, hier ändern, hinzufügen oder
über die Zwischenablage für VBA nutzen.
SQL-Befehle
- Der Select- Befehl:
SELECT Spaltenliste FROM Tabellenliste [WHERE Bedingung] [ORDER BY
Sortierfolge]
Angaben in eckigen Klammern sind optional.
Anwendungen:
SELECT * FROM tabelle
alle Feldelemente der Tabelle werden ausgewählt
SELECT spalte1 FROM abfrage [AS alias] Tabellen oder Abfragen können Aliasnamen haben
SELECT spalte1,spalte2 FROM tabelle WHERE ausdruck ausdruck ist ein logischer Vergleich
SELECT * FROM t_filme WHERE filmtitel=“Titanic“
sucht alle Einträge zu „Jackess“
SELECT anzahl FROM t_Eingang WHERE datum BETWEEN #1/1/yy# AND
#31/1/yy#
SELECT name FROM t_kunde WHERE name LIKE „M*“ alle Namen, die mit M beginnen
SELECT name FROM t_kunde WHERE name LIKE „M??er“ alle Maier, Meier, Mayer und Meyer
SELECT * FROM t_kunde ORDER BY name sortierte Ausgabe
Verknüpfungen mit INNER JOIN, LEFT JOIN und RIGHT JOIN
SELECT spalten FROM tab1 INNER JOIN tab2 ON tab1.spalte1=tab2.spalte2
Ausgewählt werden alle gleichen Elemente, die in Tab1.spalte1 und Tab2.spalte2 vorkommen
SELECT spalten FROM tab1 LEFT JOIN tab2 ON tab1.spalte1=tab2.spalte2
Ausgewählt werden alle Elemente, aus Tab1.spalte1 und die gleichen aus Tab2.spalte2
SELECT spalten FROM tab1 RIGHT JOIN tab2 ON tab1.spalte1=tab2.spalte2
Ausgewählt werden alle Elemente, aus Tab2.spalte2 und die gleichen aus Tab1.spalte1
Beispiel
Tab1.spalte1
1
2
3
Tab2.spalte2
Legende:
3
4
5
INNER JOIN
LEFT JOIN
RIGHT JOIN
Die Zusätze ALL, DISTINCT und DISTINCTROW
SELECT ALL spalten FROM tab WHERE Bedingung alle Ergebnissdatensätze werden ermittelt
SELECT DISTINCT spalte from ……
alle doppelten Datensätze werden unterdrückt
SELECT DISTINCTROW ….. Accessspezifisch in verknüpften Abfragen, nach Möglichkeit vermeiden !!
____________________________________
Arbeitsblätter ACCESS
Seite 14
Neue Tabelle anlegen:
CREATE TABLE tabelle (Feld1 Typ, Feld2 Typ,…)
z. B. CREATE TABLE t_filme (filmnummer INTEGER, film TEXT)
Aktualisieren einer Tabelle oder Abfrage
UPDATE Tab SET spalte1=Ausdruck, spalte2=Ausdruck ,…. WHERE bedingung
z.B. UPDATE T_Name SET entlassen=“Ja“ WHERE abteilung=“EDV“
( lieber nicht ;-)
Anfügen von Datensätzen
INSERT INTO Zieltabelle (spalten) VALUES (werte)
z.B. INSERT INTO t_kunden (Name,Ort,PLZ) VALUES („Meier“,Stralsund,18435)
MySQL-Befehle
Arbeit mit Datenbanken
Datenbank anlegen
Eine Datenbank kann man wie folgt erstellen.
CREATE DATABASE db_name;
Existierende Datenbanken anzeigen
Mit dem folgenden Befehl werden alle existierenden Datenbanken angezeigt.
SHOW DATABASES;
Datenbank löschen
Um eine Datenbank zu löschen, benötigen Sie den Befehl DROP DATABASE.
DROP DATABASE db_name;
Um vor dem Löschen sicher zu stellen dass die Datenbank existiert, sollten Sie folgenden Befehl
verwenden.
DROP DATABASE IF EXISTS db_name;
Arbeiten mit Tabellen
Tabelle anlegen
Eine Tabelle kann man mit dem Befehl CREATE TABLE anlegen. Zusätzlich zu diesem Befehl
müssen der
Tabellenname und die benötigten Spalten mit den jeweiligen Datentypen angegeben werden.
CREATE TABLE tbl_name (
id int NOT NULL,
spalte1 varchar(50));
Existierende Tabellen anzeigen
Mit dem folgenden Befehl werden alle existierenden Tabellen angezeigt.
SHOW TABLES FROM db_name;
Tabelle löschen
Um eine Tabelle zu löschen, benötigen Sie den Befehl DROP TABLE.
DROP TABLE tbl_name;
Wie bei dem Befehl DROP DATABASE gibt es auch hier die Option IF EXISTS.
DROP TABLE IF EXISTS tbl_name;
____________________________________
Arbeitsblätter ACCESS
Seite 15
Spalte hinzufügen
Wenn nachträglich noch eine Spalte in eine Tabelle eingefügt werden soll, benötigen Sie den Befehl
ALTER TABLE mit der Option ADD COLUMN.
ALTER TABLE tbl_name ADD COLUMN (spalte2 char(50));
Datentyp einer Spalte ändern
Um nachträglich den Datentyp einer Spalte zu ändern, verwendet man ebenfalls den Befehl ALTER
TABLE,
allerdings jetzt mit der Option MODIFY.
ALTER TABLE tbl_name MODIFY (spalte2 varchar(50));
Spalte löschen
Eine Spalte können Sie mit dem Befehl ALTER TABLE und der Option DROP COLUMN löschen.
ALTER TABLE tbl_name DROP COLUMN spalte2;
Umgang mit Datensätzen
Daten einfügen
Mit dem Befehl INSERT werden Daten in eine vorhandene Tabelle gespeichert.
INSERT INTO tbl_name (spalte1, spalte2) VALUES (wert1, wert2);
Wollen Sie in eine Spalte keinen Wert eintragen, so lassen Sie diese Spalte einfach aus der
Anweisung
heraus.
Daten modifizieren
Um einen Datensatz zu ändern, verwendet man den Befehl UPDATE.
UPDATE tbl_name SET spalte1 = neuer_wert1 WHERE id = 1;
Mit diesem Befehl wird der vorhandene Wert vom ersten Eintrag (id = 1) mit dem neuen Wert
(neuer_wert1) überschrieben.
Daten löschen
Ein Datensatz wird mit dem Befehl DELETE gelöscht.
DELETE FROM tbl_name WHERE id = 1;
Wollen Sie die komplette Tabelle leeren, müssen Sie nur die Bedingung entfernen.
DELETE FROM tbl_name;
Abfragen erstellen
Einfache Abfrage
Die folgende Befehlszeile gibt den gesamten Inhalt einer Tabelle aus.
SELECT * FROM tbl_name;
Sollen nur einzelne Spalten von der ganzen Tabelle angezeigt werden, müssen Sie den Operator *
durch
die Spaltennamen ersetzen
SELECT spalte1, spalte2 FROM tbl_name;
Einfache Abfrage mit DISTINCT
Mit der Option DISTINCT können Duplikate ausgefiltert werden.
SELECT DISTINCT spalte1 FROM tbl_name;
Abfrage mit Bedingung
Der folgende Befehl gibt die komplette Zeile aus, bei der in der Spalte id eine 1 steht.
SELECT * FROM tbl_name WHERE id = 1;
Wenn Sie nach einem Wort suchen, müssen Sie dieses in zwei Hochkommas setzen.
SELECT * FROM tbl_name WHERE spalte1 = 'wort';
____________________________________
Arbeitsblätter ACCESS
Seite 16
Um die Datensätze zwischen 10 und 20 auszugeben können Sie BETWEEN verwenden.
SELECT * FROM tbl_name WHERE id BETWEEN 10 AND 20;
Abfrage mit Platzhalter
Wenn Sie nicht genau wissen, an welcher Stelle das Wort steht welches Sie suchen, können Sie den
Platzhalter % verwenden. Der Platzhalter % steht für beliebig viele Zeichen.
Weiterhin müssen Sie das = durch LIKE ersetzen.
SELECT * FROM tbl_name WHERE spalte1 LIKE '%wort%';
Ein weiterer Platzhalter ist der Unterstrich. Dieser steht für genau ein Zeichen.
SELECT * FROM tbl_name WHERE spalte1 LIKE 'w__t';
Verknüpfung von Bedingungen
Werden zwei Bedingungen mit einem AND verknüpft, müssen beide Bedingungen erfüllt werden.
SELECT * FROM tbl_name WHERE id > 10 AND id < 20;
Werden zwei Bedingungen mit einem OR verknüpft, muss mindestens eine Bedingung erfüllt sein.
SELECT * FROM tbl_name WHERE id = 10 OR id = 20;
Mit der Bedingung NOT kann man das Ergebnis einer Bedingung negieren.
SELECT * FROM tbl_name WHERE id < 10 AND NOT id = 5;
Werden mehrere Bedingungen miteinander verknüpft, müssen gegebenenfalls Teile der Abfrage in
Klammern gesetzt werden.
SELECT * FROM tbl_name WHERE id < 10 OR (spalte1 = 'wort' AND id = 5);
Aggregatfunktionen nutzen
Anzahl der Datensätze ermitteln
Um die Anzahl der Datensätze zu ermitteln auf die eine Abfrage zutrifft, gibt es die Funktion COUNT.
SELECT COUNT(*) FROM tbl_name WHERE spalte1 = 'wort';
Summierung
Mit dem Befehl SUM kann man die Summe der Werte einer Spalte (hier preis) ermitteln.
SELECT SUM(preis) FROM tbl_name;
Durchschnitt
Möchte man den Durchschnitt aller Werte einer Spalte erhalten, benutzt man die Funktion AVG.
SELECT AVG(preis) FROM tbl_name;
Maximalwert
Die Funktion MAX ermittelt den maximalen Spaltenwert.
SELECT MAX(preis) FROM tbl_name;
Minimalwert
Das Gegenteil zu der Funktion MAX ist die Funktion MIN.
SELECT MIN(preis) FROM tbl_name;
Gruppierung
Mit der Funktion GROUP BY können gleiche Ergebnisse gruppiert werden. Mit Hilfe der folgenden
Befehlskombination kann man somit die Anzahl der doppelten Einträge in der Spalte „spalte1“
ermitteln.
SELECT spalte1, COUNT(*) FROM tbl_name GROUP BY spalte1;
HAVING
Die Funktion HAVING ermöglicht das überprüfen von Bedingungen bei aggregierten Werten. Im
folgenden
Beispiel werden doppelte Einträge in der Spalte „spalte1“ gezählt und nur die angezeigt, die mehr als
fünf
mal gefunden wurden.
SELECT spalte1, COUNT(*) FROM tbl_name GROUP BY spalte1 HAVING COUNT(*) > 5
____________________________________
Arbeitsblätter ACCESS
Seite 17
ORDER BY spalte1;
Sortierung
Die Ergebnisse einer Abfrage können mit der Funktion ORDER BY sortiert werden.
SELECT * FROM tbl_name ORDER BY spalte1, spalte2;
Um die Sortierreihenfolge fest zu legen gibt es die Schlüsselworte ASC (ascending = aufsteigend) und
DESC (descending = absteigend).
SELECT * FROM tbl_name ORDER BY spalte1 ASC;
SELECT * FROM tbl_name ORDER BY spalte1 DESC;
Wenn kein Schlüsselwort verwendet wird, wird das Ergebnis aufsteigend sortiert.
Weiterführendes
MySQL Homepage:
http://www.mysql.de
MySQL Dokumentation:
http://dev.mysql.com/doc/
phpMyAdmin - PHP-Administration-Oberfläche für MySQL
http://www.phpmyadmin.net
____________________________________
Arbeitsblätter ACCESS
Seite 18
5. VBA- Visual Basic for Applications
einige wichtige Syntaxbeschreibungen
VBA basiert auf der englischen Sprache.
Deshalb wird in reellen Zahlen der Dezimalpunkt verwendet.
Im Unterschied dazu wird in Makros deutsch „gesprochen“ und bei reellen Zahlen ein Komma als Dezimalstelle verwendet.
5.1 Variablenvereinbarungen
- wird durch Option Explicit erzwungen; Menü Extras/Optionen, Registerkarte Editor; Option
Variablendeklaration erforderlilch
- DIM variablenname AS variablentyp
z.B. DIM a as integer, b as Variant, x,y as double
’nur y wird als double deklariert, x als Variant
man unterscheidet lokale und globale Variablen
lokal: alle Variablen, die innerhalb einer Prozedur oder Funktion definiert sind,d.h.
Variablen können in jeder Proz. oder Function beliebig neu definiert werden.
global: 2 Arten:
1) Gelten innerhalb eines Moduls; hier erfolgt die Deklaration ganz oben im Modul
außerhalb der Prozeduren
2) gelten für alle Module; hier erfolgt die Deklaration ganz oben in einem beliebigen
Modul mit dem Schlüsselwort PUBLIC
z.B. public a as Variant
public const pi=3.14 ’Beachte den Punkt als Dezimalzeichen.
5.2 Deklaration der Datenbanken und Recordsets
Deren Deklaration ist abhängig von den verwendeten Objektbibliotheken
DAO oder ADO
DAO
Dim db as DataBase
Dim rs as Recordset
ADO
Dim db as ADODB.Connection
Dim rs as New ADODB.Recordset
Set db=Currentdb
Set rs=db.OpenRecordset(„Tabelle, Abfrage oder
Set db=CurrentProject.Connection
rs.Open((„Tabelle, Abfrage oder SQL“),db
SQL“)
5.3 wichtige Grundstrukturen
- Alternativen (Bedingungen)
1.Form: in einer Zeile
If Bedingung Then Anweisung [Else Anweisung)
2. Form: IF-THEN-Block
if Bedingung then
Anweisungsblock
____________________________________
Arbeitsblätter ACCESS
Seite 19
End If
Oder
if Bedingung then
Anweisungsblock
Else
Anweisungsblock
End if
- Schleifen
For…Next-Schleife:
For Zähler=Start to Ende
Anweisungen
Next Zähler
For i=1 to 10
s=s+1
next i
While-Schleife:
While Bedingung
Anweisungen
Wend
’Führe aus, solange die Bedingung wahr ist
X=1
while x<11
debug.print x
x=x+1
Wend
Do While- Schleife
Do While Bedingung
Anweisungen
Loop
Do Until-Schleife
Do Until Bedingung
Anweisungen
Loop
’Führe aus, bis Bedingung wahr
X=1
Do until x<11
Debug.print x
x=x+1
loop
EXIT – zum vorzeitigen Verlassen der Schleifen oder Prozeduren
Exit For
Exit Do
Zum Verlassen von Schleifen
Exit Function
Exit Sub
Zum Verlassen von Prozeduren und Funktionen
____________________________________
Arbeitsblätter ACCESS
Seite 20
Diese
Schleife
wird nicht
ausgeführt.
5.4 Objekte und Bezüge auf Objekte
Die Access-Objectbibliothek
Application
Forms
Reports
Controls
Screen
DoCmd
Controls
Screen – aktives Objekt
DoCmd – ermöglicht die Ausführung von Makroaktionen in VBA-Programmen (englisch)
Forms, Records- Auflistungen, Behälter, wo sich alle Formulare bzw. Berichte
befinden
Zugriff:
’ Trennzeichen ist !
Forms![Kunden]
Benennung des Behälters Unterobjekt
.
!
Trennzeichen „ “ Oder „ “
.
- eigene benutzerdefinierte Elemente werden durch vorstehendes „!“ benannt.
- Vordefinierte Eigenschaften oder Methoden werden durch Punkt „ “ eingeleitet.
Methoden und Eigenschaften von Objekten sind vordefiniert. Des halb erfolgt hier die
Punktnotation.
Objekt.Methode
Objekt.Eigenschaft
z.B.
Forms!Kunden.SetFocus
Forms!Kunden!Name.Visible
Forms!Kunden!Name.Visible=0
Daten suchen
Gesucht werden immer nur ganze Datensätze, d.h. der Datensatzzeiger kann
innerhalb der Datei gesetzt werden. Ein Datensatz wird gelesen, dann ausgewertet.
Zur Datensatznavigation stehen viele Methoden zur Verfügung:
____________________________________
Arbeitsblätter ACCESS
Seite 21
rs - Recordset
Find-Methoden:
rs.Findfirst
rs.findlast
rs.findnext
rs.findprevious
Kriterien
z.B.
rs.Findfirst („[Name]=’Meier’ “)
Diese Methoden sind meist in eine Schleife eingebunden, wenn eine Datei von
Anfang bis Ende auf ein bestimmtes Kriterium durchsucht werden soll.
Dateien mit Schleife durchsuchen:
Rs.Nomatch
’ ist ein DS mit Find-Kriterium gefunden, ist NoMatch=true
Anwendung in Schleife:
rsFindFirst kriterium
Do until rs.NoMatch
…….
Rs.FindNext Kriterium
Loop
Move-Methoden:
rs.MoveFirst
rs.MoveNext
rs.MoveLast
Wird verwendet, um eine Datei satzweise von Anfang bis Ende zu durchsuchen
Rs.Movefirst
Do until rs.EOF
……
rs.MoveNext
loop
’EOF… End of File
einige andere wichtige Methoden:
rs.recordcount
’gibt die Anzahl der Datensätze zurück
rs.close
’schließt die Datei
rs.filter=“[Name]=’Meier’“
’setzt Filter
auf Datensatzelemente zugreifen:
rs![Element]
Name=rs![Name]
debug.print rs![Artikelnummer]
if rs![Name]=Name then….
If rs![Name]=Forms![Kunden]![Name] then….
____________________________________
Arbeitsblätter ACCESS
Seite 22
Der Algorithmus zur Berechnung der Normalkapazität:
If G = 1 Then
If LF >= 15 Then
N_Kap = 100
Else
If LF >= 8 Then N_Kap = 200 Else N_Kap = 400
End If
End If
If G = 2 Then
If LF >= 8 Then N_Kap = 100 Else N_Kap = 200
End If
If G = 3 Then N_Kap = 100
____________________________________
Arbeitsblätter ACCESS
Seite 23
Herunterladen