Ausgewählte Themen

Wirtschafts-Praktikum

SS 1995

 


Zurück zur Studium-Seite


Inhalt

Inhalt

Microsoft Access 2.0

1 Objekte, Eigenschaften und Methoden

1.1 Objekte, Eigenschaften und Methoden in C++

1.2 Objekte innerhalb eines Formulars in ACCESS

1.2.1 Die Objekte

1.2.2 Die Eigenschaften

1.2.3 Die Methoden (Technik der „Ereignisgesteuerten Programmierung")

2 Bilden von Ausdrücken

2.1 Regeln

2.2 Allgemeine Beispiele zu Ausdrücken

2.3 Beispiele: Ausdruck für Argumente bei Aktionen

2.4 Ausdruckseditor

2.4.1 Verwendung

2.4.2 Starten

2.4.3 Aufbau

3 Erstellen von Abfragen

3.1 Abfragen in MS-Access

3.2 Abfragenerstellung am Beispiel von Auswahlabfragen

3.2.1 Grundlagen

3.2.2 Auswahl der benötigten Tabellenfelder

3.2.3 Umbenennen von Feldern

3.2.4 Ausblenden von Feldern

3.2.5 Berechnete Felder

3.2.6 Sortieren der Datensätze

3.2.7 Kriterien

3.2.8 Parameter

3.2.9 Aggregierte Berechnungen

3.3 Kreuztabellenabfragen

3.4 Aktionsabfragen

3.5 Der Abfrageassistent

4 Verwenden von SQL

4.1 Allgemeines

4.1.1 Vergleich zwischen Microsoft Access SQL und ANSI SQL

4.1.1.1 Die wesentlichen Unterschiede

4.1.1.2 Verbesserte Features von Microsoft Access SQL

4.2 Festlegen von Eigenschaften

4.3 Erstellen von SQL-spezifischen Abfragen

4.3.1 Union - Abfrage

4.3.2 SQL Pass-Through Abfrage

4.3.3 Datendefinitionsabfrage

4.4 Erstellen von Unterabfragen

 

5 Makros

5.1 Überblick

5.1.1 Was sind Makros

5.1.2 Wo kann man Makros einsetzen

5.1.2.1 Pushbuttons

5.1.2.2 Ereignisse

5.1.2.3 Elemente in Formularen mit Werten versorgen

5.1.2.4 Differenzierte Gültigkeitsregeln

5.1.2.5 Autoexec-Makro (vgl. Punkt 6)

5.1.2.6 Eigene Menüleisten

5.1.2.7 Eigene Tastenbelegung

5.1.3 Das Makrofenster

5.2 Wie werden Makros erstellt

5.2.1 Ein einfaches Beispiel

5.2.2 Bedingte Ausführung von Makroaktionen

5.2.3 Bezugnahme auf Steuerelemente und Felder in Ausdrücken

5.3 Makro ausführen

5.4 Gruppierung von Makros

5.4.1 Wie erstellt man eine Makrogruppe

5.4.2 Wie spricht man ein Makro einer Gruppe an

5.5 Alle Makroaktionen auf eine Blick

5.6 Das Autoexec-Macro

5.7 Makros durch Tastendrücken ausführen

Programmieren in Access Basic

1 Datentypen

1.1 Elementare Datentypen in Access Basic

1.2 Deklarieren von Variablen (incl. Datenfeldern)

1.2.1 Implizite Deklaration

1.2.2 Explizite Deklaration

1.2.2.1 Die Anweisung Dim

1.2.2.2 Die Anweisung Global

1.2.2.3 Anweisung ReDim

1.2.2.4 Die Anweisung Static

1.3 Selbstdefinierte Datentypen

1.3.1 Die Type-Anweisung (Syntax)

1.3.2 Argumente der Anweisung Type

1.3.3 Beispiel: Verwendung statischer Datenfelder in einem benutzerdefinierten Datentyp.

1.4 Konstanten

1.5 Vergleich von Datentypen

1.5.1 Besonderheiten verschiedener Datentypen

1.5.1.1 BINARY

1.5.1.2 DATUM

1.5.1.3 INTEGER

1.5.1.4 VALUE

1.6 Konvertierungsfunktionen für Datentypen

1.6.1 Funktionssyntax

1.6.2 Funktionsweise der einzelnen Konvertierungsfunktionen

1.7 Felder in Tabellen

1.7.1 Mögliche Datentypeinstellungen

1.7.2 Anmerkung

1.8 Gültigkeitsbereiche, Lebensdauer

1.8.1 Gültigkeitsbereich

1.8.2 Lebensdauer

 

2 Kontrollstrukturen

2.1 Voraussetzungen

2.2 GoTo-Anweisung

2.3 If...Then...Else-Anweisung

2.4 Select Case-Anweisung

2.5 For...Next-Anweisung

2.6 While...Wend-Anweisung

2.7 Do...Loop-Anweisung

3 Objekttypen und Objektvariablen

3.1 Einführung

3.2 Die wichtigsten Objekttypen :

3.2.1 Objekttyp Form und Report :

3.2.2 Objekttyp Control :

3.2.3 Objekttyp Database :

3.2.4 Objekttyp Recordset :

3.2.5 Objekttyp Workspace :

3.2.6 Objekttyp QueryDef :

3.2.7 Objekttyp TableDef und Fields :

3.3 Objektdatentypen - Programmierbeispiele

3.3.1 Bespiel 1 : Microsft Access - Objektdatentypen Form, Report, Control

3.3.2 Bespiel 2: Einführung für die Objektdatentypen Database und Recordset

3.3.3 Beispiel 3: Verwendung der Move-Methoden des Objektdatentyps Recordset

3.3.4 Beispiel 4: Verwendung der Sort-Eigenschaft eines Recordset-Objektes

3.3.5 Beispiel 5: Verwendung der Filter-Eigenschaft eines Recordset-Objektes, sowie der Find-Methoden

3.3.6 Beispiel 6: Methoden find, edit, update

3.3.7 Beispiel 7: Transaktionen in Access Basic

3.3.8 Beispiel 8: Objektdatentypen TableDef und Field

4 Module, Sub-Prozeduren und Funktionen

4.1 Module

4.1.1 Allgemeines

4.1.2 Deklarationsabschnitt

4.2 Sub-Prozeduren, Funktionen

4.2.1 Allgemeines

4.2.2 Definieren einer Prozedur

4.2.2.1 Syntax

4.2.2.2 Bemerkungen

4.2.2.3 Beispiele

4.2.3 Aufrufen einer Sub-Prozedur

4.2.3.1 Syntax

4.2.3.2 Bemerkungen

4.2.3.3 Beispiel

4.2.4 Deklarieren eines Verweises auf eine externe Prozedur (DLL [Dynamic-Link Library])

4.2.4.1 Syntax

4.2.4.2 Bemerkungen

4.2.4.3 Beispiel

 

5 Standardfunktionen

5.1 Tabelle

5.1.1 Datei

5.1.2 Datenfelder

5.1.3 Dynamischer Datenaustausch

5.1.4 Domäne

5.1.5 Datum/Zeit

5.1.6 Fehlerbehandlung

5.1.7 Finanzmathematische Aufgaben

5.1.8 Grafiken in gedruckten Berichten

5.1.9 Inspektion von Variablen

5.1.10 Konvertierung

5.1.11 Mathematische Aufgaben

5.1.12 Objektmanipulation

5.1.13 Steuerung des Programmablaufs

5.1.14 SQL-Aggregatsoperationen

5.1.15 Zeichenfolgen

5.1.16 Sonstiges

5.2 Beispiele

5.2.1 Datei

5.2.2 Domäne

5.2.3 Datum/Zeit

5.2.4 Konvertierung

5.2.5 Objektmanipulation

5.2.6 Zeichenfolgen

5.2.7 Sonstiges

5.2.7.1 MsgBox

5.2.7.2 InputBox

6 Flexible Listenfelder und Kombinationsboxen

7 Debugger

7.1 Das Direktfenster

7.1.1 Testen von Funktionen und Sub-Prozeduren

7.1.2 Überprüfen des Werts eines Feldes, eines Steuerelements oder einer Eigenschafteneinstellung in einem Formular oder Bericht

7.1.3 Anzeigen des Werts einer Variablen oder eines Ausdrucks, während der Ausführung

7.1.4 Anzeigen des Werts einer Variablen oder eines Ausdrucks, wenn die Ausführung des Codes angehalten wurde

7.2 Schrittweises Ausführen von Prozeduren und Verwendung von Haltepunkten

7.2.1 Standard Prozeduren

7.2.2 Ereignisprozeduren

Who is who

 


Zurück zur Studium-Seite


Microsoft Access 2.0

Objekte, Eigenschaften und Methoden

 

Objekte, Eigenschaften und Methoden in C++

 

class linie {

int px1, py1; // Eigenschaften

int px2, py2; // Private Daten

public:

linie (....); // Konstruktor Þ Standardeinst. d. Eigensch.

void show (void); // Methode

void hide (void); // Methode

};

linie L1; // Objekt L1 anlegen

 

 

 

Die Klasse beschreibt also in C++ das Speicherverhalten eines Objektes dieser Klasse (Instanz).

Diese Ansicht verdeutlicht, daß die Eigenschaften und Methoden dem späteren Objekt zu-geordnet sind. Man erhält also eine Datenabstraktion ( ADT Þ Abstrakter Datentyp).

Das Interface des Abstrakten Datentyps (für den Zugriff auf die privaten Daten) bilden die Methoden.

Die Kapselung wird durch die Codeschreibweise verdeutlicht.

Bsp.: L1.show();

 

In ACCESS kann man sich nun die vorhandenen Objekte in ähnlicher Art vorstellen. Ein wesentlicher Unterschied zu C++ besteht lediglich darin, daß man sich keine eigenen Klassen bauen kann, d.h. man kann lediglich vordeklarierte Objekttypen verwenden.

 

Objekte innerhalb eines Formulars in ACCESS

 

Die Objekte

 

Bezeichnungsfeld

Dient zur Ausgabe von Text

 

Textfeld

Dient zur Ausgabe und Eingabe von Text

 

Optionsgruppe

Dient zur Gruppierung anderer Objekte, typischerweise z.B. Kontrollkästchen. Es ist also ein sogenanntes Containerobjekt.

 

Umschaltfläche

Ähnelt vom Aussehen einer Schaltfläche, entspricht aber der Funktion eines Kontrollkästchens.

Kennt also im Prinzip die zwei Zustände AN/AUS.

 

Optionsfeld

Kennt die zwei Zustände AN/AUS.

 

Kontrollkästchen

Kennt die zwei Zustände AN/AUS.

 

Listenfeld

Stellt dem Anwender eine Auswahlbox zur Verfügung.

 

Kombinationsfeld

Der Anwender kann hier ähnlich wie im Textfeld Text eingeben, aber auch über eine kleine Schaltfläche eine Auswahlbox aufklappen und dort eine Auswahl treffen.

 

 

Diagramm

Darstellung verschiedener Diagramme zum Bsp. basierend auf den Daten einer Abfrage.

 

Unterformular

Wenn man mehrere Tabellen in einem Formular ansprechen will.

 

Linie

Zum zeichnen einer Linie.

 

Rechteck

Zum zeichnen eines Rechtecks.

 

Seitenumbruch

Wenn ein Formular über mehrere Seiten gehen soll.

 

Befehlsschaltfläche

Zum darstellen verschiedener Schaltflächen (Bsp: OK-Button).

 

Objektfeld

Zum darstellen grafischer Objekte (Bilder). Es können auch OLE-Objekte sein.

 

Gebundenes Objektfeld

Ist an ein Tabellenfeld geunden. (ähnlich Textfeld !!)

 

Die Eigenschaften

 

An die Eigenschaften eines Objektes gelangt man wie folgt:

Objekt markieren

rechte Maustaste

„Eigenschaften"

 

 

Diese Eigenschaften lassen sich nun modifizieren.

Jedes Objekt bekommt mit der Anlage Standardeigenschaften. Auch aus diesem Grund sollte die Eigenschaft „Name" vom Entwickler sinnvoll angepaßt werden.

Bsp.: OK-Button Þ Schaltfläche_OK

 

 

Die Methoden (Technik der „Ereignisgesteuerten Programmierung")

 

In ACCESS wie auch in der Objekt-Orientierten-Programmierung wird die Technik der „Ereignisgesteuerten Programmierung" angewendet:

Ereignis

Versenden einer Nachricht an ein Objekt

Objekt kann auf diese Nachricht durch Codeausführung reagieren

 

 

Hinweis:

Senden einer Nachricht <==> Aufruf einer Funktion eines Objektes (Methode)

 

Bsp. Für Methoden:

Sub Schaltfläche_OK_Click (...) Þ Ereignis: Mausklick oder Tastendruck

Sub Schaltfläche_OK_MouseMove (...) Þ Ereignis: Mauswanderung über Objekt

 

Diese Methoden sind anwählbar über das Eigenschaftsfenster oder „Ansicht-Code".

 

Bilden von Ausdrücken

Regeln

Allgemeine Beispiele zu Ausdrücken

 

Ausdruck Verwendung Beschreibung
     
= [Vorname] & " " & [Nachname] Berechnetes

Steuerelement

Verkettet die Werte in den Feldern "Vorname" und "Nachname" und zeigt zwischen diesen ein Leerzeichen an.
>100 Eigenschaft

"Gültigkeitsregel"

Legt fest, daß Sie in dieses Feld nur Werte größer als 100 eingeben können.
=DatTeil("m"; Datum( )) Eigenschaft

"Standardwert"

Bezeichnet die Monatsangabe des aktuellen Systemdatums als Standardeintrag für ein Feld.
<Datum( )-30 Abfragekriterien Verwendet die Funktion Datum, um mehr als 30 Tage alte Datensätze in das Dynaset aufzunehmen.
Formulare![Personal]![Land]=

"Großbritannien"

Makrobedingung Führt eine Aktion aus, wenn der Wert im Feld "Land" für den aktuellen Datensatz im Formular "Personal" gleich "Großbritannien" ist.

 

Beispiele: Ausdruck für Argumente bei Aktionen

 

 

Für die Aktionen: "SetzenWert"
  "SuchenDatensatz"
  "AusführenMakro"

 

 

Ausdruck Aktion Argument Ergebnis
       
Formulare![Lieferanten]![Lieferanten-Nr] SetzenWert Feld Setzt das/die im Aktionsargument angegebene Feld, Steuerelement oder Eigenschaft auf den Wert des Feldes "Lieferanten-Nr" des Formulars "Lieferanten".
Formulare![Personal]![Gehalt]*1,1 SetzenWert Ausdruck Setzt das/die im Aktionsargument angegebene Feld, Steuerelement oder Eigenschaft das Produkt auf den Wert des Feldes "Gehalt" im Formular "Personal" und 1,1 (Gehalt wird um 10 % erhöht).
=[Firmenkurzliste] SuchenDatensatz Suchen nach Sucht den Datensatz, der den in der Firmenkurzliste erscheinenden Firmennamen enthält.
Jahr([Bestelldatum])=1994 AusführenMakro Wiederhol-

bedingung

Führt das Makro solange aus, wie das Datum im Feld "Bestelldatum" die Jahresangabe 1994 enthält.

Ausdruckseditor

Verwendung

Wenn man zum Erstellen eines Ausdrucks Hilfe benötigt, kann man sich des Ausdrucks-Editors bedienen. Der Ausdrucks-Editor ist an fast allen Stellen ausführbar, an denen man Ausdrücke verwendet:

 

Eigenschaftenfenster

"Kriterien"-Zelle im QBE-Entwurfsbereich

Makrofenster

Modulfenster

...

 

 

Fügen Sie die Elemente eines Ausdrucks in den Audrucks-Editor ein.

Um Ihre zuletzt ausgeführte Aktion rückgängig zu machen, wählen Sie die Schaltfläche für "Rückgängig".

 

Wenn Ihr Ausdruck vollständig ist, wählen Sie "OK".

Wenn Sie "OK" wählen, kopiert Microsoft Access Ihren Ausdruck an die Stelle, von der aus Sie den Ausdrucks-Editor gestartet haben. Wenn dort bereits ein Wert vorhanden war oder wenn Sie den Ausdrucks-Editor aus dem Modulfenster gestartet haben, das markierten Text enthielt, wird der Wert oder der Text durch Ihren neuen Ausdruck ersetzt.

Starten

Der Ausdrucks-Editor wird im Eigenschaftenfenster bzw. im unteren Ausschnitt des Makrofensters wiefolgt gestartet:

 

Auf das Einstellungsfeld der Eigenschaft oder des Arguments, in das der Ausdruck eingeben werden soll klicken.

Auf die Editor-Schaltfläche neben dem Einstellungsfeld der Eigenschaft oder des Arguments klicken

 

Wenn einer Eigenschaft mehrere Editoren zugeordnet sind, zeigt Microsoft Access das Dialogfeld Editor auswählen an. In diesem Fall die Option "Ausdrucks-Editor" und dann "OK" wählen.

 

So startet man den Ausdrucks-Editor in einem Feld oder einer "Kriterien"-Zelle im Abfragefenster, in der Spalte "Bedingungen" des Makrofensters oder im Modulfenster

 

Mit der rechten Maustaste auf die Stelle, an der der Ausdruck einfügt werden soll klicken.

Aus dem Kontextmenü den Befehl Editor auswählen

Aufbau

 

 

Anmerkung

Wenn das Einstellungsfeld der Eigenschaft oder des Arguments, die Abfragenzelle oder die Spalte "Bedingungen", von dem/der aus man den Ausdrucks-Editor startet, bereits einen Wert enthält, wird dieser Wert automatisch in das Ausdrucksfeld kopiert. Um Text aus dem Modulfenster in den Ausdrucks-Editor zu kopieren, muß man den gewünschten Text markieren, bevor man den Ausdrucks-Editor startet.

 

 

Erstellen von Abfragen

 

Abfragen in MS-Access

 

Mit Hilfe von Abfragen sollen Datensätze aus Tabellen einer Datenbank unter bestimmten Gesichtspunkten zusammengestellt werden. Dieser Abschnitt beinhaltet eine Beschreibung wie Abfragen in dem Programm Microsoft ACCESS 2.0 mit Hilfe des Abfrageassistenten und der Methode Querry by Example (QBE, Abfragen an Beispielen) erstellt werden.

 

Innerhalb von ACCESS 2.0 wird das Ergebnis einer Abfrage in einem sogenannten Dynaset dargestellt, welches sich dem Anwender wie eine Tabelle präsentiert. Der Unterschied liegt darin, daß nicht die Dynaset-Inhalte sondern nur die Abfrage selbst gespeichert wird. Um die Aktualität der Daten zu garantieren, wird das Dynaset nach jeder Änderung der Daten bzw. Ausführung von Aktionen auf den Daten aktualisiert.

Es gibt sechs verschiedene Abfragearten :

Auswahlabfragen

Kreuztabellenabfragen

Aktionsabfragen

Union-Abfragen

SQL Pass-Through-Abfragen

Datendefinitionsabfragen.

 

Die ersten drei Abfragearten können mit Hilfe des Abfrageassistenten bzw. unter der Verwendung von QBE erstellt werden, während die letzten drei nur mit Hilfe der Datenabfragesprache SQL formuliert werden können und somit nicht Bestandteil dieses Abschnittes sind.

Abfragenerstellung am Beispiel von Auswahlabfragen

Grundlagen

 

Auswahlabfragen sind die häufigste Art von Abfragen und können nur unter der Verwendung von QBE oder SQL erstellt werden. Dazu wählt man unter dem Menü Abfragen den Punkt „Neue Abfrage erstellen". Anschließend kann man die entsprechenden Tabellen auswählen, auf welche sich die Abfrage beziehen soll. Wenn mehrere Tabellen in einer Abfrage verwendet werden, sollten diese miteinander verknüpft sein, damit es zu sinnvollen Abfrageergebnissen kommt. Verknüpfungen die bei der Tabellendefinition gemacht wurden, können aufgehoben und neue, nur für die Abfrage relevante, hinzugefügt werden. Verknüpfungen können auf folgende Art und Weise manipuliert werden :

Löschen : Verknüpfung anklicken und die Taste ENTF betätigen.

Ändern der Verknüpfungsart : Auf die Verknüpfung doppelt klicken und die gewünschte Verknüpfungsart auswählen.

Neudefinition : Verbinden der Felder mit Hilfe von Drag und Drop.

 

Es gibt drei Arten von Verknüpfungen :

Gleichheitsverknüpfung : Bei Gleichheitsverknüpfungen enthält das Dynaset nur diejenigen Datensätze, die auf beiden Seiten der verknüpften Felder den gleichen Wert haben.

Inklusionsverknüpfung : Wenn das Dynaset alle Datensätze der linken Verknüpfungsseite besitzen soll und von der Rechten dagegen nur diejenigen, bei denen die Inhalte der verknüpften Felder identisch sind (und umgekehrt), handelt es sich um eine Inklusionsverknüpfung left join (right join).

Reflexivverknüpfung : Reflexivverknüpfungen sind Verknüpfungen in der eine Tabelle mit sich selbst verknüpft wird. Dabei ist zu beachten das die Verknüpfung der beiden Felder auch interpretierbar ist.

Auswahl der benötigten Tabellenfelder

 

Tabellenfelder können entweder mit der Hilfe von Drag und Drop in die Feldliste des Abfragefensters eingetragen oder aus der Listbox der Feldzeile (anklicken der gewünschten Spalte) ausgewählt werden.

Zur Verwendung aller Felder einer Tabelle gibt es zwei Möglichkeiten : Man kann den Namen der Tabelle in das Feld des Abfragefensters eintragen und alle Tabellenfelder werden in das Abfragefenster übernommen (spätere Änderungen der Tabellendefinition werden nicht berücksichtigt). Zweitens besteht die Möglichkeit den Namen der Tabelle gefolgt von einem Punkt und einem Stern zu verwenden, wodurch alle Felder der aktuellen Tabelle im Dynaset angezeigt werden, aber nicht im Abfragefenster erscheinen. Dies ist für spätere Änderungen der Tabellendefinition (z.B. durch Hinzufügen oder Löschen von Feldern) von Vorteil, da diese sofort Berücksichtigung finden.

Umbenennen von Feldern

 

Tabellenfeldern können innerhalb von Abfragen neue Namen gegeben werden. Formulare und Anwendungen, die auf dieser Abfrage basieren, müssen dann auch diesen Namen verwenden. Dazu trägt man vor dem Feldnamen den neuen Namen gefolgt von einen Doppelpunkt ein.

 

Ausblenden von Feldern

 

Zusätzlich können in einer Abfrage auch Felder verwendet werden, deren Daten später nicht im Dynaset erscheinen, um diese dann z.B. für die Sortierung oder für Auswahlkriterien einzusetzen. Felder werden durch das entfernen des Kreuzes in dem Feld „Anzeigen" ausgeblendet.

Diese Methode muß z.B. dann angewandt werden, wenn alle Tabellenfelder durch den Tabellennamen gefolgt von einem Stern ausgewählt wurden, denn die einzelnen Felder stehen nicht im Abfragefenster zur Verfügung und können so auch nicht als Grundlage für eine Sortierung oder ein Auswahlkriterium dienen. Würde man das entsprechende Feld jetzt zusätzlich hinzufügen ohne es auszublenden, würden die Daten im Dynaset doppelt erscheinen.

 

Berechnete Felder

 

Im Gegensatz zu Tabellen können in Abfragen auch berechnete Felder verwendet werden. Dazu muß nur ein Ausdruck in die erste Zeile des Abfragefensters eingetragen werden. Die Namensvergabe erfolgt von ACCESS automatisch, kann aber nachträglich geändert werden (vgl. 3.2.3).

Sortieren der Datensätze

 

Es kann innerhalb einer Abfrage nach jedem Feld sortiert werden. Dies erfolgt durch das Eintragen der Sortierungsart (absteigend oder aufsteigend) in der entsprechenden Zeile eines ausgewählten Feldes. Die Sortierungspriorität der einzelnen Tabellenfelder wird durch die Spaltenposition festgelegt. Die sich am weitesten links befindende Spalte hat die höchste Priorität etc. .

Die Reihenfolge der Spalten kann geändert werden, indem die entsprechende Spalte markiert und anschließend durch einen Doppelklick ausgewählt wird. Nun kann die Spalte, mit gedrückt gehaltener linker Maustaste, an die gewünschte Position befördert werden.

 

Kriterien

 

Kriterien für die Auswahl von Datensätzen können in allen Zeilen ab der „Kriterien-Zeile" eingetragen werden. Einträge in unterschiedlichen Spalten einer Zeile repräsentieren eine UND-Verknüpfung dieser Kriterien und Einträge in unterschiedlichen Zeilen eine ODER-Verknüpfung. Innerhalb eines Feldes können sonst alle vorhanden logischen Operationen, auch z.B. mit eingeschlossenen Berechnungen, durchgeführt werden.

Werden bei der Formulierung von Kriterien andere Tabellenfelder, als das für die Spalte zuständige, benötigt, müssen diese in eckige Klammern eingefaßt werden. Angaben von Datümern erfolgen unter dem Einschluß von Doppelkreuzen.

Probleme kann es mit Nullwerten geben! Datensätze mit Nullwerten werden im Dynaset nicht angezeigt. Dies führt dann zu Problemen, wenn die Abfrage einem Formular zu Grunde liegt und der Anwender in dem Formular keine Angabe für das auszuwählende Feld macht. Er erhält dann kein Ergebnis, obwohl er eigentlich erreichen wollte, daß er alle Datensätze angezeigt bekommt. Dieses Problem kann z.B. mit einer Inklusionsverknüpfung behoben werden.

 

Parameter

 

Sie können in allen Ausdrücken auch Parameter verwenden. Als Parameter gelten alle in eckigen Klammern eingeschlossenen Bezeichner, die keinem Tabellenfeld zugeordnet werden können. Parametern können dann auch Typen zugeordnet werden, um automatische Typprüfungen und Berechnungen mit ihnen durchzuführen.

Vor der Ausführung der entsprechenden Abfrage wird dann eine Eingabeaufforderung an den Anwender von ACCESS durchgeführt.

 

Aggregierte Berechnungen

 

Aggregierte Berechnungen führen Berechnungen über mehrere Datensätze aus und geben das Ergebnis jeweils in einem Datensatz des Dynasets wieder. Es besteht die Möglichkeit von einstufigen bis zu mehrstufigen Gruppenwechseln.

Erstellt wird eine aggregierte Berechnung, indem man auf das große griechische Sigma der Symbolleiste klickt. Sofort wird in das Abfragefenster eine neue Zeile mit dem Namen Funktion eingetragen. Der Eintrag Gruppierung in dieser Zeile bedeutet, daß für diese Spalte ein Gruppenwechsel vorgenommen wird. In einer anderen Spalte kann dann z.B. die Funktion SUMME eingetragen werden, um eine Summe der Feldwerte für die ausgewählte Gruppierung zu erhalten. Die Priorität der Gruppenwechsel hängt wieder von der Reihenfolge der Spalten ab (vgl. 3.2.6).

Kreuztabellenabfragen

 

Eine Kreuztabellenabfrage ist eine zweidimensionale Abfrage, die auf aggregierten Berechnungen basiert und bei der sowohl Spalten als auch Zeilen eine Überschrift haben. Sie hat folgende Merkmale :

Eine Kreuztabellenabfrage liegt nur eine Tabelle zu Grunde

Eine Kreuztabellenabfrage enthält mindestens zwei Gruppierungsfelder, von denen das eine die Zeilenüberschriften und das andere die Spaltenüberschriften bestimmt. Darüber hinaus darf eine Kreuztabellenabfrage weitere Gruppierungsfelder für Zeilenüberschriften haben. Für Spaltenüberschriften ist hingegen nur ein Gruppierungsfeld erlaubt.

Eine Kreuztabellenabfrage enthält ein Feld, dessen Inhalte mit einer Funktion oder einem benutzerdefinierten Ausdruck aggregiert und als Tabelleneinträge in den Zellen der Kreuztabelle ausgegeben werden.

Es besteht die Möglichkeit diese mit dem Abfrageassistenten oder mit QBE zu erstellen. Es wird hier die Erstellung einer Kreuztabellenabfrage mit Hilfe von QBE beschrieben.

Nach der Wahl der zu Grunde liegenden Tabelle gelangt man zum Abfragefenster. Unter dem Menü "Abfrage" wählt man den Punkt Kreuztabelle. Es werden jetzt zwei zusätzliche Zeilen, Funktion und Kreuztabelle, angezeigt. Zunächst werden die Felder bestimmt, die als Zeilenüberschriften fungieren sollen. Als Funktion wird bei diesen die "Gruppierung" eingetragen und in der Zeile Kreuztabelle der Wert "Zeilenüberschrift". Die Wahl der Spaltenüberschriften erfolgt analog, wobei der Wert "Zeilenüberschrift" durch "Spaltenüberschrift" ersetzt wird. Zum Schluß wird das Feld für die Tabelleneinträge hinzugefügt und eine entsprechende Funktion z.B. ANZAHL verwendet. Die Zeile Kreuztabelle erhält für diese Feld den Wert "Tabelleneintrag".

Mit Hilfe der Abfrageeigenschaften können Spaltenüberschriften auch fixiert werden um bessere Vergleichbarkeit mit anderen Abfragen zu erhalten.

Die Erstellung einer Kreuztabelle mit Hilfe des Abfrageassistenten funktioniert entsprechend. Er gibt jeden Schritt vor, läßt nur bestimmte Eingaben zu und stellt Hilfen zur Verfügung.. Der Nachteil liegt in der Nichtzulassung von berechneten Feldern. Sollen diese eingesetzt werden, müssen Felder als Platzhalter ausgewählt und nachträglich geändert werden.

Aktionsabfragen

 

Im Gegensatz zu Auswahlabfragen , die ein Dynaset aus bestehenden Tabellen erzeugen, und an den zu Grunde liegenden Daten jedoch nichts ändern, ist es die Aufgabe von Aktionsabfragen die eine oder andere Veränderung von Datensätzen vorzunehmen. Es gibt vier Arten von Aktionsabfragen :

Tabellenerstellungsabfragen : Kopiert die Daten des Dynasets in eine andere Tabelle.

Löschabfrage : Löscht Datensätze aus Tabellen.

Anfügeabfrage : Fügt Datensätze an Tabellen an.

Aktualisierungsabfrage : Ändert Daten in bestehenden Datensätzen von Tabellen.

 

Erzeugt werden diese Abfragen genau wie Auswahlabfragen nur mit dem Unterschied, daß die Abfrageart mit Hilfe des Menüs "Abfrage" und der Auswahl des entsprechenden Abfragetyps geändert werden muß.

 

Der Abfrageassistent

 

Mit Hilfe des Abfrageassistenten können folgende Abfragen erstellt werden, wobei einem dieser bei der Erstellung der Abfragen entsprechende Vorgaben und Hilfestellungen anbietet:

 

Kreuztabellenabfragen : vgl. 3.3

Duplikatsuche : Liefert doppelte Datensätzen zu einer Tabelle für ein bestimmtes Feld.

Inkonsistenzsuche : Stellt Datensätze dar, die auf einer Verknüpfung zwischen Tabellen basieren und für die die Datensätze auf die sie verweisen fehlen (Mengendifferenz der beiden Tabellen).

Datenarchivierung : Kopiert bestimmte Datensätze aus einer bestehenden Tabelle in eine neue Tabelle, wobei die Möglichkeit besteht die Datensätze aus der Orginaltabelle zu löschen.

Verwenden von SQL

 

Allgemeines

 

SQL (Structured Query Language) = Strukturierte Abfragesprache

= Programmiersprache, die zum Abfragen, Aktualisieren und Verwalten von relationalen Datenbanken verwendet wird. Jeder Abfrage, die man in MS Access erstellt , wird eine SQL-Anweisung zugewiesen, die Aktionen der jeweiligen Abfrage definiert. Normalerweise ist es am einfachsten, den QBE(Query By Example)-Entwurfsbereich und die grafische Abfragewerkzeuge in MS-Access zum Erstellen und Modifizieren von Abfragen zu verwenden.

Beim Erstellen einer Abfrage mit dem QBE-Entwurfsbereich, konstruiert MS Access im Hintergrund die entsprechende SQL-Anweisung. Die SQL-Ansicht Ihrer Abfrage entspricht der Abfrage, die über den QBE-Entwurfsbereich erstellt wurde, spiegelt jedoch nicht alle eingestellten Eigenschaften wider.

 

Vergleich zwischen Microsoft Access SQL und ANSI SQL

 

Microsoft Access SQL stimmt grundsätzlich mit den Inhalten von ANSI-89 Level 1 überein. Allerdings sind einige ANSI SQL-Features in Microsoft Access SQL nicht realisiert. Umgekehrt umfaßt Microsoft Access SQL reservierte Wörter sowie Features, die in ANSI SQL nicht unterstützt werden.

Die wesentlichen Unterschiede

Microsoft Access SQL und ANSI SQL haben jeweils unterschiedliche reservierte Wörter sowie Datentypen

Es gelten unterschiedliche Regeln für das Konstrukt Between...And, welches die folgende Syntax hat: Ausdruck1 [NOT] BETWEEN Ausdruck2 AND Ausdruck3 In Microsoft Access SQL darf Ausdruck2 größer sein als Ausdruck3; in ANSI SQL muß Ausdruck2 kleiner oder gleich Ausdruck3 sein.

Microsoft Access SQL unterstützt komplizierte Ausdrücke. Sie können z.B. Access Basic- oder benutzerdefinierte Funktionen in eine Microsoft Access SQL-Anweisung einfügen.

 

Verbesserte Features von Microsoft Access SQL

 

Die Anweisung TRANSFORM, die Unterstützung für Kreuztabellenabfragen bietet. Beispiel: TRANSFORM count(Stadt) ‘Tabellenwert’ SELECT Land ‘Zeile’ FROM Kunden ‘Tabelle’ GROUP BY Land ‘Zeilengruppierung’ PIVOT Stadt ‘Spalte’

Die Deklaration PARAMETERS, um Parameterabfragen zu definieren.

 

Festlegen von Eigenschaften

 

Wenn in Formularen häufig Listen- und Kombinationsfelder verwendet werden, um sortierte oder gefilterte Werte anzuzeigen, steigt im Laufe der Zeit die Anzahl der erstellten und gespeicherten Abfragen, was zu einer langen Liste von Abfragen und damit zu einer gewissen Unübersichtlichkeit führt. Um diese Liste zu kürzen, kann man anstelle von Abfragen eine SQL SELECT-Anweisung verwenden.

 

Ändern oder Erstellen der Datensatzherkunft mittels SQL-Anweisung:

Formularentwurf

Eigenschaftsfenster

Herkunftstyp: Tabelle/Abfrage

Datensatzherkunft: löschen - Editor

Abfrage generieren

Datei: Schließen

 

Erstellen von SQL-spezifischen Abfragen

 

Unter Verwendung der SQL-Anweisungen können drei SQL-spezifische Arten von Abfragen erstellt werden, die nicht über den SQL-Entwurfsbereich realisierbar sind:

Union - Abfrage

SQL Pass-Through - Abfrage

Datendefinitionsabfrage

 

Erstellen einer SQL-spezifischen Abfrage

Datenbankfenster: Abfrage: Neu

Neue Abfrage: Neue Abfrage

Tabelle/Abfrage hinzufügen: Schließen

Menü Abfrage: SQL-spezifisch: Union Pass-Through Datendefinition

Abfrage: „Anweisungen eingeben"

Menü Ansicht: Datenblatt (Union) Menü Abfrage: Ausführen (Pass-Through, Datendefinition)

Union - Abfrage

Union-Abfragen ermöglichen auf einfache Weise das Kombinieren von zwei oder mehr Tabellen oder Abfragen. Wenn man eine Union-Abfrage startet, werden die Datensätze von korrespondierenden Feldern der enthaltenen Tabellen oder Abfragen angezeigt.

Eine Union-Abfrage enthält zwei oder mehr SQL SELECT-Anweisungen. Jede SELECT-Anweisung muß dieselbe Anzahl von Feldern in derselben Reihenfolge liefern. Die korrespondierenden Felder müssen über kompatible Datentypen verfügen, mit einer Ausnahme: Sie können ein Feld vom Datentyp ZAHL und eines vom Datentyp TEXT als korrespondierende Felder verwenden.

 

Bsp.:

Die folgende Union-Abfrage wählt alle Firmen und Orte aus, die sowohl in der Tabelle "Lieferanten" als auch in der Tabelle "Kunden" stehen, und sortiert die Daten alphabetisch nach dem Ort:

 

SELECT [Firma], [Ort]

FROM [Lieferanten]

 

UNION SELECT [Firma], [Ort]

FROM [Kunden]

ORDER BY [Lieferanten].[Ort];

SQL Pass-Through Abfrage

 

Man verwendet SQL Pass-Through-Abfragen, um Befehle direkt an einen ODBC-Datenbank-Server (wie den Microsoft SQL Server) zu senden. Zum Senden der Befehle verwendet man die für den jeweiligen Server erforderliche Syntax. Mit Hilfe von SQL Pass-Through-Abfragen arbeitet man direkt mit den Tabellen des Servers, statt sie einzubinden. Ferner lassen sich über SQL Pass-Through-Abfragen gespeicherte Prozeduren auf einem ODBC-Server ausführen.

 

(ODBC (Open Database Connectivity) Ein vorgegebenes Protokoll für SQL-Datenbankserver, wie z.B. MS SQL Server. Man kann ODBC-Treiber installieren, die es MS Access ermöglichen, sich an diese SQL-Datenbankserver anzuschließen und auf die Daten in den SQL-Datenbanken zuzugreifen.)

 

Vorsicht! Konvertieren Sie eine SQL Pass-Through-Abfrage nicht in einen anderen Abfragetyp, wie z.B.eine Auswahlabfrage. Dies würde zum Verlust der von Ihnen eingegebenen SQL-Anweisung führen.

 

Datendefinitionsabfrage

Datendefinitionsabfragen werden verwendet, um Datenobjekte in der aktuellen Microsoft Access-Datenbank zu erstellen oder zu ändern. Das Erstellen oder Ändern von Datenobjekten kann sowohl mit Hilfe der Entwurfstools als auch mit SQL-Anweisungen durchgeführt werden.

Jede Datendefinitionsabfrage besteht aus genau einer Datendefinitionsanweisung. Folgende Anweisungen werden unterstützt:

 

CREATE TABLE Erstellt eine Tabelle

ALTER TABLE Fügt ein neues Feld in eine bestehende Tabelle ein

DROP TABLE Entfernt eine Tabelle aus einer Datenbank

CREATE INDEX Erstellt eine Index für ein Feld

DROP INDEX Entfernt einen Index aus einem Feld

 

 

Bsp.:

Diese Datendefinitionsanweisung erstellt eine Tabelle mit dem Namen "Freunde". Die Anweisung schließt den Namen und Datentyp jeden Feldes der Tabelle ein und weist dem Feld "Code" einen Index zu, der es als Primärschlüssel kennzeichnet.

CREATE TABLE Freunde

([Code] integer,

[Nachname] text,

[Vorname] text,

[Geburtsdatum] date,

[Telefon] text,

[Bemerkungen] memo,

CONSTRAINT [Index1] PRIMARY KEY ([Code]));

 

 

 

Die folgende Datendefinitionsanweisung erstellt einen Mehr-Felder-Index auf der Basis der Felder "Nachname" und "Vorname":

 

CREATE INDEX NeuerIndex

ON Freunde ([Nachname], [Vorname]);

 

 

Erstellen von Unterabfragen

 

Eine Unterabfrage ist entweder eine SELECT-Anweisung (SQL), die in eine SELECT-, SELECT...INTO-, INSERT...INTO-, DELETE- bzw. UPDATE-Anweisung eingebettet ist, oder eine SELECT-Anweisung, die Bestandteil einer anderen Unterabfrage ist. Sie können Unterabfragen in den folgenden Zusammenhängen einsetzen: in einer SQL-Ansicht einer Abfrage; in der Entwurfsansicht einer Abfrage im QBE-Entwurfsbereich in einer Zelle der Zeile "Kriterien" oder "Feld"; oder in Access Basic in SQL-Anweisungen.

Die SELECT-Anweisung einer Unterabfrage kann keine Union- oder Kreuztabellenabfrage definieren.

 

Bsp.:

Listet zu jedem Artikel, dessen Einzelpreis mit dem von "Apfelsaft" übereinstimmt, den Namen sowie den Einzelpreis auf.

 

SELECT [Artikelname], [Einzelpreis]

FROM Products

WHERE [Einzelpreis] = (SELECT [Einzelpreis]

FROM[Artikel]

WHERE [Artikelname] = "Apfelsaft");

 

 

Makros

Überblick

Was sind Makros

Makros dienen der Automatisierung einer oder mehrerer Aktionen, welche man vorher in tabellarischer Form zusammenstellen kann. Prinzipiell handelt es sich bei den Aktionen um solche die man auch per Hand manuell ausführen kann. Dabei handelt es sich bei den Aktionen größtenteils um Menü- oder Symbolbefehle. Desweiteren sind jedoch auch Aktionen vorhanden welche nicht manuell verfügbar sind wie z.B. das setzen eines Wertes zum zuweisen von Werten für Formularfelder, oder dem einblenden von Meldungen z.B. bei anwendungsspezifischen Fehlermeldungen.

Desweiteren ist es mit den Makros möglich differenzierter auf bestimmte Ereignisse zu reagieren als es mit den Menübefehlen möglich ist, sowie Bedingungen zu formulieren wann die Aktionen auszuführen sind.

Wo kann man Makros einsetzen

Pushbuttons

Aktion beim Klicken oder Doppelklicken z.B. aktualisieren einer Tabelle

Ereignisse

Alle Steuerelemente in Formularen sowie Formulare selbst können auf bestimmte reagieren. Diese Ereignisse sind z.B. beim Öffnen, vor Aktualisierung, beim Klicken, usw. Diesen Ereignissen kann beliebige Makros zuordnen.

Elemente in Formularen mit Werten versorgen

Da man in Tabellen z.B. keine berechneten Felder angeben kann, aber oftmals einen berechneten Wert abspeichern will, kann man sich einem Makro bedienen. Wenn man beispielsweise den Mehrwertsteuerbetrag aus einer Rechnung in die Tabelle speichern will, erstellt man ein Formularfeld dessen Inhalt durch eine Formel berechnet wird und überträgt den Wert durch ein Makro welches bei dem Ereignis "bei Änderung" ausgeführt wird über die Funktion "setzen Wert" in das entsprechende Tabellenfeld.

Differenzierte Gültigkeitsregeln

Ähnlich kann man bei komplizierteren Gültigkeitsregeln verfahren, indem man bei dem Ereignis "vor Aktualisierung" ein Makro startet welches den eingegebenen Wert gegen eine komplizierte Gültigkeitsformel testet und ggf. mit einer Fehlermeldung reagiert.

Autoexec-Makro (vgl. Punkt 6)

Um bestimmte Grundeinstellungen für die Datenbank beim Starten automatisch ausführen zu lassen, kann man diese in ein Makro schreiben welches man "AUTOEXEC" nennt. Dieses Makro wird beim starten automatisch ausgeführt.

Eigene Menüleisten

Über Makros lassen sich auch benutzerdefinierte Menüleisten, ggf. für jedes Formular differenziert, erstellen. Verfügbar sind die allgemeinen Funktionen welche man aus den Menüleisten kennt, eine Reihe von vorgefertigten ACCESS Funktionen sowie selbstdefinierte Makros und Funktionen. Hierzu wird für die Menüleiste sowie jedes Menü ein Makro erstellt, wobei die Menuleiste mit der Aktion „HinzufügenMenü" auf ein Menü verweist. Jedes Menü kann nun Aktionen d.h. Menüpunkte enthalten, welche ihrerseits per „HinzufügenMenü" Verweise auf Untermenümakros sein können. Komfortabel können die Menüleisten über den Menü-Editor erstellt und bearbeitet werden.

Um beispielsweise einem Formular eine benutzerdefinierte Menüleiste zuzuordnen wird das „Menüleisten"-Makro (root) an die Eigenschaft „Menüleiste" gebunden.

Eigene Tastenbelegung

Weiterhin lassen sich Makros auch über beliebig zuordnebare Tastaturkürzel ausführen (vgl. Pkt. 5.7 Seite *).

Das Makrofenster

Makros werden tabellarisch in einem Fenster erstellt. Das Fenster besteht aus zwei Teilen: Im tabellarische Teil werden die Aktionen eingetragen, welche aus einem Listenfeld ausgewählt werden können. Die Aktionen können an Bedingungen geknüpft werden und mehrere Aktionen werden durch die Vergabe eines Namens zu einem Makro zusammengefaßt. Im unteren Teil werden die Argumente eingetragen welche der Aktion zugeordnet werden sollen bzw. von ihr verarbeitet werden.

 

Grafik: Makrofenster Access 2.0

Wie werden Makros erstellt

Ein einfaches Beispiel

Zuerst muß man im Datenbankfenster das Symbol Makro auswählen und über den Button NEU ein neues das Makrofenster öffnen. Durch Eingabe einer Aktion (Listenfeld) wird die Funktion des Makros festgelegt.

Speichern und fertig !

Das Makrofenster kann auch direkt beim Zuordnen einer Aktion zu einem Ereignis in einem Formular geöffnet werden.

Bedingte Ausführung von Makroaktionen

Die Ausführung einzelner Funktionen innerhalb eines Makros kann von Bedingungen abhängig gemacht werden. Diese Bedingungen trägt man links neben der betreffenden Aktion in die Spalte "Bedingung". Falls diese Spalte nicht angezeigt wird (standardmäßig nicht) kann man Sie über "Ansicht", "Optionen", "Bedingung einblenden = ja" anzeigen lassen. Um mehrere Aktionen von der gleichen Bedingung

abhängig zu machen, trägt man bei der ersten Aktion die Bedingung ein und bei jeder weiteren Aktion, welche unmittelbar ohne Leerzeile folgen muß, lediglich drei Punkte ("...").

Bezugnahme auf Steuerelemente und Felder in Ausdrücken

Um Argumente von Makroaktionen bzw. Bedingungen angeben zu können muß man sich oftmals auf Steuerelemente oder Felder von Tabellen bzw. Abfragen beziehen. Prinzipiell ist dabei folgende Syntax zu beachten.

 

Zugriff auf ein Steuerelement im Formular:

Formulare![Formularname]![Steuerelementname]

 

Zugriff auf ein Steuerelement im Unterformular:

Formulare![Formularn.]![Steuerelem d. Unterfor.].Formular![Steuerelem.]

 

Zugriff auf ein Steuerelement in einem Bericht:

Berichte![Berichtname]![Steuerelementname]

 

Die richtige Syntax kann man sich mit Hilfe des Ausdruckseditor, welcher leider nicht direkt aufrufbar ist erstellen lassen. Dazu kann man z.B. über Eigenschaften eines Steuerelementes eine Bedingung auswählen welche den Aufruf des Ausdruckeditors ermöglicht. Der erstellte Ausdruck kann mit Drag&Drop dann beispielsweise in ein Makro übernommen werden.

Makro ausführen

Ein Makro kann ( auch zu Testzwecken) direkt aus dem Makrofenster bzw. aus dem Datenbankfenster per Doppelklick vollständig oder ebenfalls aus dem Makrofenster heraus per Einzelschritt-Button im Trace-Modus ausgeführt werden.

Außerdem kann man wie bereits unter Pkt. 5.1.2.2 erwähnt ein Ereignis über Eigenschaften mit einem Makro verbinden, sowie ein Makro aus einem anderen Makro heraus starten.

Gruppierung von Makros

Wie erstellt man eine Makrogruppe

In einem Makrofenster (vgl. 5.1.3) können mehrere Makros untergebracht werden. Ein neues Makro beginnt sobald man unter „Makroname" einen neuen Namen

vergibt. Die ggf. nicht eingeblendete Makronamenspalte kann über Ansicht eingeschaltet werden. Der Name unter dem nun das gesamte Fenster abgespeichert wird stellt nun den Gruppennamen dar.

Wie spricht man ein Makro einer Gruppe an

Syntax: Gruppenname.Makroname

Alle Makroaktionen auf eine Blick

 

AbbrechenEreignis Bricht das Ereignis ab, welches das Aufrufen des Makros veranlaßte
AktualisierenDaten Aktualisiert die Datenbasis des angegebenen Steuerelementes oder falls keines angegeben wurde das gesamte Objekt
AktualisierenObjekt Aktualisiert die Bilschirmanzeige des angegebenen Objektes
AnwendenFilter Wendet einen Filter auf ein Formular, Bericht, Abfrage oder SQL-WHERE-Klausel an
AnzeigenAlleDatensätze Entfernt alle ggf. gesetzten Filter im aktiven Formular und zeigt alle Datensätze an
AusführenAnwendung Startet eine Windows- oder DOS- Anwendung
AusführenCode Führt eine ACCESS-Basic Funktion aus
AusführenMakro Ruft ein Makro auf
AusführenMenübefehl Führt eine ACCESS-Menübefehl aus
AusführenSQL Führt eine Aktionsabfrage unter Benutzung von SQL-Anweisungen aus
AusgabeIn Gibt die Daten des angegeben Datenbankobjektes (Datenblatt, Formular, Bericht oder Modul) im XLS, RTF oder TXT - Format aus
AuswählenObjekt Wählt das angegebene Datenbankobjekt aus
Beenden Beendet die ACCESS-Sitzung
Drucken Druckt das aktive Objekt (Datenblatt, Bericht, Formular)
Echo Bestimmt ob die Bildschirmanzeige während eines Makros oder nach Ausführung eine Basic-Prozedur aktualisiert wird
EinblendenSymbolleiste Blendet eingebaute oder benutzerdefinierte Symbolleisten ein und aus
GeheZuDatensatz Richtet den Fokus auf den angegeben Datensatz
GeheZuSeite Richtet den Fokus im aktiven Formular auf die angegebene Seite
GeheZuSteuerelement Richtet den Fokus auf das angegeben Steuerelement. Anwendbar auf aktives Formular, Datenblatt eines Formulars, Tabelle oder Dynaset
HinzufügenMenü Fügt der benutzerdefinierten Menüleiste ein Menü hinzu
KopierenObjekt Kopiert ein ausgewähltes Datenobjekt in eine andere oder die aktuelle Datenbank
LöschenObjekt Löscht das angegebene Datenonjekt
Maximieren Vergrößert das aktive Fenster zum Vollbild
Meldung Gibt ein Meldungsdialogfeld aus
Minimieren Verkleinert das aktive Fenster zum Symbol
ÖffnenAbfrage Öffnet eine Auswahl- oder Kreuztabellenabfrage in Datenblatt-, Entwurfs-, oder Seitenansicht und führt eine Aktionsabfrage aus
ÖffnenBericht Öffnet eine Bericht in Entwurfs- oder Seitenansicht oder druckt ihn
ÖffnenFormular Öffnet eine Formular in Formular-, Entwurfs- Seiten-, oder Datenblattansicht.
ÖffnenModul Öffnet das angegebene Modul an einer bestimmten Prozedur.
ÖffnenTabelle Öffnet eine Formular in Datenblatt-, Entwurfs- oder Seitenansicht.
Positionieren Verschiebt das angegebene Fenster und/oder ändert seine Größe
Sanduhr Läßt den Mauszeiger zur Sanduhr werden, wenn und solange das Makro ausgeführt wird, in dem diese Aktion angeführt ist. Nach Ende des Makros hat der Mauszeiger wieder sein normales Aussehen
Schließen Schließt ein angegebenes oder das aktive Fenster
SendenObjekt Nimmt das angegebene MS-ACCESS-Datenblatt, -Formular, -Modul oder den Bericht in eine E-Mail-Nachricht auf; diese Nachricht kann angezeigt und versendet werden
SetzenWert Legt für ein Feld, Steuerelement oder eine Eigenschaft (in einem Formular, einem Datenblatt eines Formulars oder einem Bericht) einen Wert fest
Signalton Erzeugt einen Signalton
StopAlleMakros Beendet alle laufenden Makros
StopMakro Beendet das laufende Makro
SuchenDatensatz Sucht nach dem ersten Datensatz, welcher die durch die Argumente festgelegten Kriterien erfüllt
SuchenWeiter Sucht nach dem nächsten Datensatz der den zuletzt zur Aktion „SuchenDatensatz" bzw. im Dialogfeld „Suchen" angegebenen Argumenten genügt
Tastaturbefehle Sendet Tastaturanschläge an ACCESS oder eine andere aktive Windows-Anwendung
TransferArbeitsblatt Im- oder exportiert eine Tabelle
TransferDatenbank Im- oder exportiert Daten von/nach einer anderen Datenbank
TransferText Im- oder exportiert Text von/nach einer Textdatei
UmbenennenObjekt Benennt ein im Datenbankfenster ausgewähltes (markiertes) Objekt um
Warnmeldungen Legt fest, ob die Systemmeldungen angezeigt werden sollen oder nicht
Wiederherstellen Stellt die ursprüngliche Größe eines zum Symbol verkleinerten oder zum Vollbild vergrößerten Fensters wieder her

Tabelle: Alle Makroaktionen auf einen Blick

Das Autoexec-Macro

 

Um gewisse Einstellungen schon beim Start der Datenbank zu erhalten kann man die gewünschten Aktionen in einem Makro ablegen und dieses „AUTOEXEC" nennen. Diese Makro wird nun immer beim Start der Datenbank ausgeführt. Das Ausführen von „AUTOEXEC" kann man durch drücken der „Umschalt"-Taste während des Startvorganges unterbinden.

 

Achtung: Bei noch nicht konvertierten Datenbanken der Versionen 1.x muß die Umschalttaste auch während der Hinweismeldung über die altere Access-Version gedrückt bleiben.

Außerdem kann man einer Datenbank welche mittels Programmzeilenparameter beim Start von Access gestartet wird über den Parameter /x ein anderes StartUp-Makro zuordnen.

 

z.B.: msaccess.exe beispiel.mdb /x MeineStartMakro

 

Mit Hilfe dieser Zeile wird beim Start von Access die Datenbank „beispiel.mdb" gestartet, und dabei automatisch das Makro „MeinStartMakro" ausgeführt

Makros durch Tastendrücken ausführen

 

Um Makros per Tastaturkürzel ausführen zu können muß ein sogenanntes „Tastaturbelegungsmakro" erstellt werden. In diesem Makro erstellt man für jedes zu belegendes Tastaturkürzel ein Makro mit dem Namen des Tastaturkürzels !!!! (Syntax vgl. Tabelle S. * ). Als Aktion kann man direkt die gewünschten Funktionen auswählen oder per „AusführenMakro" andere Makros starten. Den Namen unter dem diese Makrogruppe abgespeichert wird muß man nun noch über den Befehl „Optionen" im Menü „Ansicht" in der Kategorie „Tastatur" als Eigenschaft bei „Tastaturbelegung" eintragen.

 

 

Syntax für den Makronamen belegte Tastenkombination

^A oder ^1

Strg + beliebige Buchstaben- oder Zifferntaste

{F1}

Eine Funktionstaste (hier F1)

^{F1}

Strg + Eine Funktionstaste (hier F1)

+{F1}

Umschalt + Eine Funktionstaste (hier F1)

{EINFG}

Einfg

^{EINFG}

Strg + Einfg

+{EINFG}

Umschalt + Einfg

{DELETE}

Entf

^{DELETE}

Strg + Entf

+{DELETE}

Umschalt + Entf

Tabelle: Syntax für Tastaturbelegungsmakro

 

Programmieren in Access Basic

 

Datentypen

Elementare Datentypen in Access Basic

 

In der folgenden Tabelle sind die elementaren Datentypen, welche von Access Basic unterstützt werden, sowie deren Typenkennzeichen ( optionales Variablennamensuffix), Speichergrößen und Bereiche aufgelistet:

 

Datentyp Kenn-

zeich.

Bytes Bereich
Integer

(Ganzzahl)

% 2 -32.768 bis 32.767
Long

(lange Ganzzahl)

& 4 -2.147.483.648 bis 2.147.483.647
Single

(Gleitkommazahl mit einfacher Genauigkeit)

! 4 für negative Werte

-3,402823E38 bis -1,401298E-45

für positive Werte

1,401298E-45 bis 3,402823E38

und 0

Double

(Gleitkommazahl mit doppelter Genauigkeit)

# 8 für negative Werte

-1,79769313486232E308 bis -4,94065645841247E-324

für positive Werte

4,94065645841247E-324 bis 1,79769313486232E308

und 0

Currency

(Währung, skalierte Ganzzahl)

@ 8 -922.337.203.685.477,5808 bis 922.337.203.685.477,5807
String

(Zeichenfolge)

$ 1 je

Zeich.

0 bis 65.535 Bytes

(Etwas zusätzlicher Speicherbedarf ist erforderlich.)

Variant Keines nach

Bedarf

Jeder beliebige numerische Wert bis zum Bereich eines Wertes vom Typ "Double" oder ein beliebiger Zeichentext
Benutzerdefiniert

(unter Verwendung von Type)

Keines Anzahl,

die von

den Elementen

benötigt

wird

Der Bereich jedes Elements ist gleich dem Bereich seines elementaren Datentyps, wie oben angeführt.

Tabelle: elementare Datentypen

Deklarieren von Variablen (incl. Datenfeldern)

Implizite Deklaration

 

Man kann Variablen impliziert deklarieren, in dem man sie einfach im laufenden Programm benutzt ohne sie vorher explizit deklariert hat. Einer implizit deklarierten Variable wird der Datentyp Variant zugewiesen.

Die Lebensdauer ist auf die Dauer der Prozedur welche die Variable beinhaltet beschränkt.

Explizite Deklaration

 

Zur expliziten Variablendeklarierung benutzt man die Anweisungen:

Dim, ReDim, Global und Static

Diese Anweisungen deklarieren jeweils eine Variable, ihre Anwendung ist jedoch von dem gewünschten Gültigkeitsbereich abhängig. Falls Indizes hinter den Anweisungen angegeben werden erzeugt man Datenfelder (Arrays).

Die Anweisung Dim

Die Anweisung Dim wird auf Modulebene und auf Prozedurebene verwendet, um Variablen zu deklarieren und ihnen Speicherplatz zuzuweisen.

Syntax:

Dim Variable [([Indizes])][As Datentyp][,Variable][([Indizes])][As Datentyp]…

 

Indizes := [Untergrenze To]Obergrenze[,[Untergrenze To]Obergrenze]

 

Argument Beschreibung
   
Variable Name einer Variablen.
Indizes Dimensionen einer Datenfeldvariablen. Sie können mehrere Dimensionen deklarieren. Die Syntax von Indizes wird nachstehend beschrieben.

 

 

As Datentyp Reserviertes Wort, das zur Deklaration des Datentyps einer Variablen verwendet wird. Datentyp kann "Integer", "Long", "Single", "Double", "Currency", "String" (für Zeichenfolgen variabler Länge), "String" * Länge (für Zeichenfolgen fester Länge), "Variant", ein benutzerdefinierter Datentyp oder ein Objektdatentyp (eine Variable mit einem Objektdatentyp darf nicht als Datenfeld deklariert werden) sein. Verwenden Sie für jede zu definierende Variable eine separate As-Klausel Datentyp.

 

Das reservierte Wort To bietet die Möglichkeit, sowohl die unteren als auch die oberen Indexgrenzen einer Datenfeldvariablen anzugeben.Datenfeldindizes können auch negativ sein. To kann verwendet werden, um einen beliebigen Indexbereich aus dem Bereich von -32.768 bis 32.767 festzulegen. Die Anzahl zulässiger Datenfelddimensionen in einer Anweisung Dim ist auf 60 begrenzt.

Die Anweisung Global

Die Anweisung Global wird auf Modulebene verwendet, um globale Variablen (Variablen, die für alle Prozeduren in allen Modulen verfügbar sind) zu deklarieren und ihnen Speicherplatz zuzuweisen.

Syntax

Global Variable[([Indizes])] [As Datentyp] [, Variable[([Indizes])] [As Datentyp] ] …

Anweisung ReDim

Man kann die Anweisung Dim bzw. Global auch mit leeren Klammern verwenden, um dynamische Datenfelder zu deklarieren. Verwenden Sie nach der Deklaration eines dynamischen Datenfeldes die Anweisung ReDim innerhalb einer Prozedur, um die Anzahl der Dimensionen und Elemente im Datenfeld zu definieren. Wenn man versucht, eine Dimension für eine Datenfeldvariable, deren Größe bereits deklariert wurde, erneut zu deklarieren, tritt ein Fehler auf.

Variablen werden in Kompilierzeit initialisiert. Dabei werden numerische Variablen mit dem Wert 0 und Variablen vom Datentyp "Variant" mit dem Varianttyp "Leer" initialisiert; Zeichenfolgen variabler Länge werden als leere Zeichenfolgen ("") initialisiert, und Zeichenfolgen fester Länge werden mit ANSI-Nullen (Chr(0)) gefüllt. Die Felder von Variablen eines benutzerdefinierten Datentyps werden initialisiert, als handle es sich um separate Variablen.

Die Anweisung Static

Die Anweisung Static wird auf Prozedurebene verwendet, um eine statische Variable zu deklarieren und ihr Speicherplatz zuzuordnen.

Syntax

Static Variable[([Indizes])] [As Datentyp] [, Variable[([Indizes])] [As Datentyp] ] …

 

 

Man verwendet Static in nichtstatischen Prozeduren, um statische Variablen explizit zu deklarieren. Man muß Static verwenden, um in nichtstatischen Prozeduren ein Datenfeld mit fester Größe zu deklarieren. In statischen Prozeduren kann man wahlweise Static oder Dim verwenden, um statische Variablen zu deklarieren.

 

Achtung:

Die Anweisung Static und das reservierte Wort Static haben eine unterschiedliche Auswirkung auf die Gültigkeitsdauer von Variablen. Wenn man eine Prozedur unter Verwendung des reservierten Wortes Static deklariert (wie in Static Sub Verkaufszahlen), wird allen lokalen Variablen innerhalb der Prozedur einmal Speicherplatz zugewiesen, und der Wert der Variablen bleibt während der gesamten Ausführung des Programms erhalten. Bei nichtstatischen Prozeduren wird den Variablen bei jedem Aufruf der Prozedur Speicherplatz zugewiesen, wobei dieser Speicherplatz beim Beenden der Prozedur wieder freigegeben wird. Die Anweisung Static wird für die Deklaration von Variablen in nichtstatischen Prozeduren verwendet, damit diese ihren Wert über die gesamte Ausführungszeit des Programms bewahren.

Selbstdefinierte Datentypen

Die Type-Anweisung (Syntax)

 

Erstellt einen benutzerdefinierten Datentyp, der ein oder mehrere Elemente enthält.

 

Type Benutzertyp

Elementname As Datentyp

[ Elementname As Datentyp]

. . .

End Type

Argumente der Anweisung Type

 

Argument Beschreibung
Benutzertyp Name eines benutzerdefinierten Datentyps. Es gelten die Standardregeln für die Variablenbenennung.
Elementname Name eines Elements des benutzerdefinierten Datentyps. Es gelten die Standardregeln für die Variablenbenennung.
Datentyp Einer der folgenden Datentypen: "Integer", "Long", "Single", "Double", "Currency", "String" (für Zeichenfolgen variabler Länge), "String" * Länge (für Zeichenfolgen fester Länge), "Variant" oder ein anderer, benutzerdefinierter Datentyp. Für das Argument Datentyp darf jedoch kein Objektdatentyp verwendet werden.

Tabelle: Argumente der Anweisung TYPE

 

 

Die Anweisung Type kann nur im Deklarationsbereich eines Moduls verwendet werden. Nachdem man unter Verwendung der Anweisung Type einen benutzerdefinierten Datentyp deklariert hat, kann man im Deklarationsbereich oder in jeder Prozedur des Moduls eine Variable dieses Datentyps deklarieren. Verwenden Sie die Anweisungen Dim, Global oder Static, um eine Variable eines benutzerdefinierten Datentyps zu deklarieren. Zeilennummern und Zeilenmarken sind in einem Type...End Type-Block nicht erlaubt. Benutzerdefinierte Datentypen werden oft in Verbindung mit Datensätzen verwendet, da Datensätze häufig aus mehreren zusammengehörigen Elementen verschiedener Datentypen bestehen.

 

Beispiel: Verwendung statischer Datenfelder in einem benutzerdefinierten Datentyp.

 

Type PLZListe

PLZ (1 To 500) As Integer 'Statisches Datenfeld deklarieren.

Ort As String * 30

End Type

Dim Schweiz(1 To 500) As PLZListe

 

Im obigen Beispiel enthält PLZListe das statische Datenfeld PLZ, und das Datenfeld Schweiz hat die gleiche Struktur wie PLZListe. Wenn man ein statisches Datenfeld innerhalb eines benutzerdefinierten Datentyps deklariert, muß man dessen Dimensionen mit numerischen Konstanten, und nicht mit Variablen, deklarieren.

Konstanten

Symbolische Konstanten kann man über die Anweisung Const deklarieren. Diesen Konstanten wird bei der Deklaration ein Wert zugewiesen. Der Wert kann nur gelesen werden.

Syntax:

Const Konstantenname = Wert

Vergleich von Datentypen

Microsoft Access erkennt mehrere sich überlappende Arten von Datentypen. Der von Ihnen verwendete Datentyp hängt davon ab, mit welchem Teil von Microsoft Access Sie arbeiten. Es gibt vier verschiedene Kontextsituationen mit jeweils eigenen Arten von Datentypen: die Entwurfsansicht einer Tabelle, das Dialogfeld Abfrageparameter, Access Basic und die SQL-Ansicht einer Abfrage.

 

Die folgende Tabelle enthält einen Vergleich der vier Arten von Datentypen im jeweils zugehörigen Kontext. Die erste Spalte enthält die Einstellungen der Eigenschaft "Felddatentyp", die in der Entwurfsansicht einer Tabelle zur Verfügung stehen, und die fünf Einstellungen der Eigenschaft "Feldgröße" für den Datentyp "Zahl". Die zweite Spalte enthält die Datentypen zum Entwurf von Parameterabfragen, die im Dialogfeld Abfrageparameter zur Verfügung stehen. Die dritte Spalte enthält die Access Basic-Datentypen. Die vierte Spalte enthält die Microsoft Access SQL-Datentypen, wie sie durch die Microsoft Jet Datenbank-Engine definiert sind, zusammen mit den zulässigen Synonymen.

 

Tabellenfelder Abfrage-

parameter

Access Basic Microsoft AccessSQL und Synonyme
Nicht unterstützt Binär Nicht unterstützt BINARY (Siehe Anmerkungen)VARBINARY
Ja/Nein Ja/Nein Integer BITBOOLEAN, LOGICAL, LOGICAL1, YESNO
Zahl

Feldgröße = Byte

Byte Integer BYTEINTEGER1
Zähler Nicht unterstützt Long COUNTERAUTOINCREMENT
Währung Währung Currency CURRENCYMONEY
Datum/Zeit Datum/Zeit Variant (Siehe Anmerkungen) DATETIMEDATE, TIME, TIMESTAMP
Zahl

Feldgröße = Single

Single Single SINGLE, FLOAT4, IEEESINGLE, REAL
Zahl

Feldgröße = Double

Double Double DOUBLEFLOAT, FLOAT8, IEEEDOUBLE, NUMBER, NUMERIC
Zahl

Feldgröße = Integer

Integer (Siehe Anmerkungen) Integer (Siehe Anmerkungen) SHORTINTEGER2, SMALLINT
Zahl

Feldgröße = Long Integer

Long Integer Long LONG (Siehe Anmerkungen)INT, INTEGER, INTEGER4
OLE-Objekt OLE-Objekt String LONGBINARYGENERAL, OLEOBJECT
Memo Memo String LONGTEXTLONGCHAR, MEMO, NOTE
Text Text String TEXTALPHANUMERIC, CHAR, CHARACTER, STRING, VARCHAR
Nicht unterstützt Wert Variant VALUE (Siehe Anmerkungen)

Tabelle: Datentypenvergleich (Tabellenfelder, Abfrageparameter, Access Basic, Microsoft AccessSQL und Synonyme)

Besonderheiten verschiedener Datentypen

BINARY

Microsoft Access selbst verwendet den Datentyp BINARY nicht. Er wird nur für den Fall erkannt, daß er in eingebundenen Tabellen aus anderen Datenbankprodukten verwendet wird, die den Datentyp BINARY unterstützen.

DATUM

Wenn Sie eine Access Basic-Variable deklarieren möchten, die Angaben zu Datum und Uhrzeit speichern soll, deklarieren Sie sie mit dem Datentyp "Variant". Wenn Sie ein Tabellenfeld mit dem Typ "Datum/Zeit" in der SQL-Ansicht oder der Entwurfsansicht einer Tabelle erstellen und dann die Eigenschaft "Type" des Feldes in Access Basic überprüfen, entspricht die zurückgegebene ganzzahlige Konstante dem Wert der (durch die Jet Datenbank-Engine definierten) Konstanten DB_DATE und nicht dem Wert der Datumskonstanten V_DATE des Datentyps "Variant". Die durch diese beiden Konstanten dargestellten Variablentypen sind jedoch vollständig kompatibel zueinander, und es tritt kein Fehler aufgrund nicht übereinstimmender Typen auf, wenn eine Variable vom Typ "Variant" Daten aus einem Datum/Zeit-Feld in einer Microsoft Access-Tabelle oder -Abfrage enthält.

INTEGER

Der Datentyp "Integer" in Microsoft Access SQL entspricht nicht dem Datentyp "Integer" für Tabellenfelder, Abfrageparameter oder Access Basic. In Microsoft Access SQL entspricht "Integer" statt dessem einem "Long Integer" bei Tabellenfeldern und Abfrageparametern und dem Datentyp "Long" von Access Basic.

VALUE

Das reservierte Wort VALUE kennzeichnet keinen der von der Jet Datenbank-Engine definierten Datentypen. In Microsoft Access- oder SQL-Abfragen kann VALUE jedoch als zulässiges Synonym für den Access Basic-Datentyp "Variant" angesehen werden.

Konvertierungsfunktionen für Datentypen

Funktionssyntax

 

ZCurrency(Ausdruck) CCur(Ausdruck)

ZDouble(Ausdruck) CDbl(Ausdruck)

ZInteger(Ausdruck) CInt(Ausdruck)

ZLong(Ausdruck) CLng(Ausdruck)

ZSingle(Ausdruck) CSng(Ausdruck)

ZString(Ausdruck) CStr(Ausdruck)

ZVariant(Ausdruck) CVar(Ausdruck)

 

Achtung:

In Access Basic können Sie nur die englischen Funktionsnamen (aus der rechten Spalte) verwenden.

 

Das Argument Ausdruck kann ein beliebiger gültiger Zeichenfolgenausdruck oder ein numerischer Ausdruck sein. Die nachfolgende Tabelle zeigt, welcher Datentyp von den einzelnen Konvertierungsfunktionen erzeugt wird:

Funktionsweise der einzelnen Konvertierungsfunktionen

 

Funktion Von in
ZCurrency (CCur) einem beliebigen gültigen Ausdruck Currency
ZDouble (CDbl) einem beliebigen gültigen Ausdruck Double
ZInteger (CInt) einem beliebigen gültigen Ausdruck Integer
ZLong (CLng) einem beliebigen gültigen Ausdruck Long
ZSingle (CSng) einem beliebigen gültigen Ausdruck Single
ZString (CStr) einem beliebigen gültigen Ausdruck String
ZVariant (CVar) einem beliebigen gültigen Ausdruck Variant

Tabelle: Funktionsweise der Konvertierungsfunktionen

 

Die Konvertierungsfunktionen ZCurrency (CCur), ZDouble (CDbl), ZInteger (CInt), ZLong (CLng) und ZSingle (CSng) für numerische Ausdrücke steuern den Datentyp eines numerischen Ausdrucks. Mit ZCurrency (CCur) können Sie z.B. das Rechnen mit Währungswerten (mit größerer Genauigkeit und einem kleineren Bereich) erzwingen, wo normalerweise ganzzahlige Werte oder Werte mit einfacher oder doppelter Genauigkeit erscheinen würden. ZInteger (CInt) und ZLong (CLng) erzwingen das Rechnen mit Ganzzahlen, wo normalerweise Wärungswerte oder Werte mit einfacher oder doppelter Genauigkeit erscheinen würden. ZDouble (CDbl) und ZSingle (CSng) erzwingen das Rechnen mit Werten einfacher oder doppelter Genauigkeit, wo normalerweise Währungswerte oder ganzzahlige Werte erscheinen würden.

Da ZInterger (CInt) und ZLong (CLng) numerische Ausdrücke in Ganzzahlen konvertieren, können Sie diese Funktionen dazu verwenden, Dezimalzahlen zu runden.

 

Hinweis

Alle Konvertierungsfunktionen für Datentypen stellen selbsterklärenden Code zur Verfügung, der angibt, daß das Ergebnis einer Berechnung nicht im Standarddatentyp des Ergebnisses sondern als besonderer Datentyp ausgedrückt werden soll.

Liegt der Wert für Ausdruck bei den Funktionen ZCurrency (CCur), ZInteger (CInt), ZLong (CLng) und ZSingle (CSng) außerhalb des erlaubten Bereichs, tritt ein Laufzeitfehler auf und eine Meldung erscheint, es sei denn, das Programm verfügt über eine entsprechende Fehlerbehandlungsroutine.

 

 

Anmerkung

ZInteger (CInt) unterscheidet sich von den Funktionen Fix und Int, die die Dezimalstellen von Zahlen nicht runden, sondern abschneiden. Siehe hierzu auch das Beispiel zur Funktion Int. Wenn die Dezimalstelle genau 0,5 beträgt, rundet ZInteger (CInt) immer auf den nächsten geraden Wert. 0,5 wird z.B. auf 0 abgerundet, 1,5 dagegen wird auf 2 aufgerundet.

Felder in Tabellen

 

Für Tabellenfelder kann man den Datentyp der in einem Tabellenfeld gespeicherten Daten festlegen.

Mögliche Datentypeinstellungen

 

Einstellung Beschreibung
Text (Standardeinstellung) Text mit bis zu 255 Zeichen oder in der mit der Eigenschaft "Feldgröße" definierten Länge. Gültig ist der jeweils kürzere Wert.
Memo Text mit einer Länge von maximal 64.000 Bytes. Felder vom Datentyp "Memo" können nicht indiziert werden.
Zahl Beliebiger numerischer Wert. Weitere Informationen finden Sie unter der Eigenschaft "Feldgröße".
Datum/Zeit Datums- und Zeitwerte für die Jahre 100 bis 9999.
Währung Mit einer Genauigkeit von bis zu 15 Stellen und 4 Dezimalstellen.
Zähler Zahl, die von Microsoft Access automatisch um 1 erhöht wird, wenn ein neuer Datensatz einer Tabelle hinzugefügt wird. Felder vom Datentyp "Zähler" können nicht aktualisiert werden.
Ja/Nein "Ja"- und "Nein"-Werte und Felder, die nur einen der beiden Werte enthalten. Felder vom Datentyp "Ja/Nein" können nicht indiziert werden.
OLE-Objekt Objekt, wie z.B. ein Microsoft Excel-Arbeitsblatt oder eine Microsoft Draw-Grafik, das von einer Objekt-Anwendung erstellt wurde. Die Größe kann maximal 1 Gigabyte betragen. Felder vom Datentyp "OLE-Objekt" können nicht indiziert werden.

Tabelle: Datentypeinstellungen in Tabellenfeldern

 

Diese Eigenschaft kann nur in der Spalte "Felddatentyp" in der Entwurfsansicht einer Tabelle eingestellt werden. Sie ist im Eigenschaftenfenster, in Makros oder in Access Basic nicht verfügbar.Sie müssen den Datentyp für jedes Feld in einer Tabelle angeben. Jedes Feld kann nur Daten eines einzigen Datentyps enthalten.

Anmerkung

 

Verwenden Sie den Datentyp "Währung" für Felder, mit denen Sie viele Berechnungen mit Daten durchführen möchten, die bis zu vier Dezimalstellen haben. Für Felder vom Datentyp "Single" und "Double" (Gleitkommazahlen einfacher und doppelter Genauigkeit) sind Gleitkommaberechnungen erforderlich. Der Datentyp "Währung" basiert auf einer schnelleren Festkommaberechnung, bei der Rundungsfehler vermieden werden.

Vorsicht:

Das Ändern eines Felddatentyps nach dem Eingeben von Daten in eine Tabelle führt unter Umständen zu einem längeren Datenumwandlungsvorgang, wenn Sie die Tabelle speichern. Wenn Datentypen nicht fehlerfrei umgewandelt werden können, kann es zu Datenverlust kommen.

 

Gültigkeitsbereiche, Lebensdauer

Gültigkeitsbereich

 

Variablen können die folgenden drei verschiedene Gültigkeitsbereiche haben:

 

Prozedurebene: Alle implizit oder explizit deklarierten Variablen einer Prozedur

Modulebene: Im Deklarationsteil eines Moduls mittels Dim deklarierten Variablen

Globale Ebene: Im Deklarationsteil eines Moduls mittels Global deklarierten Variablen

Lebensdauer

 

Gültigkeitsbereich und Lebensdauer von Variablen sind zu unterscheiden. Prinzipiell haben lokale Variablen nur die Lebensdauer der zugehörigen Prozedur. Variablen mit modularen oder globalen Gültigkeitsbereich bleiben jedoch erhalten bis die Datenbank geschlossen wird. Mit der Anweisung Static kann man Variablen eine entsprechende Lebensdauer zuweisen. Static vor einer Prozedur verschafft allen Variablen der Prozedur eine entsprechende Lebensdauer.

 

 

Kontrollstrukturen

 

Voraussetzungen

 

Anweisungen

Eine Anweisung besteht aus dem Inhalt einer Zeile oder einer Kontrollstruktur. Innerhalb einer Zeile können, wie von Basic her bekannt, mehrere Befehle getrennt durch einen Doppelpunkt aufgeführt werden.

 

Befehle

Befehle können Prozedur-, Funktions-, Makroaufrufe , Zuweisungen oder die GoTo-Anweisung sein.

 

Wahrheitswerte

Die vordefinierten Konstanten von Access-Basic TRUE (Wahr; -1) und FALSE (Falsch; 0) gelten auch bei Auswertung von Bedingungen innerhalb der entsprechenden Kontrollstrukturen. Bei der Verwendung der Konstanten werden auch nur diese Werte anerkannt. Im Gegensatz dazu gilt für das Zutreffen einer Bedingung , daß der Wert dieser ¹ 0 ist.

 

Beispiele :

Dim a As Integer

 

While a

...

Wend

 

Der While-Block wird solange ausgeführt, wie a ¹ 0 ist.

 

If a = TRUE Then

...

End If

 

Der Anweisungsblock der Then-Klausel wird nur dann ausgeführt, wenn a = -1 ist.

 

Zeichenfolgenausdruck

Die Anweisung Option Compare beeinflußt Zeichenfolgenvergleiche.

 

 

GoTo-Anweisung

Führt innerhalb einer Prozedur eine unbedingte Verzweigung zur angegebenen Zeile oder Marke durch.

 

Syntax

GoTo {Zeilenmarke | Zeilennummer}

 

Bemerkungen

Die Argumente Zeilenmarke und Zeilennummer geben die Zeile an, die als nächste auszuführen ist. Das Argument Zeilenmarke muß mit einem Buchstaben beginnen, mit einem Doppelpunkt (:) enden und kann bis zu 40 Zeichen lang sein. Es darf kein in Access Basic reserviertes Wort sein. Jede Zeilenmarke muß innerhalb des Moduls, in dem sie verwendet wird, eindeutig bestimmt sein. Zeilenmarken können Groß- und Kleinbuchstaben enthalten. Zeilenmarken können in jeder beliebigen Spalte beginnen, vorausgesetzt, sie sind die ersten Zeichen (nicht Leerzeichen) der jeweiligen Zeile. Das Argument Zeilennummer kann bis zu 40 Zeichen lang sein. Es darf nur Dezimalziffern (0-9) enthalten und nicht mit einem Doppelpunkt enden. Jede Zeilennummer muß in dem Modul, in dem sie erscheint, eindeutig bestimmt sein. Zeilennummern können in jeder beliebigen Spalte beginnen, vorausgesetzt, sie sind die ersten Zeichen (nicht Leerzeichen) der jeweiligen Zeile. Wenn der Wert der Zeilennummer größer als 65.529 ist, kann die Funktion FZeile (Erl) die Zeilennummer, in der ein Fehler auftrat, nicht ordnungsgemäß ausgeben.

GoTo kann nur zu Zeilen innerhalb der Prozedur, die die Anweisung GoTo enthält, verzweigen.

If...Then...Else-Anweisung

Erlaubt eine bedingte Ausführung von Anweisungen aufgrund der Auswertung eines Ausdrucks.

 

Syntax 1

If Bedingung Then Then-Teil [Else Else-Teil]

 

 

Syntax 2

If Bedingung1 Then

[Anweisungsblock1]

[ElseIf Bedingung2 Then

[Anweisungsblock2] ]

. . .

[Else

[Anweisungsblockn] ]

End If

 

Bemerkungen

Syntax 1:

Die einzeilige Form der Anweisung eignet sich besonders für kurze, einfache Bedingungsüberprüfungen. Sie setzt sich aus folgenden drei Teilen zusammen:

 

Teil Beschreibung
Bedingung Einer von zwei Ausdrucksarten:

Ein numerischer Ausdruck oder ein Zeichenfolgenausdruck, der True (Wahr; ¹ 0) oder False (Falsch, 0 oder Wert „Null") ausgibt (vgl. 2.1).

Ein einzelner Ausdruck der Form If TypeOf Objekt Is Objekttyp. Das Objekt ist eine Steuerelementvariable und Objekttyp kann einer der folgenden Typen sein: BoundObjectFrame (Gebundenes Objektfeld), CheckBox (Kontrollkästchen), ComboBox (Kombinationsfeld), CommandButton (Befehlsschaltfläche), Label (Bezeichnungsfeld), Line (Linie), ListBox (Listenfeld), ObjectFrame (Objektfeld für eingebettete und verknüpfte Objektfelder und Diagramme), OptionButton (Optionsfeld), OptionGroup (Optionsgruppe), PageBreak (Seitenumbruch), Rectangle (Rechteck), SubForm (Unterformular), SubReport (Unterbericht), TextBox (Textfeld) oder ToggleButton (Umschaltfläche).

Then-Teil, Else-Teil Anweisungen oder Verzweigungen, die ausgeführt werden, wenn Bedingung Wahr (Then-Teil) oder Falsch (Else-Teil) ist.

 

Der Then-Teil und Else-Teil haben beide die folgende Syntax:

{Anweisungen | [GoTo] Zeilennummer | GoTo Zeilenmarke}

 

 

Die Syntax für den Then-Teil und den Else-Teil setzt sich aus drei Teilen zusammen:

 

Teil Beschreibung
Anweisungen Eine oder mehrere Access Basic-Anweisungen, die durch Doppelpunkte (:) getrennt sind.
Zeilennummer Eine gültige Zeilennummer des Programms.
Zeilenmarke Eine gültige Zeilenmarke des Programms.

 

Bei der Verwendung von Zeilennummern muß im Gegensatz zu Zeilenmarken GoTo nicht angeben werden. Der Then-Teil wird ausgeführt, wenn die Bedingung Wahr ist, oder wenn das Objekt dem in Objekttyp angegebenen Typ entspricht. Wenn die Bedingung Falsch ist oder das Objekt nicht dem in Objekttyp angegebenen Typ entspricht, wird der Else-Teil ausgeführt. Ist keine Else-Klausel vorhanden, wird das Programm mit der nächsten Anweisung fortgesetzt. Sie können mehrere Anweisungen von einer Bedingung abhängig machen. Diese Anweisungen müssen jedoch, wie in der folgenden Anweisung, in derselben Zeile und durch Doppelpunkte getrennt, angegeben werden:

If Betrag > 1000 Then Betrag = Betrag * 1,20 : Summe = Summe + Betrag : GoTo Marke1

 

Syntax 2

Die Blockform von If...Then...Else ist strukturierter und flexibler als die einzeilige Form. Sie ist im allgemeinen leichter zu lesen und zu warten, und die Fehlersuche ist einfacher. Sie setzt sich aus folgenden drei Teilen zusammen:

 

Teil Beschreibung
Bedingung1, Bedingung2 Die Bedingungen werden wie in der einzeiligen Form verwendet.
Anweisungsblock1 - n Eine oder mehrere Access Basic-Anweisungen in einer oder mehreren Zeilen.

 

Beim Ausführen eines If-Blocks überprüft Access Basic Bedingung1, den ersten numerischen oder TypeOf-Ausdruck. Wenn der Ausdruck Wahr ist, oder wenn das Objekt dem in Objekttyp angegebenen Typ entspricht, werden die nach der Anweisung Then folgenden Anweisungen ausgeführt. Wenn der erste Ausdruck Falsch ist, oder wenn das Objekt nicht dem in Objekttyp angegebenen Typ entspricht, beginnt Access Basic als nächstes, alle ElseIf-Bedingungen nacheinander auszuwerten. Sobald Access Basic eine wahre Bedingung findet, oder eines der Objekte einem der Objekttypen entspricht, werden die der entsprechenden Anweisung Then folgenden Anweisungen ausgeführt. Wenn keine der ElseIf-Bedingungen Wahr ist, oder keines der Objekte dem zugehörigen Objekttyp entspricht, werden die nach der Anweisung Else folgenden Anweisungen ausgeführt. Nach dem Ausführen der Anweisungen, die nach Then oder Else folgen, wird das Programm mit der Anweisung fortgesetzt, die nach End If folgt.

Die Else- und ElseIf-Blöcke sind nicht unbedingt erforderlich. Es können beliebig viele ElseIf-Klauseln in einem If-Block verwendet werden. Diese dürfen jedoch nicht nach einer Else-Klausel stehen. Jeder Anweisungsblock kann wiederum verschachtelte If-Blöcke enthalten. Access Basic prüft, was nach dem reservierten Wort Then steht, um zu bestimmen, ob eine einzeilige Anweisung If oder ein If-Block folgt. Steht nach Then etwas anderes als ein Kommentar, wird die Anweisung als einzeilige Anweisung If interpretiert. Eine Anweisung If in Blockform muß die erste Anweisung in der Zeile sein. Vor den Teilen Else, ElseIf und End If der Anweisung darf nur eine Zeilennummer oder eine Zeilenmarke stehen. Der Block muß mit einer Anweisung End If abgeschlossen werden. Ausdrücke der Form If TypeOf Objekt Is Objekttyp, normale numerische Ausdrücke sowie Zeichenfolgenausdrücke können nicht mit demselben Bedingungsausdruck ausgewertet werden, so daß ein separater ElseIf-Block verwendet werden sollte.

 

Beispiel:

If Betrag > 11000 And Betrag <= 1000000 Then

...

ElseIf TypeOf VarArt Is ListBox Then

...

End If

Select Case-Anweisung

Führt je nach Wert eines Ausdrucks einen von mehreren Anweisungsblöcken aus.

 

Syntax

Select Case Testausdruck

[Case Ausdrucksliste1

[Anweisungsblock1] ]

[Case Ausdrucksliste2

[Anweisungsblock2] ]

. . .

[Case Else

[Anweisungsblockn] ]

End Select

 

Bemerkungen

Die Anweisung Select Case verwendet folgende Argumente:

 

Argument Beschreibung
Testausdruck Jeder beliebige numerische Ausdruck oder Zeichenfolgenausdruck.
Anweisungsblock Die Elemente Anweisungsblock1 bis Anweisungsblockn bestehen aus einer beliebigen Anzahl von Anweisungen in einer oder mehreren Zeilen.
Ausdrucksliste Diese Elemente können in einer dieser drei Formen auftreten : Ausdruck [, Ausdruck]

Ausdruck To Ausdruck

Is Vergleichsoperator-Ausdruck

 

Das Argument Ausdrucksliste besteht aus folgenden Teilen:

 

Teil Beschreibung
Ausdruck Ein beliebiger numerischer Ausdruck oder Zeichenfolgenausdruck. Der Datentyp des Ausdrucks muß mit dem Datentyp von Testausdruck kompatibel sein. (Der Datentyp des Ausdrucks wird in den Datentyp von Testausdruck umgewandelt. Wenn Testausdruck z.B. ein Wert vom Datentyp "Integer" ist, kann Ausdrucksliste einen Wert vom Datentyp "Double" enthalten.)
Vergleichsoperator Ein beliebiger zulässiger Vergleichsoperator, ausgenommen Wie (Like).

 

Wenn Testausdruck der einer Case-Klausel zugeordneten Ausdrucksliste entspricht, wird der Anweisungsblock, der dieser Case-Klausel folgt, bis zur nächsten Case-Klausel ausgeführt. Bei der letzten Case-Klausel wird der folgende Anweisungsblock bis zur Anweisung End Select ausgeführt. Anschließend springt die Programmsteuerung zu der Anweisung, die der Anweisung End Select folgt. Wird das reservierte Wort To zum Anzeigen eines Wertebereichs verwendet, muß der kleinere Wert vor To stehen. Vergleichsoperatoren können nur in Verbindung mit dem reservierten Wort Is verwenden werden.

Sobald Case Else verwendet wird, werden die zugehörigen Anweisungen nur dann ausgeführt, wenn Testausdruck mit keiner der anderen Case-Auswahlen übereinstimmt. Obwohl nicht unbedingt erforderlich, empfiehlt es sich doch, eine Anweisung Case Else in einem Select Case-Block zu verwenden, um unvorhergesehene Werte von Testausdruck abzufangen. Wenn keine Anweisung Case Else vorhanden ist, und keiner der in den Case-Klauseln aufgelisteten Ausdrücke dem Testausdruck entspricht, wird die Programmausführung mit der Anweisung fortgesetzt, die auf End Select folgt. Sie können in jeder Case-Klausel mehrere Ausdrücke oder Bereiche verwenden. Z.B.:

Case 100 To 1000, 2000 To 3000, 3300, 3400, Is > MaxBetrag

Sie können auch Bereiche und mehrere Ausdrücke für Zeichenfolgen definieren. Im folgenden Beispiel vergleicht Case Zeichenfolgen, die genau der Zeichenfolge „Hallo" entsprechen, Zeichenfolgen, die in alphabetischer Reihenfolge zwischen „Lehmann" und „Meier" liegen und Werte, die dem aktuellen Wert von ZeichenString$ entsprechen:

Case "Hallo", "Lehmann" To "Meier", ZeichenString$

Entspricht Testausdruck mehr als einer Case-Klausel, werden nur die Anweisungen ausgeführt, die der ersten entsprechenden Klausel folgen. Anweisungen Select Case können verschachtelt werden. Jede Anweisung Select Case muß eine zugehörige Anweisung End Select haben.

For...Next-Anweisung

Wiederholt eine Folge von Befehlen mehrmals. Die Anzahl der Wiederholungen ist dabei festgelegt.

 

Syntax

For Zähler = Startwert To Endwert [ Step Schrittgröße ]

[Anweisungsblock]

[Exit For]

[Anweisungsblock]

Next [Zähler [, Zähler]]

 

 

Bemerkungen

Die Anweisung For verwendet folgende Argumente:

 

Argument Beschreibung
Zähler Numerische Variable, die als Schleifenzähler verwendet wird. Diese Variable darf weder ein Datenfeldelement noch ein Datensatzelement sein.
Startwert Anfangswert des Zählers.
Endwert Endwert des Zählers.
Schrittgröße Betrag, um den der Zähler bei jedem Schleifendurchlauf geändert wird. Wenn Sie keinen Wert für Step angeben, erhält Schrittgröße den Standardwert 1.
Anweisungsblock Eine beliebige Anzahl von Anweisungen oder Methoden, die oft wie angegeben ausgeführt werden.

 

 

Der Wert von Step steuert die Schleifenausführung wie folgt:

 

Wert von Step Schleife wird ausgeführt, wenn
Positiv oder 0 Zähler <= Endwert
Negativ Zähler >= Endwert

 

Nach dem Starten der Schleife und dem Ausführen aller Anweisungen in der Schleife wird der Wert von Step zum Zähler addiert. Dann werden entweder die Anweisungen in der Schleife erneut ausgeführt (auf der Basis derselben Überprüfungen, die beim ersten Mal die Ausführung der Schleife bewirkten), oder die Schleife wird verlassen, und die Ausführung wird bei der Anweisung fortgesetzt, die der Anweisung Next folgt.

For...Next-Schleifen können auch durch einfaches ineinander stellen verschachtelt werden. Jeder Schleifenzähler sollte über einen eindeutigen Variablennamen verfügen. Die folgende Verschachtelung ist z.B. korrekt:

 

For I = 1 To 10

For J = 1 To 10

For K = 1 To 10

...

Next K

Next J

Next I

 

Aufeinander folgende Next-Anweisungen können auch in einer Zeile getrennt durch ein Komma geschrieben werden.

Next K, J, I (entspricht der oberen Anweisungsfolge)

 

Achtung : Die Reihenfolge der Laufvariablen muß beachtet werden !

 

Bei der Verwendung der Anweisung Next ohne Variable, wird der Wert für Step Schrittgröße zu der Variablen addiert, die sich auf die vorhergehende Anweisung For bezieht. Trift das Programm auf eine Anweisung Next vor der entsprechenden Anweisung For, tritt ein Fehler auf.

 

While...Wend-Anweisung

Führt eine Folge von Anweisungen in einer Schleife aus, solange eine gegebene Bedingung wahr ist.

 

Syntax

While Bedingung

[Anweisungsblock]

Wend

 

Bemerkungen

Das Argument Bedingung ist ein numerischer Ausdruck oder ein Zeichenfolgenausdruck, der True (Wahr; ¹ 0) oder False (Falsch, 0 oder Wert "Null") sein kann (vgl. 2.1). Wenn Bedingung Wahr ist, werden alle Anweisungen im Anweisungsblock ausgeführt, bis die Anweisung Wend erreicht wird. Die Programmsteuerung kehrt zur Anweisung While zurück und überprüft Bedingung erneut. Ist Bedingung weiterhin Wahr, wird der Vorgang wiederholt. Ist sie nicht mehr Wahr, wird die Ausführung mit der Anweisung fortgesetzt, die nach der Anweisung Wend folgt. While...Wend-Schleifen können in beliebig viele Ebenen verschachtelt werden. Jede Anweisung Wend gehört zur zuletzt aufgetretenen Anweisung While.

Do...Loop-Anweisung

Wiederholt einen Block von Anweisungen, solange eine Bedingung wahr ist oder bis eine Bedingung wahr wird.

 

Syntax 1

Do [{While | Until} Bedingung]

[Anweisungsblock]

[Exit Do]

[Anweisungsblock]

Loop

 

Syntax 2

Do

[Anweisungsblock]

[Exit Do]

[Anweisungsblock]

Loop [{While | Until} Bedingung]

 

Bemerkungen

Das Argument Bedingung ist ein numerischer Ausdruck oder ein Zeichenfolgenausdruck, der True (Wahr; ¹ 0) oder False (Falsch, 0 oder Wert "Null") sein kann (vgl. 2.1). Die Programmzeilen zwischen den Anweisungen Do und Loop werden wiederholt, solange (While) oder bis (Until) die Bedingung wahr ist. Eine Anweisung Exit Do, die nur innerhalb einer Do...Loop verwendet werden kann, bietet eine weitere Möglichkeit, eine Do...Loop-Kontrollstruktur zu verlassen. Sie können beliebig viele Anweisungen Exit Do an jeder beliebigen Stelle innerhalb von Do...Loop einfügen. Exit Do wird oft zusammen mit der Auswertung einer Bedingung (z.B. If...Then) verwendet und übergibt die Steuerung an die erste Anweisung, die nach der Anweisung Loop folgt. Wenn Anweisungen Do...Loop verschachtelt sind, wird die Steuerung an die Anweisung Do...Loop übergeben, die sich in der Verschachtelungsebene über der Schleife befindet, in der Exit Do verwendet wurde.

 

Objekttypen und Objektvariablen

 

 

Einführung

 

 

Objektvariablen vom Typ „Ojekttyp" besitzen für die Dauer der Definition eine Bindung zu dem durch „Objekttyp" assoziierten Objekt.

 

Þ Sie können über die Objetkvariable dann auf die Eigenschaften und Methoden des Objektes zugreifen.

 

Die wichtigsten Objekttypen :

(alphabetische Reihenfolge)

 

Control Ö

Database Ö

Field Ö

Form Ö

QueryDef Ö

Recordset Ö

Report Ö

TableDef Ö

Workspace Ö

 

 

Objekttyp Form und Report :

 

Für das Zuweisen eines geöffneten Formulars oder Reports zu einer Objektvariablen.

 

 

Bsp:

 

Dim F1 as Form, R1 as Report

DoCmd OpenForm(„Auftragsform")

DoCmd OpenReport(„Auftragsbericht")

Set F1 = Forms!Auftragsform

Set R1 = Reports!Auftragsbericht

 

Vorteil:

Man kann nun so bei der Programmierung durch die Vergabe von neuen Namen effizienter arbeiten.

 

Objekttyp Control :

 

Für das Zuweisen eines Steuerelementes eines geöffneten Formulars zu einer Objektvariablen.

 

Bsp.:

 

Dim F1 as Form

Dim ST1 as Control

Set F1 = Forms!Kunden

Set ST1 = F1!Firmenbezeichnung

ST1.Caption = „Hamburger Zigarrenfabrik"

 

Objekttyp Database :

 

Für das Zuweisen einer Datenbank (*.mdb) zu einer Objektvariablen.

 

Wichtige Methoden:

Close Datenbank schließen

OpenRecordset Zugriff auf Tabelle der Datanbank

(Syntax siehe Objekttyp Recordset)

CreateTableDef Erstellen neuer Tabelle

 

 

Wichtige Eigenschaften:

Name enthält den kompletten Pfadnamen

 

In diesem Zusammenhang oft verwendete Methoden:

CurrentDB() verwendet aktuelle Datenbank

OpenDatabase(„PFAD") verwendet beliebige Datenbank

 

 

Bsp. Für Zuweisung:

 

Dim DB1 as Database

Dim DB2 as Database

Set DB1 = CurrentDB()

Set DB2 = OpenDatabase(„c:\db\auftrag.mdb")

 

 

Andere Möglichkeit für CurrentDB() (OO, jedoch dann nicht mehr kompatibel zu ACCESS 1.x) :

 

Set DB1 = DBEnigne.Workspaces(0).Databases(0)

 

Þ CurrentDB() und OpenDatabase(...) sind Methoden von einem Objekt vom Typ Workspace. (Siehe Workspace-Objekt)

 

Objekttyp Recordset :

 

Für das Zuweisen einer Tabelle oder Abfrage einer Datenbank zu einer Objektvariablen.

 

Vereinfachte Syntax:

 

Set Variable = Datenbank.OpenRecordset(Herkunft,Typ)

 

Herkunft:

Tabellenname oder SQL-Anweisung

Typ:

DB_OPEN_TABLE (lokale Tabelle)

DB_OPEN_DYNASET (lokale, eingebundene Tabelle, Abfrage)

DB_OPEN_SNAPSHOT (ähnlich DB_OPEN_DYNASET, jedoch nur Kopie der Daten, während ein Dynaset eine Tabelle von indirekten Referenzen auf die Tabelle im Speicher repräsentiert.)

 

 

Bsp für Zuweisung:

 

Dim DB1 as Database, DS1 as Recordset, DS1 as Recordset

Set DB1 = CurrentDB()

Set DS1 = DB1.OpenRecordset(„Kunden",DB_OPEN_DYNASET)

Set DS2 = DB1.OpenRecordset(„Select * from Kunden;")

 

Wichtige Methoden:

MoveFirst

MoveLast

MoveNext

MovePrevious

FindFirst Krit Krit entspricht where-Bedingung einer SQL-Anweisung

FindLast Krit

FindNext Krit

FindPrevious Krit

Edit

Update

AddNew

Delete

Close

OpenRecordset(...) *

 

Hinweis:

Lediglich die Move-Methoden und die Close-Methode können mit Recordsets vom Typ DB_Open_SNAPSHOT arbeiten.

 

Wichtige Eigenschaften:

BOF beginning of file

EOF end of file

NOMatch Anwendung zum Bsp. nach findfirst-Methode

Sort * ermöglicht Sortierung

Filter * ermöglicht Angabe eines Filters

Index + Auswahl eines Indizees

 

* Þ Spezialfall: Erzeugung eines neuen Recordsets aus einem bereits bestehenden.

+ Þ nur für DB_OPEN_TABLE

 

Hinweis:

Die Datensätze sind direkt nach OpenRecordset nicht sortiert.

 

 

Objekttyp Workspace :

 

Ein Workspace-Objekt stellt eine Benutzersitzung dar. Standardmäßig gibt es nur eine Benutzersitzung : Workspaces(0)

Innerhalb einer Sitzung (Workspace-Objekt) können mehrere Datenbanken geöffnet werden, Transaktionen verwaltet werden und Daten über Kennwörter geschützt werden.

 

Wichtige Methoden:

CurrentDB()

OpenDatabase(...)

CreateDatabase(...)

BeginTrans

CommitTrans

Rollback

 

Wichtige Eigenschaften:

Name Name der Workspace

Password

UserName

 

Bsp. für eine Standardzuweisung:

 

Dim WS0 as Workspace

Dim DB1 as Database

Set WS0 = DBEngine.Workspace(0)

Set DB1 = WS0.OpenDatabase(„kunde.mdb")

 

Hinweis:

Transaktionen können die Verarbeitunsgeschwindigkeit steigern.

 

Objekttyp QueryDef :

Für das Zuweisen einer Abfrage zu einer Objektvariablen.

Sie können dadurch Abfragen ausführen lassen, neue erstellen bzw. bestehende ändern.Diese Funktionalität wurde bereits im Zusammenhang mit der Methode OpenRecordset auf andere Art und Weise beschrieben.

 

Objekttyp TableDef und Fields :

Diese Objekttypen dienen zum erstellen neuee Tabellen von ACCESS BASIC aus.

Es muß zunächst eine neue Tabelle erzeugt werden, dann die dazugehörigen Felder.

 

Objektdatentypen - Programmierbeispiele

 

In diesem Abschnitt finden Sie zu den gängigsten Objektdatentypen einfache und leicht verständliche Beispiele.

 

Bespiel 1 : Microsft Access - Objektdatentypen Form, Report, Control

 

Beschreibung:

Microsoft-Access-Datentypen beziehen sich auf die Oberfläche.

Bei Betätigung eines Buttons soll der Text in einem Text-Feld geändert werden.

 

Dieses Beispiel setzt folgende setzt folgende MA-Objekte voraus:

Formular namens Form_MAO

Steuerelement Text mit der Eigenschaft Name=Text_Feld1

Steuerelement Schalftfläche mit der Eigenschaft Name=Schaltfläche_links

Steuerelement Schalftfläche mit der Eigenschaft Name=Schaltfläche_rechts

 

Beispiel:

 

Sub Schaltfläche_links_Click ()

 

Dim F As Form

Dim C As Control

 

Set F = Forms!Form_MAO

Set C = F!Text_Feld1

 

C.Caption = "Linker Button gedrückt"

 

End Sub

 

 

 

Sub Schaltfläche_rechts_Click ()

 

Dim F As Form

Dim C As Control

 

Set F = Forms!Form_MAO

Set C = F!Text_Feld1

 

C.Caption = "Rechter Button gedrückt"

 

End Sub

 

Bespiel 2: Einführung für die Objektdatentypen Database und Recordset

 

Beschreibung:

Es werden hier auf drei verschiedene Arten jeweils dasselbe Dynaset zur Verfügung gestellt.

Über die Ereignis-Methode Schaltfläche_Read_Click() kann man dieses Dynaset durchlaufen.

 

Dieses Beispiel setzt folgende setzt folgende Objekte voraus:

Steuerelement Text mit der Eigenschaft Name=Text_Database

Steuerelement Schalftfläche mit der Eigenschaft Name=Schaltfläche_datab

Steuerelement Schalftfläche mit der Eigenschaft Name=Schaltfläche_read

Steuerelement Schalftfläche mit der Eigenschaft Name=Schaltfläche4

Steuerelement Schalftfläche mit der Eigenschaft Name=Schaltfläche5

Tabelle Teile mit dem Attribut Bezeichnung

 

 

Beispiel:

 

Dim C As Control

Dim DB As Database

Dim RS As Recordset

 

 

Sub Schaltfläche_Datab_Click ()

 

Set C = Forms!Form_Database!Text_Database

Set DB = CurrentDB()

Set RS = DB.OpenRecordset("Teile", DB_OPEN_DYNASET)

 

 

If RS.BOF Then

C.Caption = "Beginn of File"

Else

C.Caption = RS("Bezeichnung")

End If

 

End Sub

 

 

 

Sub Schaltfläche_Read_Click ()

 

RS.MoveNext

 

If RS.EOF Then

C.Caption = "End Of File"

RS.Close

DB.Close

Else

C.Caption = RS("Bezeichnung")

End If

End Sub

 

 

 

Sub Schaltfläche4_Click ()

 

Set DB = DBEngine.Workspaces(0).Databases(0)

Set RS = DB.OpenRecordset("Teile", DB_OPEN_DYNASET)

 

If RS.BOF Then

C.Caption = "Beginn of File"

Else

C.Caption = RS("Bezeichnung")

End If

 

End Sub

 

 

 

Sub Schaltfläche5_Click ()

 

Set DB = DBEngine.Workspaces(0).Databases(0)

Set RS = DB.OpenRecordset("Select * From Teile;")

 

If RS.BOF Then

C.Caption = "Beginn of File"

Else

C.Caption = RS("Bezeichnung")

End If

End Sub

 

Beispiel 3: Verwendung der Move-Methoden des Objektdatentyps Recordset

 

Beschreibung:

Es werden hier alle Inhalte eines Attributes einer Tabelle im Direktfenster ausgegeben.

 

Dieses Beispiel setzt folgende setzt folgende Objekte voraus:

Tabelle Teile mit dem Attribut Bezeichnung

 

 

Beispiel:

 

Function endlosmove ()

 

Set db = dbengine.workspaces(0).databases(0)

Set rs = db.OpenRecordset("Teile", db_open_dynaset)

 

rs.MoveFirst

 

Do Until rs.eof

 

debug.print rs("Bezeichnung")

rs.MoveNext

Loop

 

rs.Close

db.Close

 

End Function

 

 

Beispiel 4: Verwendung der Sort-Eigenschaft eines Recordset-Objektes

 

Beschreibung:

Es soll gezeigt werden, daß man für die Nutzung der Sort-Eigenschaft ein zweites Recordset-Objekt bilden muß.

 

Dieses Beispiel setzt folgende setzt folgende Objekte voraus:

Tabelle Teile mit dem Attribut Bezeichnung

 

Beispiel:

 

Sub new_sort ()

 

Dim db As Database

Dim rs1 As Recordset

Dim rs2 As Recordset

 

Set db = CurrentDB()

Set rs1 = db.OpenRecordset("Teile", db_open_dynaset)

 

rs1.sort = "Bezeichnung asc"

 

Set rs2 = rs1.OpenRecordset()

 

rs2.MoveFirst

Do Until rs2.eof

Debug.Print rs2("Bezeichnung")

rs2.MoveNext

Loop

 

rs2.Close

rs1.Close

db.Close

 

End Sub

 

Beispiel 5: Verwendung der Filter-Eigenschaft eines Recordset-Objektes, sowie der Find-Methoden

 

Beschreibung:

Es soll gezeigt werden, daß man für die Nutzung der Filter-Eigenschaft ein zweites Recordset-Objekt bilden muß.

Desweiteren soll hier auf den Umgang mit den Find-Methoden hingewiesen werden.

 

Dieses Beispiel setzt folgende setzt folgende Objekte voraus:

Tabelle Teile mit den Attributen Teilenr, Bezeichnung

 

 

Beispiel:

 

Sub new_filter ()

 

Dim db As Database

Dim rs1 As Recordset

Dim rs2 As Recordset

 

Set db = CurrentDB()

Set rs1 = db.OpenRecordset("Teile", db_open_dynaset)

 

rs1.filter = "Teilenr > '150'"

 

Set rs2 = rs1.OpenRecordset()

 

rs2.MoveFirst

Do Until rs2.eof

Debug.Print rs2("Teilenr")

rs2.MoveNext

Loop

 

rs2.Close

rs1.Close

db.Close

 

End Sub

 

Beispiel 6: Methoden find, edit, update

 

Beschreibung:

Es werden hier bei einem bestimmten Datensatz Änderungen in der Datenbank-Tabelle vorgenommen.

Ein Edit ohne ein Update wird nicht wirksam !

 

Dieses Beispiel setzt folgende setzt folgende Objekte voraus:

Tabelle Teile mit den Attributen Teilenr, Bezeichnung

 

 

Beispiel:

 

Sub find_edit_update ()

 

Dim db As Database

Dim rs As Recordset

Dim krit As String

 

Set db = CurrentDB()

Set rs = db.OpenRecordset("Teile", db_open_dynaset)

krit = "Teilenr = '241'"

 

rs.FindFirst krit

If rs.nomatch Then

Debug.Print ("Datensatz nicht gefunden")

Else

Debug.Print ("Datensatz gefunden")

Debug.Print ("Bezeichnung wird geändert")

rs.Edit

rs("Bezeichnung") = "Stein 240"

rs.Update

Debug.Print ("Bezeichnung ist geändert")

rs.MovePrevious

Debug.Print rs("Bezeichnung")

rs.MoveNext

Debug.Print rs("Bezeichnung")

End If

 

rs.Close

db.Close

 

End Sub

 

 

Beispiel 7: Transaktionen in Access Basic

 

Beschreibung:

Es werden hier im Rahmen einer Transaktionen Datensätze gelöscht bzw. nicht gelöscht.

Verändern Sie den Wert für Benutzerfrage im Code und vergleichen Sie das Ergebnis der Prozedur in der Tabelle Artikel.

Man könnte anstelle der if-Bedingung für Benutzerfrage wirklich eine Benutzerabfrage codieren.

 

Dieses Beispiel setzt folgende setzt folgende Objekte voraus:

Tabelle Artikel mit mehreren Datensaätzen (ca. 20)

 

 

Beispiel:

 

Sub trans ()

 

Dim i As Integer

Dim benutzerfrage As Integer

 

Dim ws As WorkSpace

Dim db As Database

Dim rs As Recordset

 

benutzerfrage = 0

 

Set ws = dbengine.workspaces(0)

Set db = ws.databases(0)

Set rs = db.OpenRecordset("artikel", db_open_dynaset)

 

ws.BeginTrans

 

For i = 1 To 5

rs.Delete

Debug.Print ("gelöscht")

rs.MoveNext

Next i

 

If benutzerfrage = 1 Then

ws.CommitTrans

Else

ws.Rollback

End If

 

rs.Close

db.Close

 

 

End Sub

 

Beispiel 8: Objektdatentypen TableDef und Field

 

Beschreibung:

Es soll hier eine neue Tabelle mit zwei Feldern angelegt werden.

 

Beispiel:

 

Sub create_new_table ()

 

Dim db As Database

Dim td As TableDef

Dim f As Field

 

Set db = CurrentDB()

Set td = db.CreateTableDef("Tabellenname")

 

Set f = td.CreateField("Name", DB_TEXT, 10)

td.fields.Append f

 

Set f = td.CreateField("Vorname", DB_TEXT, 16)

td.fields.Append f

 

db.tabledefs.Append td

 

End Sub

 

 

 

Module, Sub-Prozeduren und Funktionen

 

Module

Allgemeines

 

Den ersten Kontakt mit der Programmierung bekommt man durch das Symbol Modul des Datenbankfensters. Das Modul stellt den Rahmen von Access-Basic-Programmen dar. Es ist damit der Aktenordner, der Funktionen und Sub-Prozeduren aufnehmen kann, die einen sinnvollen Zusammenhang besitzen.

Durch die Aufteilung in verschiedene Module entsteht keineswegs eine Einschränkung bezüglich des Zugriffs auf die einzelnen Prozeduren, da innerhalb einer Datenbank alle Programmteile erreichbar sind. Der Aufruf einer Prozedur ist daher nicht auf den Bereich innerhalb eines Moduls beschränkt, sondern von jedem Modul aus können alle Prozeduren aufgerufen werden.

 

Deklarationsabschnitt

 

Nach dem Öffnen eines Moduls befindet man sich zu Beginn im Deklarationssabschnitt dieses Moduls, innerhalb dessen die Festlegung der Datendefinitionen, auf die alle Prozeduren dieses Moduls zugreifen können, erfolgt. Im Deklarationsabschnitt werden daher alle globalen Variablen des Moduls definiert. Des weiteren können hier Variablen festgelegt werden, auf die auch von anderen Modulen aus ein Zugriff gestattet wird. Hierzu werden die Variablen mit dem Schlüsselwort Global versehen. Damit unterscheidet Access Basic zwischen Variablen, die global im Modul und global in der Datenbank verwendbar sind.

Sub-Prozeduren, Funktionen

 

Allgemeines

 

Sub-Prozeduren und Funktionen sind kleine Programmeinheiten, die sich dadurch voneinander unterscheiden, daß Funktionen immer einen Wert zurückliefern.

Während der folgenden Ausführungen werden die Begriffe Sub-Prozedur und Funktion unter dem Oberbegriff Prozedur zusammengefaßt, wenn dies inhaltlich möglich ist.

Definieren einer Prozedur

 

Syntax

 

Sub-Anweisung:

 

[Static] [Private] Sub Prozedurname [(Argumentenliste)]

[Anweisungsblock]

[Exit Sub]

[Anweisungsblock]

End Sub

 

 

Function-Anweisung:

 

[Static] [Private] Function Funktionsname [(Argumentenliste)] [As Datentyp]

[Anweisungsblock]

[Funktionsname = Ausdruck]

[Exit Function]

[Anweisungsblock]

[Funktionsname = Ausdruck]

End Function

 

 

 

 

 

Argument Beschreibung
Static Gibt an, daß die lokalen Variablen der Prozedur zwischen einzelnen Aufrufen erhalten bleiben.
Private Gibt an, daß auf die Prozedur nur von anderen Prozeduren im Modul zugegriffen werden kann, in dem sie implementiert ist. Prozeduren in anderen Modulen haben auf diese Prozedur keinen Zugriff.
Sub-Prozedur-, Funktionsname Für die Namen von Sub-Prozeduren und Funktionen gelten dieselben Regeln wie für die Namen anderer Variablen.
  Ausnahme! Namen von Sub-Prozeduren dürfen, im Gegensatz zu Funktionsnamen, keine Typenkennzeichen enthalten.
Argumentenliste Liste von Variablen, die für die Argumente stehen, die bei Aufruf der Prozedur an diese übergeben werden. Mehrere Variablen werden durch Kommas voneinander getrennt. Einzelne Argumente werden, sofern kein reserviertes Wort ByVal vorhanden ist, als Referenz übergeben. Wird also der Wert eines Arguments innerhalb der Prozedur geändert, ändert sich auch sein Wert in der aufrufenden Prozedur.
  Ausnahme! Wenn ein Argument, das an eine Funktion übergeben wird, ein Ausdruck ist, wird es behandelt, als wäre es mit dem reservierten Wort ByVal deklariert worden.
Anweisungsblock Eine beliebige Gruppe von Anweisungen, die innerhalb des Rumpfes der Sub-Prozedur ausgeführt werden.
Ausdruck Rückgabewert der Funktion. Eine Funktion gibt einen Wert aus, indem sie diesen Wert der Funktion Funktionsname zuordnet. An jeder beliebigen Stelle innerhalb der Prozedur können beliebig viele solcher Zuordnungen erscheinen. Wird Funktionsname kein Wert zugeordnet, gibt die Prozedur einen Standardwert aus: eine numerische Funktion gibt den Wert 0 aus, eine Funktion vom Datentyp "String" eine leere Zeichenfolge ("") und eine Funktion vom Datentyp "Variant" den Varianttyp "Leer".
Exit Sub, Exit Function Bewirkt das sofortige Verlassen einer Prozedur. Anweisungen Exit können an beliebig vielen Stellen einer Prozedur erscheinen.
End Sub, End Function Markieren das Ende einer Prozedur.

 

 

 

Das Argument Argumentenliste hat folgende Syntax:

 

[ByVal] Variable[( )] [As Datentyp] [, [ByVal]Variable[( )] [ As Datentyp] ] . . .

 

 

 

Argument Beschreibung
ByVal Gibt an, daß für das Argument ein Wert und keine Referenz übergeben wird. Das reservierte Wort ByVal kann nicht in Verbindung mit einer Variablen eines benutzerdefinierten Datentyps oder eines Objektdatentyps verwendet werden.
Variable Name der Variablen, die als Argument übergeben werden soll. Verwenden Sie bei Variablen eines Datenfeldes die Klammern, aber lassen Sie die Anzahl der Dimensionen weg.
As Datentyp Deklariert den Datentyp von Variable. Datentyp kann "Integer", "Long", "Single", "Double", "Currency", "String" (nur Zeichenfolgen variabler Länge),"Variant", ein benutzerdefinierter Datentyp oder ein Objektdatentyp (eine Variable mit einem Objektdatentyp darf nicht als Datenfeld deklariert werden) sein. Verwenden Sie für jedes Argument eine separate Klausel As Datentyp.

 

Bemerkungen

 

Der gesamte ausführbare Code muß in einer Prozedur enthalten sein. Sie können eine Prozedur nicht innerhalb einer anderen Prozedur definieren.

Eine Sub-Prozedur ist genau wie eine Funktion eine eigene Prozedur, die Argumente annehmen, eine Reihe von Anweisungen ausführen und die Werte ihrer Argumente ändern kann. Im Gegensatz zu einer Sub-Prozedur kann eine Funktion in einem Ausdruck aber genau wie eine eingebaute Funktion wie z.B. QWurzel (Sqr), Cos oder Zchn (Chr) verwendet werden. Man kann eine Funktion aufrufen, indem man in einem Ausdruck den Funktionsnamen, gefolgt von der in Klammern gesetzten Argumentenliste, verwendet. Die Klammern muß man auch dann einbeziehen, wenn die Funktion keine Argumente hat.

Prozeduren können auch rekursiv sein, d.h. sie können sich selbst aufrufen, um eine vorgegebene Aufgabe auszuführen.

Sub-Prozeduren dürfen nur innerhalb von Access Basic aufgerufen werden. Eine Ausnahme bilden die automatischen Ereignis-Prozeduren, die durch das Auslösen eines Ereignisses aktiviert werden.

Sie können nicht GoSub, GoTo oder Return verwenden, um in eine Sub-Prozedur zu verzweigen oder sie zu verlassen.

 

Beispiele

 

Sub-Anweisung Beispiel

 

In diesem Beispiel deklariert die Anweisung Sub den Namen einer Sub-Prozedur, die mit zwei Eingabevariablen aufgerufen wird und das Ergebnis anzeigt.

 

A = InputBox("Länge?") ' Rechtecklänge abfragen.

B = InputBox("Breite?") ' Rechteckbreite abfragen.

SubDemo A,B ' Sub-Prozedur mit Argumenten

' aufrufen.

End ' Programmende.

 

Sub SubDemo(RLänge, RBreite) ' Sub-Prozedur mit 2

' Argumenten definieren.

Fläche = RLänge * RBreite ' Rechteckfläche berechnen.

MsgBox "Fläche = " & Fläche ' Ergebnis anzeigen.

End Sub ' Ende der Sub-Prozedur.

 

 

Function-Anweisung Beispiel

 

In diesem Beispiel deklariert die Anweisung Function den Namen einer Funktion. Exit Function beendet die Prozedur, bevor die Anweisung End Function erreicht wird.

 

Function Quadratwurzel (X As Double) As Double

 

Select Case Sgn(X) ' Vorzeichen des Arguments

' auswerten.

Case 1 ' OK, wenn Vorzeichen positiv.

Quadratwurzel = Sqr(X)

Exit Function

Case 0 ' Benutzer informieren, wenn 0.

Mldg = "Übergebener Wert gleich 0."

Case -1 ' Benutzer informieren, wenn

' Vorzeichen negativ.

Mldg = "Unzulässiger Wert."

End Select

MsgBox Mldg ' Meldung anzeigen.

End Function

 

 

Aufrufen einer Sub-Prozedur

Syntax

 

Call-Anweisung:

 

Übergibt die Programmsteuerung an eine Sub-Prozedur in Access Basic oder eine Dynamic-Link Library (DLL)-Prozedur.

 

Call Name [(Argumentenliste)]

oder

Name [Argumentenliste]

 

 

Argument Beschreibung
Name Name der aufzurufenden Prozedur
Argumentenliste Variablen, Datenfelder oder Ausdrücke, die an die Prozedur übergeben werden sollen.

 

 

Bemerkungen

Das reservierte Wort Call muß zum Aufrufen einer Prozedur nicht unbedingt angegeben werden. Wenn Sie es jedoch zum Aufrufen einer Prozedur verwenden, für die Argumente erforderlich sind, müssen Sie die Liste der Argumente in Klammern hinzufügen. Wenn Sie das reservierte Wort Call weglassen, müssen Sie auch die Klammern um die Argumentenliste weglassen.

Argumente werden standardmäßig als Referenzen übergeben. Dies trifft nur dann nicht zu, wenn sie in Klammern oder unter Verwendung des reservierten Wortes ByVal deklariert werden.

Beispiel

 

Call-Anweisung Beispiel

siehe 4.2.4.3

 

Deklarieren eines Verweises auf eine externe Prozedur (DLL [Dynamic-Link Library])

Syntax

 

Declare-Anweisung:

Deklariert Referenzen zu externen Prozeduren in einer Dynamic-Link Library (DLL).

 

Declare Sub GlobalerName Lib BibName [Alias Parallelname ] [([Argumentenliste])]

oder

Declare Function GlobalerName Lib BibName [Alias Parallelname ] [([Argumentenliste])] [As Datentyp]

 

 

Teil Beschreibung
Sub Gibt an, daß die Prozedur keinen Wert ausgibt.
Function Gibt an, daß die Prozedur einen Wert ausgibt und in einem Ausdruck verwendet werden kann.
GlobalerName Name der aufgerufenen Sub-Prozedur oder Funktion. Für Prozedurnamen gelten dieselben Regeln wie für die Variablennamen von Access Basic. Die Namen von Funktionen können ein Typenkennzeichen enthalten, das den von der Prozedur ausgegebenen Datentyp angibt. Dieser Name darf in keiner anderen Prozedur auftreten. Bei Funktionen bestimmt derDatentyp der Prozedur den auszugebenden Datentyp. Hat die Funktion keinen Datentyp, können Sie im Anschluß an Argumentenliste eine As-Klausel verwenden, um ihr einen Datentyp zuzuordnen.
Lib Gibt an, daß die deklarierte Prozedur in einer DLL enthalten ist. Die Lib-Klausel ist bei allen Deklarationen erforderlich.
BibName Name der DLL, die die deklarierte Prozedur enthält. Wenn Sie keine Dateinamenerweiterung angeben, wird die Standarderweiterung .EXE verwendet.
Alias Gibt an, daß die aufgerufene Prozedur in der DLL einen anderen Namen hat. Dies ist zweckmäßig, wenn der Name einer externen Prozedur einem reservierten Wort von Access Basic entspricht. Sie können Alias ferner verwenden, wenn der Name einer DLL-Prozedur gleich dem Namen einer globalen Variablen oder Konstanten (mit Global deklariert) oder einer anderen Prozedurim selben Gültigkeitsbereich ist. Darüber hinaus ist Alias zweckmäßig, wenn der Name der DLL-Prozedur Zeichen enthält, die inAccess Basic-Namen nicht zulässig sind.
Parallelname Eine Textzeichenfolge, die den Namen der Prozedur in der DLL bezeichnet.
Argumentenliste, As Datentyp siehe „Definieren einer Prozedur" (4.2.2.1)

 

Bemerkungen

 

Man verwndet die Anweisung Declare, um externe (d.h. in einer DLL enthaltene) Prozeduren zu deklarieren. Eine Anweisung Declare für eine externe Prozedur kann nur im Deklarationsbereich eines Moduls erscheinen. DLL-Prozeduren, die in einem beliebigen Modul deklariert werden, sind für alle Prozeduren in sämtlichen Modulen verfügbar.

Anmerkung! In der Parameterliste einer Anweisung Declare kann man keine Zeichenfolgen fester Länge verwenden, da nur Zeichenfolgen variabler Länge an Prozeduren übergeben werden können. Zeichenfolgen fester Länge können zwar als Argumente einer Prozedur auftreten, werden aber vor der Übergabe in Zeichenfolgen variabler Länge umgewandelt.

 

Beispiel

 

Declare-Anweisung Beispiel

 

Dieses Beispiel zeigt zwei Möglichkeiten zum Aufrufen der Prozedur MessageBeep in der Datei USER.EXE, einer Microsoft Windows DLL. Der Name, unter dem wir diese Prozedur verwenden möchten, ist BBeep

 

Declare Sub BBeep Lib "User" Alias "MessageBeep" (ByVal N As

Integer)

Sub AufrufDemo ()

Call BBeep(0) 'Windows-Prozedur aufrufen.

For I = 1 To 1000: Next I 'Kurze Pause einfügen.

BBeep 0 'Erneuter Aufruf ohne das

'reservierte Wort Call.

End Sub

 

Standardfunktionen

 

Tabelle

 

MS Access bietet eine Menge von Standardfunktionen, die in der nachstehenden Tabelle (sortiert nach dem englischen Begriff) aufgeführt werden. Um die Übersichtlichkeit zu gewährleisten, erfolgte eine Unterteilung in folgende Bereiche:

 

Datei

Datenfelder

Dynamischer Datenaustausch

Domäne (bestimmte Menge von Datensätzen)

Datum/Zeit

Fehlerbehandlung

Finanzmathematische Aufgaben

Grafiken in gedruckten Berichten

Inspektion von Variablen

Konvertierung

Mathematische Aufgaben

Objektmanipulation

Steuerung des Programmablaufs

SQL Aggregatoperationen

Zeichenfolgen

Sonstiges

 

 

Deutsch Englisch Bedeutung

 

Datei

AktVerz CurDir Gibt das aktuelle Verzeichnis eines Laufwerks im Datentyp Variant aus
AktVerz$ CurDir$ Gibt das aktuelle Verzeichnis eines Laufwerks im Datentyp String aus
Verz Dir Ermittelt den Dateinamen im Datentyp Variant, der mit dem übergebenen String übereinstimmt
Verz$ Dir$ Ermittelt den Dateinamen im Datentyp String, der mit dem übergebenen String übereinstimmt
Dateiende EOF Ermittelt, ob das Dateiende erreicht wurde
DateiAttr FileAttr Ermittelt den Dateimodus oder die Dateikennung einer geöffneten Datei
FreieDatei FreeFile Ermittelt die nächste freie Dateinummer
Eingabe Input Liest Zeichen aus einer Datei und gibt sie im Datentyp Variant aus
Eingabe$ Input$ Liest Zeichen aus einer Datei und gibt sie im Datentyp String aus
AktPos Loc Ermittelt die aktuelle Position in einer offenen Datei
Dateigröße LOF Zeigt die Größe einer offenen Datei in Byte an
DateiPosition Seek Ermittelt die aktuelle Dateiposition
  Spc Fügt die angegebene Anzahl von Leerzeichen in eine Ausgabe durch die Methode Print oder die Anweisung Print# ein
  Tab Schaltet bei der Methode Print oder der Anweisung Print# um eine bestimmte Anzahl von Spalten weiter

 

Datenfelder

  LBound Ermittelt den kleinsten Index (untere Grenze) für die genannte Dimension eines Datenfeldes
  UBound Ermittelt den größten vorhandenen Index für die spezifizierte Dimension eines Datenfeldes

 

Dynamischer Datenaustausch

DDE DDE Startet einen DDE-Dialog mit einem anderen Programm
DDEInit DDEInitiate Startet einen DDE-Dialog mit einem anderen Programm
DDEAnfrage DDERequest Fordert über einen offenen DDE-Kanal von dem anderen Programm ein Informationselement an
DDESenden DDESend Sendet ein Informationselement an ein anderes Programm

 

Domäne

DomMittelwert DAvg Berechnet den arithmetischen Mittelwert einer Menge von Werten in einer Domäne
DomAnzahl DCount Ermittelt die Zahl der markierten Datensätze in einer bestimmten Menge von Datensätzen (Domäne).
DomErsterWert DFirst Ermittelt einen Feldinhalt aus dem ersten Datensatz einer Domäne
DomLetzterWert DLast Ermittelt einen Feldinhalt aus dem letzten Datensatz einer Domäne
DomWert DLookup Ermittelt einen Feldinhalt aus einer bestimmten Menge von Datensätzen
DomMax DMax Gibt den größten Wert aus einer Menge von Werten einer Domäne an
DomMin DMin Gibt den kleinsten Wert aus einer Menge von Werten einer Domäne an
DomStdAbw DStDev Schätzt die Standardabweichung einer Populationsstichprobe, die aus einer Menge von Werten einer Domäne gebildet wird
DomStdAbwG DStDevP Schätzt die Standardabweichung einer Gesamtpopulation, die aus einer Menge von Werten einer Domäne gebildet wird
DomSumme DSum Ermittelt die Summe einer Menge von Werten aus der angegebenen Domäne
DomVarianz DVar Schätzt die Varianz einer Populationsstichprobe, die aus einer Menge von Werten einer Domäne gebildet wird
DomVarianzG DVarP Schätzt die Varianz einer Gesamtpopulation, die aus einer Menge von Werten einer Domäne gebildet wird

 

Datum/Zeit

Datum Date Ermittelt das aktuelle Systemdatum im Datentyp Variant
Datum$ Date$ Ermittelt das aktuelle Systemdatum im Datentyp String
DatAdd DateAdd Addiert oder subtrahiert zu einem Datum ein bestimmtes Zeitintervall
DatDiff DateDiff Ermittelt einen Ausdruck vom Datentyp Variant, der die Zahl der Zeitintervalle zwischen zwei Datumsangaben festlegt
DatTeil DatePart Ermittelt einen bestimmten Teil des Datums
Jetzt Now Ermittelt die aktuellen Datums- und Uhrzeitangaben des Rechners
Zeit Time Liefert die aktuelle Systemzeit im Datentyp Variant
Zeit$ Time$ Liefert die aktuelle Systemzeit im Datentyp String
Zeitgeber Timer Ermittelt die Anzahl der seit 00:00 vergangenen Sekunden

 

 

Fehlerbehandlung

FZeile Erl Ermittelt die Zeilennummer, bei der der letzte Fehler verursacht wurde
FCode Err Ermittelt den Fehlercode
FMeldung Error Liefert die Fehlermeldung im Datentyp Variant, die dem übergebenen Fehlercode entspricht
FMeldung$ Error$ Liefert die Fehlermeldung im Datentyp String, die dem übergebenen Fehlercode entspricht

 

Finanzmathematische Aufgaben

GDA DDB Berechnet den Abschreibungswert für einen genannten Zeitraum und benutzt dazu das Verfahren der geometrisch degressiven Abschreibung
ZW FV Ermittelt den zukünftigen Wert einer Investition, der auf regelmäßigen Zahlungen und auf einem konstanten Zinssatz basiert
ZINSZ IPmt Berechnet den Betrag der Zinszahlungen für eine Investition über einen festgelegten Zeitraum basierend auf konstanten Zahlungen und konstantem Zinssatz
  IRR Ermittelt den internen Zinsfuß für eine Folge regelmäßiger Zahlungsein- und -ausgänge
  MIRR Ermittelt den geänderten internen Zinsfuß für eine Reihe von regelmäßigen Zahlungsaus- und -eingängen
ZZR NPer Liefert die Anzahl der Zahlungszeiträume für eine Investition auf Basis konstanter Zahlungen und Zinsen
  NPV Ermittelt den Nettobarwert einer Investition auf der Basis einer Folge regelmäßiger Zahlungsaus- und -eingänge und eines Abzinsungssatzes
RMZ Pmt Ermittelt die Zahlung für eine Investition, die auf regelmäßigen Zahlungen und auf einem konstanten Zinssatz basiert
KAPZ PPmt Ermittelt den Kapitalbetrag für eine bestimmte Zeitdauer einer Investition basierend auf regelmäßigen Zahlungen und auf einem konstanten Zinssatz
BW PV Ermittelt den aktuellen Wert einer Investition basierend auf regelmäßigen Zahlungen und auf einem konstanten Zinssatz
ZINS Rate Berechnet den Zinssatz je Zeitraum für eine Investition
LIA SLN Ermittelt den Wert einer linearen Abschreibung eines Anlageobjekts für eine bestimmte Zeitdauer
DIA SYD Ermittelt den Wert der digitalen Abschreibung eines Anlagenobjekt für eine festgelegte Zeitdauer

 

Grafiken in gedruckten Berichten

Farbe QBColor Gibt den RGB-Farbcode aus, der über einer Zahl zwischen 0 und 15 bestimmt wurde
RGB RGB Ermittelt einen Wert vom Datentyp Long, der einen RGB-Farbwert definiert

 

Inspektion von Variablen

IstDatum IsDate Liefert einen Wert, der bestimmt, ob der übergebene Parameter vom Datentyp Variant in ein Datum umgewandelt werden kann
IstLeer IsEmpty Liefert einen Wert, der bestimmt, ob der übergebene Parameter vom Datentyp Variant initialisiert wurde
IstNull IsNull Liefert einen Wert, der bestimmt, ob der übergebene Parameter vom Datentyp Variant den Varianttyp Null enthält
IstNumerisch IsNumeric Liefert einen Wert, der bestimmt, ob der übergebene Parameter vom Datentyp Variant in einen numerischen Typ umgewandelt werden kann
VarTyp VarType Ermittelt einen Wert, der definiert, auf welche Weise eine Variable vom Datentyp Variant von Access Basic intern gespeichert wird

 

Konvertierung

Asc Asc Liefert den numerischen Wert, der dem ANSI-Code des ersten Zeichens der angegebenen Zeichenfolge entspricht
ZCurrency CCur Wandelt einen gültigen Ausdruck in einen Currency-Datentyp um
ZDouble CDbl Wandelt einen gültigen Ausdruck in einen Double-Datentyp um
Zchn Chr Liefert eine einstellige Zeichenfolge des Datentyps Variant, deren ANSI-Code der Funktion übergeben wurde
Zchn$ Chr$ Liefert eine einstellige Zeichenfolge des Datentyps String, deren ANSI-Code der Funktion übergeben wurde
ZInteger CInt Wandelt einen gültigen Ausdruck in einen Integer-Datentyp um
ZLong CLng Wandelt einen gültigen Ausdruck in einen Long-Datentyp um
ZSingle CSng Wandelt einen gültigen Ausdruck in einen Single-Datentyp um
ZString CStr Wandelt einen gültigen Ausdruck in einen String-Datentyp um
ZVariant CVar Wandelt einen gültigen Ausdruck in einen Variant-Datentyp um
ZVarDat CVDate Wandelt einen gültigen Ausdruck in einen Varianttyp 7 (Datum) des Datentyps Variant um
DatSeriell DateSerial Ermittelt das serielle Datumsformat des genannten Jahres, Monats und Tages
DatWert DateValue Ermittelt das Datum, das als String übergeben wurde
Tag Day Liefert einen Integerwert, der den Tag innerhalb eines Monats darstellt, der als Datum übergeben wurde
Format Format Formatiert ein Datum, eine Zeit, eine Zahl oder eine Zeichenfolge laut Angabe und gibt das Ergebnis im Datentyp Variant aus
Format$ Format$ Formatiert ein Datum, eine Zeit, eine Zahl oder eine Zeichenfolge laut Angabe und gibt das Ergebnis im Datentyp String aus
Hex Hex Gibt eine Zeichenfolge vom Datentyp Variant aus, die dem hexadezimalen Wert des dezimalen Übergabeparameters entspricht
Hex$ Hex$ Gibt eine Zeichenfolge vom Datentyp String aus, die dem hexadezimalen Wert des dezimalen Übergabeparameters entspricht
Stunde Hour Liefert einen Integerwert zwischen 0 und 23, der die Stunde darstellt, die als Uhrzeit übergeben wurde
Minute Minute Liefert einen Integerwert im Bereich von 0 bis 59, die den Minuten der übergebenen Uhrzeit entspricht
Monat Month Liefert einen Integerwert aus dem Bereich 1 bis 12, der dem Monat des übergebenen Datums entspricht
Oktal Oct Liefert eine Zeichenfolge im Datentyp Variant, dem der Oktalwert des dezimalen Arguments entspricht
Oktal$ Oct$ Liefert eine Zeichenfolge im Datentyp String, dem der Oktalwert des dezimalen Arguments entspricht
Sekunde Second Liefert einen Integerwert zwischen 0 und 59, der die Sekunde darstellt, die als Uhrzeit übergeben wurde
Str Str Wandelt einen numerischen Ausdruck in eine Zeichenfolge vom Datentyp Variant um
Str$ Str$ Wandelt einen numerischen Ausdruck in eine Zeichenfolge vom Datentyp String um
ZeitSeriell TimeSerial Liefert das serielle Zeitformat für die übergebene Uhrzeit
ZeitSeriellStr TimeValue Liefert die Uhrzeit, die als String übergeben wurde
Wert Val Wandelt eine Zeichenfolge in einen numerischen Wert um
Wochentag Weekday Liefert einen Integerwert zwischen 1 und 7, der den Wochentag in dem übergebenen Datum darstellt
Jahr Year Liefert einen Integerwert im Bereich zwischen 100 und 9999, der das Jahr in dem übergebenen Datum darstellt

 

Mathematische Aufgaben

Abs Abs Berechnet den Absolutwert einer Zahl
ArcTan Atn Berechnet den Arkustangens einer Zahl
Cos Cos Berechnet den Kosinus eines Winkels
Exponential Exp Berechnet mit der genannten Zahl die Potenz von e
Fix Fix Zeigt den ganzzahligen Anteil einer Zahl an
Int Int Ermittelt den ganzzahligen Anteil einer Zahl
Log Log Berechnet den natürlichen Logarithmus einer Zahl
ZZG Rnd Ermittelt eine Zufallszahl
Vorzchn Sgn Liefert einen Wert, der das Vorzeichen der übergebenen Zahl darstellt
Sin Sin Ermittelt den Sinuswert eines Winkels
QWurzel Sqr Ermittelt die Quadratwurzel einer Zahl
Tan Tan Berechnet den Tangens eines Winkels

 

Objektmanipulation

  CreateControl Erzeugt ein Steuerelement in dem angegebenen geöffneten Formular
  CreateForm Erzeugt ein Formular
  CreateGroupLevel Erzeugt eine Gruppierung im angegebenen Bericht
  CreateObject Erzeugt ein neues Objekt
  CreateReport Erzeugt einen Bericht
  CreateReportControl Erzeugt ein Steuerelement in dem angegebenen geöffneten Bericht
  DeleteControl Löscht das angegebene Steuerelement in einem Formular
  DeleteReportControl Löscht das angegebene Steuerelement in einem Bericht

 

 

Steuerung des Programmablaufs

Wählen Choose Liefert aus einer Liste von Argumenten einen Eintrag
Wenn IIf Gibt bei erfüllter Bedingung den ersten Ausdruck, ansonsten den zweiten Ausruck aus
Schalter Switch Ermittelt aus einer Liste von Ausdrücken den Wert bzw. Ausdruck, der mit dem ersten Ausdruck in der Liste verbunden ist, der als Ergebnis True liefert

 

SQL-Aggregatsoperationen

Mittelwert Avg Berechnet den arithmetischen Mittelwert einer Menge von Werten in einem Feld, das sich in einer Abfrage, in einem Formular oder in einem Bericht befindet
Anzahl Count Ermittelt die Zahl der derzeit markierten Datensätze in einem Bericht, einem Formular oder in einer Abfrage
ErsterWert First Ermittelt den Inhalt eines Feldes des ersten Datensatzes einer Abfrage, eines Berichts oder eines Formulars
LetzterWert Last Ermittelt den Inhalt eines Feldes des letzten Datensatzes einer Abfrage, eines Berichts oder eines Formulars
Max Max Ermittelt den größten Wert aus einer Menge von Werten in einem bestimmten Feld
Min Min Ermittelt den kleinsten Wert aus einer Menge von Werten in einem bestimmten Feld
StdAbw StDev Schätzt die Standardabweichung einer Populationsstichprobe, die aus einer Menge von Werten aus einem Feld einer Abfrage, eines Formulars oder eines Berichtes gebildet wird
StdAbwG StDevP Schätzt die Standardabweichung einer Gesamtpopulation, die aus einer Menge von Werten aus einem Feld einer Abfrage, eines Formulars oder eines Berichtes gebildet wird
Summe Sum Berechnet die Summe einer Menge von Werten, die in einem Feld einer Abfrage, eines Berichts oder Formulars stehen
Varianz Var Schätzt die Varianz einer Populationsstichprobe, die aus einer Menge von Werten aus einem Feld einer Abfrage, eines Formulars oder eines Berichts gebildet wird
VarianzG VarP Schätzt die Varianz einer Gesamtpopulation, die aus einer Menge von Werten aus einem Feld einer Abfrage, eines Formulars oder eines Berichts gebildet wird

 

Zeichenfolgen

InStr InStr Ermittelt die Position des ersten Auftauchens einer Zeichenfolge innerhalb einer anderen Zeichenfolge
Kleinbst LCase Wandelt alle übergebenen Buchstaben in Kleinbuchstaben um und gibt sie im Datentyp Variant aus
Kleinbst$ LCase$ Wandelt alle übergebenen Buchstaben in Kleinbuchstaben um und gibt sie im Datentyp String aus
Links Left Liefert n Zeichen im Datentyp Variant von links betrachtet aus der genannten Zeichenfolge
Links$ Left$ Liefert n Zeichen im Datentyp String von links betrachtet aus der genannten Zeichenfolge
Länge Len Ermittelt die Anzahl der Zeichen in einer Zeichenfolge oder die Größe einer Variablen in Byte
LGlätten LTrim Entfernt alle führenden Leerzeichen aus der Kopie einer Zeichenfolge vom Datentyp Variant
LGlätten$ LTrim$ Entfernt alle führenden Leerzeichen aus der Kopie einer Zeichenfolge vom Datentyp String
TeilStr Mid Ermittelt aus einer Zeichenfolge einen bestimmten Teil im Datentyp Variant
TeilStr$ Mid$ Ermittelt aus einer Zeichenfolge einen bestimmten Teil im Datentyp String
Rechts Right Liefert n Zeichen im Datentyp Variant von rechts betrachtet aus der genannten Zeichenfolge
Rechts$ Right$ Liefert n Zeichen im Datentyp String von rechts betrachtet aus der genannten Zeichenfolge
RGlätten RTrim Entfernt alle Leerzeichen am Ende aus der Kopie einer Zeichenfolge vom Datentyp Variant
RGlätten$ RTrim$ Entfernt alle Leerzeichen am Ende aus der Kopie einer Zeichenfolge vom Datentyp String
LeerZchn Space Liefert die spezifizierte Anzahl von Leerzeichen im Datentyp Variant
LeerZchn$ Space$ Liefert die spezifizierte Anzahl von Leerzeichen im Datentyp String
StrVgl StrComp Liefert einen Wert des Datentyps Variant, der das Ergebnis des Vergleichs zwischen zwei Zeichenfolgen darstellt
String String Gibt ein Zeichen mehrfach, das zu einer Zeichenkette im Datentyp Variant zusammengesetzt wird
String$ String$ Gibt ein Zeichen mehrfach, das zu einer Zeichenkette im Datentyp String zusammengesetzt wird
Glätten Trim Entfernt alle führenden und alle nachfolgenden Leerzeichen aus der Kopie einer Zeichenfolge im Datentyp Variant
Glätten$ Trim$ Entfernt alle führenden und alle nachfolgenden Leerzeichen aus der Kopie einer Zeichenfolge im Datentyp String
Großbst UCase Wandelt alle Buchstaben in Großbuchstaben um und gibt sie als Zeichenfolge im Datentyp Variant aus
Großbst$ UCase$ Wandelt alle Buchstaben in Großbuchstaben um und gibt sie als Zeichenfolge im Datentyp String aus

 

Sonstiges

  CodeDB Ermittelt das Database-Objekt, das sich auf die Datenbank bezieht, in der der Code abläuft
Befehl Command Ermittelt die Übergabeparameter im Datentyp Variant, die in der Befehlszeile beim Starten von MS-Access angegeben wurden
Befehl$ Command$ Ermittelt die Übergabeparameter im Datentyp String, die in der Befehlszeile beim Starten von MS-Access angegeben wurden
CurrentDB CurrentDB Ermittelt das Objekt Database für die aktuelle Datenbank
Aktiver Benutzer CurrentUser Ermittelt den aktuellen Benutzer
  DoEvents Hält die Ausführung des Moduls an, damit Windows auf Meldungen reagieren kann
Umgebung Environ Liefert die Zeichenfolge vom Datentyp Variant einer Umgebungsvariablen des Betriebssystems
Umgebung$ Environ$ Liefert die Zeichenfolge vom Datentyp String einer Umgebungsvariablen des Betriebssystems
Auswerten Eval Wertet einen Ausdruck aus und gibt das Ergebnis aus
  GetObject Liefert ein OLE-Automatisierungsobjekt aus einer Datei
Eingabefeld InputBox Stellt ein Dialogfeld mit Aufforderung zur Eingabe im Datentyp Variant auf dem Bildschirm dar
Eingabefeld$ InputBox$ Stellt ein Dialogfeld mit Aufforderung zur Eingabe im Datentyp String auf dem Bildschirm dar
Meldung MsgBox Gibt ein Meldungsfenster aus, das der Anwender bestätigen muß
  OpenDatabase Öffnet die genannte Datenbank
Bereich Partition Gibt eine Zeichenfolge aus, die definiert, an welcher Position innerhalb einer berechneten Folge von Bereichen eine Zahl erscheint
Ausführen Shell Startet ein lauffähiges Programm
  SysCmd Ermittelt Systeminformationen von Access
Benutzer User Liefert den Namen des aktuellen Datenbankbenutzers

 

Achtung! Bei der Verwendung einer Funktion in einem Formular kann man mit dem deutschen Funktionsnamen arbeiten. Falls man jedoch eine Funktion mit Access Basic schreibt, muß man den englischen Namen verwenden.

Beispiele

 

Datei

EOF (Dateinummer)

Seek(Dateinummer)

LOF(Dateinummer)

Die Prozedur Datei() gibt den Inhalt der Datei c:\greser\test.txt zeilenweise aus und stellt die jeweils aktuelle "Cursor-Position" dar (Seek). Die Funktion LOF(..) bewirkt die Ausgabe der Größe der geöffneten Datei in Byte.

 

Sub Datei ()

Open "c:\greser\test.txt" For Input As #23

Do While Not EOF(23)

Input #23, tmp

Debug.Print tmp

a = Seek(23)

Debug.Print a

Loop

Debug.Print LOF(23)

Close #23

 

End Sub

 

Domäne

DCount(Ausdruck,Domäne[,Kriterien])

DFirst(Ausdruck,Domäne[,Kriterien])

DLast(Ausdruck,Domäne[,Kriterien])

DMax(Ausdruck,Domäne[,Kriterien])

 

Argument Beschreibung
Ausdruck Zeichenfolgenausdruck, der das Feld, welches die auszuwertenden Daten enthält, bezeichnet. Ausdruck kann auch Berechnungen ausführen, die Daten eines oder mehrerer Felder, Steuerelemente in einem Formular, Konstanten oder Funktionen als Operanden enthalten. Darunter darf allerdings keine andere Aggregatsfunktion für Domänen oder SQL sein
Domäne Zeichenfolgenausdruck, der die Quelle der Datensätze, aus der sich die Domäne zusammensetzt, angibt. Dies kann der Name einer Tabelle oder Abfrage oder ein SQL-Ausdruck sein.
Kriterien Bedingung als Zeichenfolgenausdruck, der den Datensatzbereich, d.h. die Domäne, einschränken kann. Wenn man dies wahlfreie Argument fortläßt, berechnet die Funktion den Ausdruck auf der Basis der gesamten Domäne.

 

Die Funktion DCount(...) gibt die Anzahl von Datensätzen aus einem bestimmten Bereich (Domäne) aus, die in Ausdruck keinen Wert Null haben, es sei denn, man gibt für Ausdruck das Platzhalterzeichen * an, dann werden alle Datensätze der Domäne geliefert.

DCount("*", "Trainer") liefert 6

DCount("Verein", "Trainer") liefert 5

DCount("Nachname", "Trainer") liefert 6

Im Argument Ausdruck kann man mehrere Felder miteinander verbinden. Dies geschieht entweder durch das + Zeichen oder durch das & Zeichen. Die unterschiedliche Wirkung dieser beiden Arten von Verbindungen bezieht sich auf die Auswertung von Null-Werten in den Feldern. Wenn man Felder mit dem + Zeichen verbindet, werden nur Datensätze gezählt, die in keinem der verbundenen Felder eine Null enthalten. Wenn man Felder mit dem & Zeichen verbindet, werden alle Datensätze gezählt, die in wenigstens einem der verbundenen Felder keinen Null-Wert enthalten.

DCount("Verein&Nachname", "Trainer") liefert 6

DCount("Verein+Nachname", "Trainer") liefert 5

Die Funktionen DFirst("Nachname", "Trainer") und DLast("Nachname", "Trainer") geben den Wert des Feldes Nachname aus dem ersten bzw. letzten Datensatz der Tabelle "Trainer" an. Die Funktion DMax("Nachname", "Trainer") liefert den größten Wert des Feldes Nachname in der Tabelle "Trainer".

 

Sub Domäne ()

 

Debug.Print DCount("*", "Trainer")

Debug.Print DCount("Verein", "Trainer")

Debug.Print DCount("Nachname", "Trainer")

Debug.Print DCount("Verein&Nachname", "Trainer")

Debug.Print DCount("Verein+Nachname", "Trainer")

Debug.Print DFirst("Nachname", "Trainer")

Debug.Print DLast("Nachname", "Trainer")

Debug.Print DMax("Nachname", "Trainer")

 

End Sub

 

 

 

Datum/Zeit

Date()

Now()

Time()

DateAdd(Intervall,Anzahl,Datum)

DatePart(Intervall,Datum)

DateDiff(Intervall, Datum1, Datum2[, ErsterWochentag][, ErsteWoche])

 

Argument Beschreibung
Intervall Zeichenfolge: yyyy(Jahr), q(Quartal), m(Monat), y(Kalendertag), d(Tag), w(Wochentag), ww(Woche), h(Stunde), n(Minute), s(Sekunde)
Anzahl Zahl oder numerischer Ausdruck, mit dem die Anzahl der Intervalle bestimmt wird. Wenn Anzahl negativ ist, wird der Wert Anzahl*Intervall vom Datum abgezogen, sonst dazugezählt.
Datum Datumswert, kann als kurzes (2.4.95) oder langes Format (2.April 95) angegeben werden.

Wenn Datum ohne Jahreszahl verwendet wird, setzt Access das aktuelle Jahr ein.

#Datum# - beim ersten Aufruf der Funktion

"Datum" - bei jedem Aufruf der Funktion neu

ErsterWochentag Eine Ganzzahl, die den ersten Tag der Woche angibt. Sie können einen beliebigen der folgenden Werte verwenden:

1 Sonntag (Standardeinstellung)

2 Montag

3 Dienstag

4 Mittwoch

5 Donnerstag

6 Freitag

7 Samstag

ErsteWoche Eine Ganzzahl, die die erste Woche des Jahres angibt. Sie können einen

beliebigen der folgenden Werte verwenden:

0 Verwendet die Einstellung für "Erste Woche des Jahres" im

Dialogfeld Optionen

1 Beginnt am 1.Januar (Standardeinstellung)

2 Beginnt mit erster Woche mit 4 Tagen

3 Beginnt mit erster voller Woche

 

Die Funktion Date() liefert das aktuelle Systemdatum, die Funktion Now() das aktuelle Systemdatum und Systemuhrzeit, die Funktion Time() die aktuelle Systemzeit.

Die Funktion DateAdd("m",2, "01.06.95") addiert zum 01.06.95 zwei Mal das Intervall "Monat" und liefert somit das Datum 01.08.1995.

Die Funktion DateAdd("yyyy", 10, "01.06.95") addiert zum 01.06.95 10 Mal das Intervall "Jahr" und liefert somit das Datum 01.06.2005.

Die Funktion DatePart("w", "7.Juni 95") gibt die Zahl 4 aus, weil der 7. Juni 1995 ein Mittwoch ist.

Die Funktion DateDiff("w", "6.06", "14.06", 4) gibt die Zahl 1 aus, weil zwischen dem 14.06. und dem 6.06. genau eine Woche Differenz besteht, wenn man als ersten Wochentag den Mittwoch nimmt.

 

Sub Datum ()

 

Debug.Print Date

Debug.Print Now

Debug.Print Time

Debug.Print DateAdd("m", 2,"01.06.95")

Debug.Print DateAdd("yyyy", 10, "01.06.")

Debug.Print DatePart("w", "7.Juni")

Debug.Print DateDiff("w", "6.06", "14.06", 4)

 

End Sub

 

Konvertierung

Hour(Zahl)

Minute(Zahl)

Second(Zahl)

Time Serial(Stunde,Minute,Sekunde)

TimeValue(Uhrzeit)

 

Die Funktion Hour(...) gibt eine ganze Zahl zwischen 0 und 23 für die Stunde aus. Entsprechend die Funktionen Minute(...) und Sekunde(...).

Hour("23:24:25") liefert die Zahl 23

Minute("23:24:25") liefert die Zahl 24

Second("23:24:25") liefert die Zahl 25

Die Funktion TimeSerial(...) gibt einen Zeitwert aus, der aus den Angaben Stunde, Minute und Sekunde ermittelt wird. (Achtung! Minus-Werte)

TimeSerial(2+3,70,45-46) liefert den Zeitwert 06:09:59

Die Funktion TimeValue(...) wandelt eine als Zeichenfolge angegebene Uhrzeit in die serielle Zahl um.

TimeValue("18:00:00") - .5 errechnet die serielle Zahl 0.25, gibt diese jedoch als Zeitangabe 06:00:00 aus.

 

Sub Konvert ()

 

Debug.Print Hour("23:24:25")

Debug.Print Minute("23:24:25")

Debug.Print Second("23:24:25")

Debug.Print TimeSerial(2 + 3, 70, 45 - 46)

Debug.Print TimeValue("18:00:00") - .5

End Sub

 

Objektmanipulation

CreateReport([Datenbank [, Berichtsvorlage]])

 

Argument Beschreibung
Datenbank Name der Datenbank

"" steht für aktuelle Datenbank

Berichtsvorlage Berichtsname

"" Einstellung Optionen Berichtsentwurf

 

Mit Hilfe der Anweisung DoCmd kann man Microsoft Access Aktionen (Makros) aus Access Basic heraus ausführen. Der Befehl Restore stellt die ursprüngliche Größe eines auf Vollbild vergrößerten oder zum Symbol verkleinerten Fensters wieder her.

Die Prozedur Objekt () erstellt in der aktuellen Datenbank einen Bericht vom Typ des Berichts "B1".

 

Sub Objekt ()

 

Dim Bericht1 As Report

Set Bericht1 = CreateReport("", "B1")

DoCmd Restore

 

End Sub

 

Zeichenfolgen

Left(Zeichenfolgenausdruck, n)

Right(Zeichenfolgenausdruck, n)

UCase(Zeichenfolgenausdruck)

InStr([Start,]ZfolgenAusdr1,ZfolgenAusdr2[,Zeichenvergleich])

 

Argument Beschreibung
Start Startposition für Suchlauf
ZfolgenAusdr1 der zu durchsuchende Ausdruck
ZfolgenAusdr2 Ausdruck, mit dem verglichen werden soll
Zeichenvergleich Vergleichsmethode:

0 Groß-/Klein beachten

1 Groß-/Klein nicht beachten

2 Methode DATABASE

 

Die Funktionen Left(..) und Right(...) geben die ersten n Zeichen, beginnend von links bzw. rechts, des Zeichenfolgenausdruckes aus.

Debug.Print Left(b,6) liefert "Blumen"

Debug.Print Right(b,4) liefert "Erde

Die Funktion UCase(...) wandelt alle Buchstaben des Zeichenfolgendausdrucks in Großbuchstaben um.

Debug.Print UCase(b) liefert "BLUMENTOPFERDE"

Die Funktion InStr(...) liefert die Position des ersten Auftretens einer Zeichenfolge innerhalb einer anderen. Der Rückgabewert ist die Position der Übereinstimmung. Wird keine Übereinstimmung festgestellt, wird der Wert 0 zurückgegeben.

Debug.Print InStr(1, b, t, 1) liefert den Wert 7

 

Sub Zeichenfolge ()

 

b = "Blumentopferde"

t = "Topf"

Debug.Print Left(b, 6)

Debug.Print Right(b, 4)

Debug.Print UCase(b)

Debug.Print InStr(1, b, t, 1)

End Sub

 

Sonstiges

MsgBox

MsgBox(Mldg[,Typ[,Titel]]

Argument Beschreibung
Mldg Zeichenfolgenausdruck, dessen Inhalt im Dialogfeld als Meldetext angezeigt wird. Zeilenumbrüche erfolgen automatisch. Man kann außerdem einen Zeilenumbruch erzwingen, wenn man in den Zeichenfolgenausdruck ein Wagenrücklaufzeichen (Chr(13)) oder Zeilenvorschubzeichen (Chr(10)) einfügt.
Typ Schaltfläche + Symbolart + Standardschaltfläche; vgl. Übersicht weiter unten (Default: Typ 0)
Titel Titelleiste des Dialogfeldes (Default: "Microsoft Access")

 

 

Schaltflächen

Wert Bedeutung
0 Nur OK
1 OK und ABBRECHEN
2 ABBRECHEN; WIEDERHOLEN UND IGNORIEREN
3 JA, NEIN und ABBRECHEN
4 JA und NEIN
5 WIEDERHOLEN und ABBRECHEN

 

Symbolart

Wert Bedeutung
0 Ohne Symbol
16 STOP - Symbol
32 ? - Symbol (Frage)
48 ! - Symbol (Warnung)
64 i - Symbol (Information)

 

Standardschaltfläche

Wert Bedeutung
0 Erste Schaltfläche ist Standard
256 Zweite Schaltfläche ist Standard
512 Dritte Schaltfläche ist Standard

 

Die Prozedur Sub Message gibt folgendes Meldungsdialogfeld aus, wobei sich der Typ (= 321) zusammensetzt aus 1 + 64 + 256:

 

 

 

 

 

 

 

 

 

 

Sub Message ()

 

R = MsgBox("Dies ist eine" & Chr(13) & "Meldung", 321, "Titel")

Debug.Print R

 

End Sub

 

Der Rückgabewert der Funktion MsgBox(...) gibt an, welche Schaltfläche gewählt wurde. Im einzelnen gilt:

Wert Bedeutung
1 OK
2 ABBRECHEN
3 ABBRECHEN
4 WIEDERHOLEN
5 IGNORIEREN
6 JA
7 NEIN

 

InputBox

InputBox(Eingabeaufforderung[,[Titel][,Standard][,XPos,YPos]

Argument Beschreibung
Eingabeaufforderung Zeichenfolgenausdruck
Titel Titelleiste
Standard Vorbesetzung für das Eingabefeld
XPos Abstand von rechts --> in Twip --> 1 cm = 567 Twips
YPos Abstand von oben

 

Die Prozedur Einput bewirkt das Einblenden des folgenden Dialogfeldes. Die Funktion InputBox gibt den in das Eingabefeld eingegebenen Wert aus.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Sub Einput ()

W = InputBox("Bitte Namen eingeben","Name ?","Greser",0,0)

Debug.Print W

 

End Sub

 

 

Flexible Listenfelder und Kombinationsboxen

 

Sie sind durch die Beschreibungen in den vorherigen Kapiteln bereits in der Lage Listboxen bzw. Kombinationsfelder mit Daten zu füllen. Dies können Sie recht einfach interaktiv durch einen Assistenten unter Access erledigen. Sie sind damit aber in der Wahl Ihrer Daten sehr eingeschränkt. Diese Inflexibilität soll in diesem Kapitel genommen werden.

Es wird hier zunächst ein Musterbeispiel für flexibles Füllen von Listboxen besprochen. Dies gilt natürlich analog für Kombinationsfelder.

Anschließend finden Sie in diesem Abschnitt den Programmcode eines Formulars.

Hier sind einige wesentliche und durchaus nützliche Beispiele abgedruckt, die Sie auch sehr leicht veranschaulichen können. Sie müssen hierfür nur die Kurzbeschreibung des Musterbeispiels beachten. Desweiteren müssen Sie die Methode Feld13_AfterUpdate berücksichtigen, die als einzigste Funktion an Felder (Steuerelemente) durch die Nennung von Feldnamen gebunden ist. Das heißt Sie müssen ein paar Felder des Formulars mit den entprechenden Namen belegen.

Um die Beispiele auszutesten, müssen Sie ebenfalls noch eine Access-Tabelle „Teile" mit einer Spalte „Bezeichnung" anlegen, die Sie mit ein paar Beispiel-Werten füllen sollten.

 

Kurzbeschreibung eines Musterbeispiels:

Sie müssen zunächst eine Funktion anlegen, dessen Namen Sie beliebig wählen können. Die Schnittstellenparameter sind allerdings genormt, das heißt hier müssen Sie die Notation genau einhalten. Sie können die vom Access-System geforderte Norm den Funktionen des mitgelieferten Programmcodes (siehe unten) entnehmen.

Die für uns wichtigsten Parameter sind: Zeile, Spalte, Code

Ich werde jetzt diese Parameter anhand einer Listbox mit zwei Spalten vorstellen (Funktion neu_2).

 

Zunächst einmal ist wichtig, daß Access diese Funktion desöfteren mit verschiedenen Parametern aufruft. Die Anzahl der Aufrufe ist unbestimmt und kann nicht vorausgesagt werden.

„Zeile" und „Spalte" gibt bei den Aufrufen an, welche Zeile und Spalte Access nun mit Werten füllen will.

„Code" ist ein von Access übergebener Parameter, der verschiedene Werte liefert. Wir können diese Werte interpretieren und demgemäß Access Werte über den Funktionsnamen zurürckliefern.

 

 

Werte für „Code":

0 Þ Initialiserung möglich. Es ist sinnvoll hier ein Array mit den von Ihnen gewünschten Werten zu füllen. Sind Sie fertig, so geben Sie einen Funktionswert ungleich 0 an Access zurück.

1 Þ Access verlangt hier als Funktionswert eine eindeutige ID. Geben Sie hier zum Bsp. „Timer" zurück.

3 Þ Funktionswert = Anzahl der gweünschten Zeilen (Array-Größe)

4 Þ Funktionswert = Anzahl der gewünschten Spalten

5 Þ Funktionswert = Spaltenbreite in Twips (-1=Standardwert)

6 Þ Funktionswert = Datenwert, der in der Listbox dargestellt werden soll. Hier können auch die Parameter „Zeile" und „Spalte" von Ihnen ausgwertet werden.

7 Þ Formatangabe möglich. Es wird jedoch empfohlen diesen Parameter nicht zu verwenden. Arbeiten Sie vorzugsweise mit dem Befehl Format$, und formatieren Sie so das von Ihnen gefüllte Array.

Die eigentliche Arbeit ist jetzt geschehen. Sie müssen nun nur noch in einem Formular eine Listbox anlegen, dessen „Herkunftstyp" (siehe Eigenschaften) den Wert „neu2" enhält.

 

Mitgelieferter Programmcode

 

Option Compare Database

 

Dim db As Database

Dim rs As Recordset

Dim daten(200) As String * 30

Dim datei(200) As String * 30

Dim datei1(200) As String * 30

Dim datei2(200) As String * 30

Dim menge As Integer

Dim menge1 As Integer

Dim menge2 As Integer

Dim menge3 As Integer

Dim i As Integer

 

 

Function fktfüllen1 (fld As Control, id As Variant, zeile As Variant, spalte As Variant, code As Variant)

 

Select Case code

Case 0

fktfüllen1 = True

Case 1

fktfüllen1 = 10

Case 3

fktfüllen1 = menge

Case 4

fktfüllen1 = 1

Case 5

fktfüllen1 = -1

Case 6

fktfüllen1 = daten(zeile)

Case 7

fktfüllen1 = Null

End Select

 

End Function

 

 

 

Function neu (fld As Control, id As Variant, zeile As Variant, spalte As Variant, code As Variant)

 

Dim i As Integer

 

Select Case code

Case 0 'init

Set db = dbengine.workspaces(0).databases(0)

Set rs = db.OpenRecordset("Teile", db_open_dynaset)

 

rs.MoveFirst

i = 0

 

Do Until rs.eof

 

daten(i) = rs("Bezeichnung")

i = i + 1

rs.MoveNext

Loop

menge = i - 1

 

rs.Close

db.Close

neu = True 'Rückgabewert != 0

Case 1 'eindeutiger ID

neu = Timer

Case 3 'Zeilenzahl

neu = menge

Case 4 'Spaltenzahl

neu = 1

Case 5 'Spaltenbreite in Twips (-1 => Standard)

neu = -1

Case 6 'Übertragung der Daten

neu = daten(zeile)

Case 7 'Formatierungsangabe möglich (Null => Standard)

neu = Null

End Select

 

End Function

 

 

Function neu_2 (fld As Control, id As Variant, zeile As Variant, spalte As Variant, code As Variant)

 

Select Case code

Case 0 'init

'init der ersten Spalte

Set db = dbengine.workspaces(0).databases(0)

Set rs = db.OpenRecordset("Teile", db_open_dynaset)

 

rs.MoveFirst

i = 0

 

Do Until rs.eof

 

daten(i) = rs("Bezeichnung")

i = i + 1

rs.MoveNext

Loop

menge1 = i - 1

 

rs.Close

db.Close

 

'init der zweiten Spalte

i = 0

datei(i) = Dir("c:\dos\*.*")

i = i + 1

Do

datei(i) = Dir

i = i + 1

 

Loop Until datei(i - 1) = ""

i = i - 1

 

If (i > menge1) Then

menge1 = i

End If

neu_2 = True 'Rückgabewert != 0

Case 1 'eindeutiger ID

neu_2 = Timer

Case 3 'Zeilenzahl

neu_2 = menge1

Case 4 'Spaltenzahl

neu_2 = 2

Case 5 'Spaltenbreite in Twips (-1 => Standard)

neu_2 = -1

Case 6 'Übertragung der Daten

If spalte = 0 Then

neu_2 = daten(zeile)

Else

neu_2 = datei(zeile)

End If

Case 7 'Formatierungsangabe möglich (Null => Standard)

neu_2 = Null

End Select

 

End Function

 

 

 

 

Function neu3 (fld As Control, id As Variant, zeile As Variant, spalte As Variant, code As Variant)

 

Select Case code

Case 0 'init

i = 0

datei1(i) = Dir("c:\dos\*.*")

i = i + 1

Do

datei1(i) = Dir

i = i + 1

 

Loop Until datei1(i - 1) = ""

i = i - 1

menge2 = i

neu3 = True 'Rückgabewert != 0

Case 1 'eindeutiger ID

neu3 = Timer

Case 3 'Zeilenzahl

neu3 = menge2

Case 4 'Spaltenzahl

neu3 = 1

Case 5 'Spaltenbreite in Twips (-1 => Standard)

neu3 = -1

Case 6 'Übertragung der Daten

neu3 = datei1(zeile)

Case 7 'Formatierungsangabe möglich (Null => Standard)

neu3 = Null

End Select

 

End Function

 

Function neu4 (fld As Control, id As Variant, zeile As Variant, spalte As Variant, code As Variant)

 

Select Case code

Case 0 'init

i = 0

'Beim aller ersten mal enthält feld13 NULL => Fehler !!

'Vorbeugung durch folgendes if !

If IsNull(feld13) Then

auswahl = "c:\windows\" + Left$(Dir("c:\dos\*.*"), 1) + "*.*"

Else

auswahl = "c:\windows\" + Left$(feld13, 1) + "*.*"

End If

 

datei2(i) = Dir(auswahl)

If datei2(i) <> "" Then

i = i + 1

Do

datei2(i) = Dir

i = i + 1

 

Loop Until datei2(i - 1) = ""

i = i - 1

End If

menge3 = i

neu4 = True 'Rückgabewert != 0

Case 1 'eindeutiger ID

neu4 = Timer

Case 3 'Zeilenzahl

neu4 = menge3

Case 4 'Spaltenzahl

neu4 = 1

Case 5 'Spaltenbreite in Twips (-1 => Standard)

neu4 = -1

Case 6 'Übertragung der Daten

neu4 = datei2(zeile)

Case 7 'Formatierungsangabe möglich (Null => Standard)

neu4 = Null

End Select

End Function

 

 

Sub Feld13_AfterUpdate ()

feld15.Requery

End Sub

 

 

Debugger

Das Direktfenster

 

Im Direktfenster können einzelne Zeilen von Access Basic-Code ausgeführt werden und es kann in den folgenden Situationen verwenden werden :

Testen und Debuggen von Funktionen und Sub-Prozeduren.

Überprüfen des Wertes eines Feldes, eines Steuerelements oder der Einstellungen einer Eigenschaft

Anzeigen des Wertes einer Variablen oder eines Ausdrucks, wenn die Ausführung des Codes angehalten wurde.

 

Das Direktfenster kann aus dem Modulfenster über die entsprechende Schaltfläche oder dem Menü Ansicht erreicht werden.

 

Testen von Funktionen und Sub-Prozeduren

 

Sub-Prozeduren können im Direktfenster unter der Angabe ihres Namens oder mit Hilfe der Call-Anweisung gestartet werden. Die Klammern für Parameter können bei Prozeduren weggelassen werden, sobald diese keine Argumente benötigen. Funktionen können mit der Anweisung "Debug.Print" getestet werden. Da innerhalb des Direktfensters standardmäßig das Systemobjekt Debug verwendet wird, kann auch nur die Anweisung "Print" genutzt werden. Zusätzlich gilt, wie in Access-Basic üblich, auch das (?) als Ersatz für die Print-Anweisung.

Zum Testen der parmeterlosen Funktion bzw. Prozedur "DeckungsbeitragBerechnen" müßte z.B. folgendes eingeben werden :

Funktion: Debug.Print DeckungsbeitragBerechnen()

Prozedur: DeckungsbeitragBerechnen

Call DeckungsbeitragBerechnen

Access Basic führt die Funktion (Prozedur) aus und zeigt das Ergebnis im Direktfenster an. Wurde eine Funktion (Prozedur) schon mal ausgeführt, kann dieses durch die Positionierung des Cursors auf die entsprechende Zeile und Betätigung der EINGABE-Taste jederzeit wiederholt werden.

 

Überprüfen des Werts eines Feldes, eines Steuerelements oder einer Eigenschafteneinstellung in einem Formular oder Bericht

 

Durch die Anweisung "Print" gefolgt von einem Bezeichner für ein Feld, ein Steuerelement oder eine Eigenschaft, das bzw. die einem geöffneten Formular oder Bericht zugeordnet ist, kann dessen Wert im Direktfenster überprüft werden..

 

Beispiel:

Bei geöffnetem Formular "Produkte", kann durch den Befehl

? Forms![Produkte]![Bezeichnung]

 

der aktuelle Wert des Feldes "Bezeichnung" ausgegeben werden.

 

Anzeigen des Werts einer Variablen oder eines Ausdrucks, während der Ausführung

 

In den Source-Code muß die Anweisung Debug.Print, mit der entsprechenden Variable oder dem entsprechendem Ausdruck, hinzugefügt werden. Jedesmal, wenn die Prozedur mit der Anweisung Debug.Print aufgerufen wird, erscheint der Wert der Variablen oder des Ausdrucks im Direktfenster.

 

Beispiel:

Sub test1 ()

Dim a As Integer

 

MsgBox "Hallo World": Debug.Print "Hallo world"

a = 6

While a

a = a - 1

Debug.Print "a = ", a

Wend

End Sub

 

Nach der Anzeige der Message-Box wird im Direktfenster auch „Hallo World" ausgegeben. Anschließen erfolgt innerhalb der While-Schleife bei jedem Schleifendurchlauf die Anzeige des Wertes der Variablen „a".

 

Anzeigen des Werts einer Variablen oder eines Ausdrucks, wenn die Ausführung des Codes angehalten wurde

 

Wenn im Direktfenster eine Prozedur mit einem Haltepunkt ausgeführt wird, kann während der Ausführungspause der Inhalt einer Variablen oder eines Ausdrucks mit dem Befehl Debug.Print abgefragt werden. Dabei ist die Sichtbarkeit der Variablen und Prozeduren zu beachten.

Schrittweises Ausführen von Prozeduren und Verwendung von Haltepunkten

 

Standard Prozeduren

 

Die Wirkung jeder Anweisung der aktuellen Prozedur kann, durch schrittweise (zeilenweise) Ausführung des Codes, beobachtet werden.

Es existieren zwei Arten der schrittweisen Ausführung , die sich beim Aufruf von Prozeduren unterscheiden. Mit dem Befehl Einzelschritt wird bei einem Prozeduraufruf in diese gesprungen und zeilenweise durchlaufen. Mit dem Befehl Prozedurschritt wird bei einem Prozeduraufruf die Prozedur als Einheit ausgeführt und dann mit der nächsten Anweisung der aktuellen Prozedur fortgefahren.

Damit eine Prozedur schrittweise ausgeführt werden kann, muß zuerst ein Haltepunkt gesetzt werden und anschließend die Prozedur über das Direktfenster gestartet werden. Ein Haltepunkt wird durch anklicken des entsprechenden Schaltzeichens für die aktuelle Zeile der Prozedur gesetzt. Sobald der Haltepunkt erreicht wurde, kann die Prozedur entweder schrittweise oder bis zum nächsten Haltepunkt ausgeführt werden.

 

Ereignisprozeduren

 

Ereignisprozeduren können über ihr Entwurffenster getestet werden. Soll eine Ereignisprozedur in Einzelschritten ausgeführt werden, muß zuerst in der Entwurfsansicht ein geeigneter Haltepunkt gesetzt werden (vgl. 7.2.1). Anschließend muß zu dem zugehörigen Formular gewechselt werden, ohne das Entwurfsfenster zu beenden. Nun wird das gewünschte Ereignis ausgelöst und die Prozedur wird an dem gesetztem Haltepunkt angehalten. Es stehen nun alle Funktionen für den Test einer Prozedur zur Verfügung (s.o.).


Zurück zur Studium-Seite


Who is who

 

1 Objekte, Eigenschaften und Methoden Torsten Simon

2 Bilden von Ausdrücken Mario Gans

3 Erstellen von Abfragen Arndt Blumenthal

4 Verwenden von SQL Johannes Greser

5 Makros Mario Gans

1 Datentypen Mario Gans

2 Kontrollstrukturen Arndt Blumenthal

3 Objekttypen und Objektvariablen Torsten Simon

4 Module, Sub-Prozeduren und Funktionen Johannes Greser

5 Standardfunktionen Johannes Greser

6 Flexible Listenfelder und Kombinationsboxen Torsten Simon

7 Debugger Arndt Blumenthal


Zurück zur Studium-Seite