Der SQL-Dialekt von Access bietet einige Möglichkeiten, die in der Entwicklergemeinde nur wenig beachtet werden. Der Hauptgrund dafür ist die schlechte Dokumentation dieser Features durch Microsoft. Einige dieser “geheimen” Funktionen können in der Praxis durchaus nützlich sein.

SQL-änderungen in Jet 4

Jet-SQL hat sich über die fast 15 Jahre ihres Bestehens relativ wenig verändert. Die stärksten änderungen und Erweiterungen des Sprachumfangs hat Microsoft 1999 mit dem Erscheinen von Access 2000, also mit Jet 4, vorgenommen. Access 2000 war bekanntlich die Version mit den meisten Neuerungen in der Access-Geschichte.

Unter anderem wurde mit den Access Projekten (ADP) und der Einführung von ADO die Verbindung zum hauseigenen SQL Server verstärkt. Die meisten änderungen in Jet-SQL dienten demselben Ziel.

Sie sollten den SQL-Dialekt von Access näher an den ANSI 92-Standard heranführen und vor allem kompatibler mit dem SQL Server machen. Microsoft wollte damit in erster Linie den Umstieg oder das spätere Upsizing auf ein SQL Server-Backend erleichtern.

Aus diesem Grund und wohl auch, weil Microsoft damals die Verwendung von ADO vorantreiben wollte, lassen sich viele der Neuerungen nur über den OLE-DB-Provider und ADO aufrufen, nicht über DAO oder im Abfrageentwurfsfenster von Access.

Dennoch können sie natürlich auch in reinen Access/Jet-Applikationen verwendet werden. Sie brauchen zur Ausführung des SQL-Statements immer dann einen Verweis auf die ADO-Bibliothek, wenn es sich auf eine andere als die aktuelle Datenbank bezieht, um ein neues Connection-Objekt instanzieren zu können.

Dazu aktivieren Sie in der VBE unter Extras/Verweise den Eintrag Microsoft ActiveX Data Objects 2.x Library. Das x kann sich je nach installierter Access- oder MDAC-Version unterscheiden, spielt hier aber keine Rolle. Der Code für die Ausführung des SQL-Statements sieht dann zum Beispiel so aus:

Dim cnn As New ADODB.Connection
Dim strSQL As String
'für die aktuelle Datenbank
'Set cnn = Application.CurrentProject.Connection
'für eine andere Datenbank
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
 "Data Source=C:\Pfad\MeineExterne.mdb;"
strSQL = "HierDasSQLStatement"
cnn.Execute strSQL
cnn.Close
Set cnn = Nothing

ALTER COLUMN

Der wichtigste neue Befehl in Jet 4, der inzwischen auch die größte Bekanntheit erlangt hat, ist ALTER COLUMN. Ich erwähne ihn hier, weil ich durchaus noch oft DAO-Code sehe, der Tabellenfelder ändert, und sich durch einen einfachen und effizienten ALTER COLUMN-Befehl ersetzen lässt. Es geht dabei meist um die änderung des Datentyps eines Feldes oder um die änderung der Feldgröße.

Bis Access 97 musste man dazu per DAO-Code das alte Feld umbenennen, ein neues mit dem gewünschten Datentyp oder der gewünschten Feldgröße erzeugen, die Daten in das neue Feld übernehmen und abschließend das alte Feld löschen.

Ab Access 2000 geht das alles mit einem schlichten SQL-Befehl. Folgendes Code-Beispiel ändert die Feldgröße eines Textfeldes in einer Tabelle der aktuellen Datenbank auf 100 (in einer Zeile):

Currentdb.Execute "ALTER TABLE Tabelle ALTER COLUMN Feld VARCHAR(100)"

Bei der üblichen Backend/Frontend-Aufteilung muss das Execute natürlich in der externen Backend-Datenbank ausgeführt werden. Der Code im Frontend lautet dann:

Dim db As DAO.Database
Set db = DBEngine.Workspaces(0).OpenDatabase("c:\Pfad\Andere.mdb")
db.Execute "ALTER TABLE Tabelle " _
& "ALTER COLUMN Feld VARCHAR(100)"

ALTER COLUMN funktioniert also mit DAO. Sie können auch den bloßen SQL-Befehl in die SQL-Ansicht einer Abfrage schreiben, also (in einer Zeile)

ALTER TABLE Tabelle ALTER COLUMN Feld 
VARCHAR(100)

dort ausführen und auch als DDL-Abfrage (Data Definition Language) zur späteren Verwendung speichern.

Autowerte

In der Theorie sollten Autowerte nur für Mechanismen verwendet werden, die der Anwender nie zu sehen bekommt – vor allem als Primärschlüssel von Tabellen, wenn sich keine anderen Felder dafür anbieten. Für sichtbare Zählungen sollte man hingegen selbst verwaltete Zahlenfelder verwenden. Daher sollte der konkrete Wert eines Autowertfeldes eigentlich nie eine Rolle spielen. In der Praxis jedoch verwenden viele Anwender Autowertfelder als sichtbaren Zähler.

Erfahrene Entwickler verwenden Autowertfelder zwar meistens richtig. Oft möchten sie aber einen bestimmten Startwert für Tests einstellen oder bei der Erstinstallation beim Kunden den Autowert wieder mit 0 beginnen lassen – etwa, um später auf den ersten Blick zu sehen, ob sich in einer Tabelle viel tut.

Bis zum Service Pack 4 von Jet 4 konnte man alle Autowerte durch einfaches Komprimieren der Datenbank auf den niedrigsten freien Wert zurücksetzen. Seit dem SP 4 funktioniert das nicht mehr.

Microsoft liefert dazu den KnowledgeBase-Artikel 287756, der einen umständlichen Workaround mit viel Code anbietet. Wesentlich einfacher ist das Einstellen des Startwertes per SQL:

ALTER TABLE Tabelle ALTER COLUMN MeinAutowertFeld COUNTER (1)

Damit beginnt der Autowert in der Tabelle wieder bei 1 zu zählen.

Neben dem Startwert lässt sich mit einem zweiten Parameter auch die Schrittweite des Feldes einstellen:

ALTER TABLE Tabelle ALTER COLUMN MeinAutowertFeld COUNTER (100,3)

Der nächste Autowert der Tabelle lautet 100, dann folgen 103, 106 und so weiter. Diese Option wird man in der Praxis wohl nur selten einsetzen.

Synonyme

Statt COUNTER wären für den Datentyp Autowert im vorigen Beispiel ebenso gut die Synonyme AUTOINCREMENT oder IDENTITY einsetzbar. Generell gibt es seit Jet 4 für jeden Datentyp mehrere Synonyme, von denen mindestens eines aus dem Sprachumfang von T-SQL stammt. Also wieder der Versuch, den Umstieg auf den Microsoft SQL Server zu erleichtern.

Bei diesen Synonymen wurde sogar mehr Wert auf diesen Aspekt gelegt als auf den ANSI SQL Standard. So gibt es beispielsweise für den Datentyp OLE-Objekt vier mögliche Varianten: OLEOBJECT, IMAGE, LONGBINARY, GENERAL. Sie können also zum Beispiel ein OLE-Objekt-Feld wie folgt zu einer Tabelle hinzufügen:

ALTER TABLE Tabelle ADD COLUMN NeuesFeld IMAGE

IMAGE ist T-SQL. Im ANSI Standard heißt der Typ hingegen BLOB.

Eine Auflistung der Synonyme samt Vergleich mit ANSI und T-SQL gibt es in allen Onlinehilfen ab Access 2000, Suchbegriff ANSI SQL-Datentypen. Manche der Synonyme sind nur per OLE DB/ADO einsetzbar.

Standardwerte

Bis Access 97 kann man Standardwerte für Tabellenfelder nur per DAO-Code einstellen. Ab Access 2000 gibt es das SQL-Schlüsselwort DEFAULT. Es ist nur per OLE DB/ADO einsetzbar.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar

Zusammenfassung

Fügen Sie Ihren Anwendungen ein komfortables Zoom-Fenster für Textfelder hinzu.

Techniken

Formulare, VBA

Voraussetzungen

Access 2000 und höher

Beispieldatei

ZoomVonTexten.mdb

André Minhorst, Duisburg

Textfelder reichen nicht immer für die Anzeige des Inhalts von Text- oder Memofeldern aus. Das liegt meist daran, dass das zugrunde liegende Formular nicht nur einige, sondern eine ganze Menge Informationen anzeigen soll. Was beim Lesen wenig Spaß macht, wird beim Bearbeiten zur Qual. Warum fügen Sie Ihren Anwendungen also nicht einfach ein Zoom-Fenster zum Anzeigen und Bearbeiten umfangreicherer Text hinzu

Access bietet eine eigene Zoom-Funktion, die ihrem Namen aber in einigen Access-Versionen keine Ehre macht:

Dort können Sie zwar den Inhalt eines Textfeldes etwas übersichtlicher anzeigen, aber die Schriftgröße lässt sich nicht in allen Versionen anpassen (in Access 2003 funktioniert es).

Außerdem lässt sich auch das Feld zur Anzeige des Textes nicht vergrößern und auch der Aufruf ist für Nichteingeweihte nicht gerade intuitiv. Dazu dient nämlich die Tastenkombination Umschalt + F2.

Also bauen Sie sich Ihr eigenes Zoom-Fenster. Es soll folgende Funktionen bieten:

  • Aufruf durch eine Ereignisprozedur, beispielsweise per Doppelklick
  • Anpassen der Schriftgröße durch zwei Schaltflächen zum Vergrößern und Verkleinern der aktuellen Größe
  • Anpassen der Größe des Formulars und der enthaltenen Steuerelemente
  • Bild 1: Das neue Zoom-Fenster

    Ausstattung des Zoom-Fensters

    Das Zoom-Fenster enthält sechs Steuerelemente: Das Textfeld txtText zeigt den Text des aufrufenden Textfeldes an. Die vier Schaltflächen cmdZoomIn, cmdZoomOut, cmdOK und cmdAbbrechen sind allesamt keine Standard-Access-Schaltflächen, sondern Schaltflächen der MSForms-Bibliothek. Diese fügen Sie über den Dialog ActiveX-Steuerelement einfügen ein (Menüeintrag Einfügen/ActiveX-Steuerelement einfügen…). Diese Schaltflächen bieten den Vorteil, dass sie transparente Icon-Dateien als Schaltflächensymbole anzeigen können.

    Quellcode 1: Größe des Zoom-Fensters anpassen

    Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

    den kompletten Artikel im PDF-Format mit Beispieldatenbank

    diesen und alle anderen Artikel mit dem Jahresabo

    Schreibe einen Kommentar

    Zusammenfassung

    Sie lernen die Steuerelemente zur Erstellung von Windows-Anwendungen mit .NET kennen und erfahren, wie Sie diese programmieren können.

    Techniken

    VB.NET

    Voraussetzungen

    Visual Studio .NET

    Beispieldateien

    Steuerelemente.zip

    Manfred Hoffbauer, Düsseldorf

    Bei der Gestaltung einer Windows-Anwendung mit Microsoft .NET verwenden Sie viel Zeit auf die Anordnung und Programmierung von Steuerelementen. Sie dienen der Eingabe, Bearbeitung und Anzeige von Daten und bedürfen deshalb besonderer Sorgfalt.

    Eine typische Windows-Anwendung besteht aus Formularen, Textfeldern, Kombinationsfeldern, Dialogboxen, Menüleisten und anderen Elementen, die auf dem Bildschirm angezeigt werden. Der folgende Beitrag beschreibt die Grundlagen zur Programmierung dieser Elemente.

    Objektklassen für Formulare

    Durch die Brille des Programmierers betrachtet ist ein Formular nichts anderes als ein Objekt der Klasse System.Windows.Forms. Ein Steuerelement ist etwa ein Objekt der Klasse System.Windows.Forms.TextBox. Microsoft .NET stellt für jeden Steuerelementtyp jeweils eine Objektlasse zur Verfügung. Alle diese Klassen sind von System.Windows.Forms.Control vererbt. Dies ist auch der Grund dafür, dass Steuerelemente und Formulare viele ähnlichkeiten haben.

    Etwas aus Reihe tanzen die so genannten Komponenten wie beispielsweise Menüzeilen. Die Klasse System.Windows.Forms.Menu erbt nicht von der Klasse Controls, sondern von System.Windows.Forms.Menu. Aus diesem Grund unterscheiden sich Menüs in Handhabung und Eigenschaften teilweise erheblich von Formularen und Steuerelementen.

    Weitere Beispiele für Komponenten sind die Klassen MenuItem, ToolTip, ErrorProvider, ContextMenu, Help und HelpProvider.

    Als dritte Gruppe im Bunde lassen sich die Common Dialog Boxes herauskristallisieren. Hierzu zählen OpenFileDialog, SaveFileDialog, FontDialog, PageSetupDialog, PrintPreviewDialog, PrintDialog und MessageBox.

    Diese Objektklassen spiegeln im Wesentlichen die entsprechenden Funktionen der Benutzeroberfläche von Windows wider und bieten daher wenig Neues. Insbesondere die MessageBox-Klasse dürfte Ihnen bereits aus der Programmierung von VBA bekannt sein.

    In .NET ist die Klasse aber nur zu verwenden, wenn Ihre Assembly einen Verweis auf System.Windows.Forms enthält. Dies ist in Formularen immer der Fall, da diese von der Klasse Forms vererbt werden. In anderen Objektklassen müssen Sie den Verweis im Solution Explorer hinzufügen. Klicken Sie die Solution mit der rechten Maustaste an und wählen Sie den Befehl Add Reference aus dem Kontextmenü.

    Zur Verwendung der MessageBox-Klasse müssen Sie entweder mit

    Imports System.Windows.Forms

    den Namenspace importieren oder Sie verwenden stets den voll qualifizierten Namen:

    System.Windows.Forms.MessageBox.Show("Hallo.")

    Gemeinsame Eigenschaften von Formularen und Steuerelementen

    Da Formulare und Steuerelemente von System.Windows.Forms.Control vererbt sind, haben sie gemeinsame Eigenschaften.

    Mit einem Trick können Sie sich diese in Visual Studio anzeigen lassen:

  • Starten Sie Microsoft Visual Studio.NET.
  • öffnen Sie mit Datei/Neu/Projekt den gleichnamigen Dialog.
  • Markieren Sie den Projekttyp Microsoft Visual Basic Projekte.
  • Klicken Sie auf das Template Windows Applikation.
  • Geben Sie den Namen Steuerelemente für das Projekt ein.
  • Klicken Sie auf die Schaltfläche OK.
  • Nachdem das Projekt erstellt ist, wählen Sie den Befehl Datei/Neues Element hinzufügen aus der Liste.
  • Markieren Sie das Template Windows Formular.
  • Geben Sie den Text Steuerelemente als Namen für das Formular ein.
  • Klicken Sie auf die Schaltfläche öffnen. (
  • Microsoft Visual Studio erzeugt daraufhin ein neues, leeres Formular. Falls nicht bereits geschehen, können Sie mit Ansicht ( Toolbox die Toolbox einblenden. Dort finden Sie eine Liste aller Steuerelementtypen, die Sie direkt in Formularen verwenden können. Markieren Sie das TextBox-Symbol und klicken Sie innerhalb des Formulars. Anschließend können Sie mit festgehaltener Umschalttaste und durch Anklicken mit der Maus das TextBox-Steuerelement und das Formular markieren. Wenn beide Elemente markiert sind, zeigt Visual Studio im Eigenschaftenfenster wie in Abbildung 1 eine Liste der gemeinsamen Eigenschaften.

    Bild 1: Dieses Fenster zeigt die gemeinsamen Eigenschaften von Steuerelementen und Formularen.

    Wenn bei einer Eigenschaft der Wert für das Formular und das Textfeld identisch sind, dann kann Visual Studio ihn für beide gleichzeitig anzeigen. Dies trifft beispielsweise für die Eigenschaft Font mit dem Wert Microsoft Sans Serif; 8,25pt zu. Bei unterschiedlichen Werten wie Location und Size enthält das Eigenschaftenfenster nur den Namen und eine leere Anzeige für den Wert.

    Quellcode 1: Vom Form-Designer automatisch generierter Code

    ...
    Friend WithEvents txtIhrName As System.Windows.Forms.TextBox
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
    Me.txtIhrName = New System.Windows.Forms.TextBox
    Me.SuspendLayout()
    Me.txtIhrName.Location = New System.Drawing.Point(24, 32)
    Me.txtIhrName.Name = "txtIhrName"
    Me.txtIhrName.Size = New System.Drawing.Size(176, 20)
    Me.txtIhrName.TabIndex = 0
    Me.txtIhrName.Text = "TextBox1"
    ...
    Me.Controls.Add(Me.txtIhrName)

    Einige Eigenschaften lassen sich gleichzeitig für die markierten Steuerelemente verändern. Wenn Sie den Text Haufe in die Eigenschaft Text eingeben, dann ändern Sie gleichzeitig die Text-Eigenschaft des Textfelds und des Formulars. Beim Formular wird der Text dann in der Titelleiste anzeigt.

    Aber wie kommen nun die Steuerelemente auf das Formular Microsoft Access verwaltet die Steuerelemente als eigene Objekte. Ihre Größe, Position und anderen Eigenschaften speichert es in den Systemtabellen. Auf diese kann Visual Studio glücklicherweise verzichten. Wenn Sie hier ein Steuerelement auf die Arbeitsfläche ziehen, dann wird sofort der Programmcode zur Anlage des Steuerelements generiert.

    Generierter Programmcode

    Zum Test sollten Sie Ihrem Formular einmal ein Textfeld hinzufügen. ändern Sie die Eigenschaft Name auf txtIhrName. Mit den folgenden Schritten können Sie sich den generierten Code ansehen:

  • Betätigen Sie die F7-Taste, um in die Codeansicht zu wechseln.
  • Klicken Sie doppelt auf den Text Windows Form Designer generated code. (
  • Visual Studio generiert daraufhin die Codezeilen aus Quellcode 1.

    Die erste Anweisung befindet sich im Deklarationsbereich der Objektklasse. Sie definiert die Objektvariable mit dem Namen txtIhrName vom Typ der Klasse TextBox.

    Der Programmcode des Formulars ist so aufgebaut, dass die Prozedur InitializeComponent aus dem Konstruktor des Formulars aufgerufen wird. Die Befehle werden also bei jedem Instanzieren eines Formularobjekts durchlaufen.

    Die New-Anweisung erzeugt ein neues TextBox-Objekt und weist es der txtIhrName-Variablen zu. Die darauf folgenden Anweisungen definieren die Eigenschaften des Steuerelements. Die Postion wird durch eine X/Y-Koordinate innerhalb des Formulars spezifiziert. Die Angabe erfolgt in Pixel ab der linken oberen Ecke der Arbeitsfläche des Formulars. Es folgen die Werte für die Name-, die Size- und die TabIndex-Eigenschaft. Die Text-Eigenschaft enthält den Text, der innerhalb des Steuerelements angezeigt wird. Die Anweisung

    Me.Controls.Add(Me.txtIhrName)

    fügt das Steuerelement schließlich der Controls-Auflistung des Formulars hinzu.

    Hinweis

    Beachten Sie, dass der hier gezeigte Programmcode von Visual Studio.NET generiert wurde. Falls Sie einen anderen Editor benutzen, dann kann der Programmcode anders aussehen. Wenn Sie gar keinen Editor verwenden, dann können Sie ebenfalls Steuerelemente innerhalb von Formularen anzeigen. Sie müssen dann lediglich den Code zur Anlage der Steuerelemente selbst schreiben.

    Quellcode 2: Die automatisch angelegte Ereignisprozedur …

    Private Sub btnEigenschaftenändern_Click(ByVal sender As System.Object, _    ByVal e As System.EventArgs) Handles btnEigenschaftenändern.Click
    End Sub

    Quellcode 3: … füllen Sie mit diesem Code auf.

    Dim ColorOld As System.Drawing.Color
    Dim i, WidthOld, XOld, X, YOld, Y As Integer
    ColorOld = Me.txtIhrName.BackColor
    Me.txtIhrName.BackColor = System.Drawing.Color.Blue
    Me.Refresh()
    System.Threading.Thread.CurrentThread.Sleep(500)
    Me.txtIhrName.BackColor = System.Drawing.Color.Yellow
    XOld = Me.txtIhrName.Location.X
    YOld = Me.txtIhrName.Location.Y
    WidthOld = Me.txtIhrName.Width
    For X = 100 To 0 Step -1
        Y = Me.txtIhrName.Location.Y
        Me.txtIhrName.Location = New System.Drawing.Point(X, Y + 2)
        Me.txtIhrName.Width = X
        System.Threading.Thread.CurrentThread.Sleep(10)
        Me.Refresh()
    Next
    Me.txtIhrName.Location = New System.Drawing.Point(XOld, YOld)
    Me.txtIhrName.Width = WidthOld
    Me.txtIhrName.BackColor = ColorOld

    Sie sollten sich vergegenwärtigen, dass bei .NET alle Steuerelemente und alle Formulare durch Programmcode erzeugt und angezeigt werden. Dies ist ein wesentlicher Unterschied zu Microsoft Access.

    Ereignisprozeduren anlegen

    Jedes Steuerelement verfügt über eine Reihe von Ereignissen, die es unter bestimmten Voraussetzungen auslösen kann. Ein besonders häufiges Ereignis ist das Click-Ereignis des Button-Controls. Das Click-Ereignis wird ausgelöst, wenn der Benutzer auf eine Schaltfläche klickt.

    Mit dem folgenden Beispiel legen Sie eine Schaltfläche inklusive Ereignisprozedur an. Der Programmcode der Ereignisprozedur verändert die Eigenschaften eines Textfelds in der Weise, dass es nach links unten aus dem Formular heraus fällt. Gehen Sie dazu wie folgt vor:

    Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

    den kompletten Artikel im PDF-Format mit Beispieldatenbank

    diesen und alle anderen Artikel mit dem Jahresabo

    Schreibe einen Kommentar

    Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

    Klaus Giesen, Wuppertal

    Störungen verschiedener Art sind in einem Unternehmen trotz bester Vorkehrungen leider nicht ganz zu verhindern. Ihre Behebung verlangt übersicht und Organisation der einzelnen Schritte. Zur Erledigung dieser Aufgaben bietet sich die Verwendung einer entsprechend konzipierten Access-Datenbank an, der so genannten TroubleTicket-Verwaltung.

    Die wesentlichen Aufgaben einer TroubleTicket-Verwaltung lassen sich mit den Schlagworten Organisation und überblick zusammenfassen.

    Bild 1: Die Tabelle tblTrouble in der Entwurfsansicht

    Organisation

    Organisation bedeutet in diesem Zusammenhang in erster Linie die Erstellung einer Liste der nötigen Aufgaben und deren Verteilung an die entsprechenden Mitarbeiter. Dabei soll pro Aufgabe die Auswahl mehrerer Mitarbeiter möglich sein.

    überblick

    Eine TroubleTicket-Verwaltung sollte einen bequemen überblick über die folgenden Fakten bieten:

  • den Status aller Aufträge
  • die Aufgaben der einzelnen Bearbeiter
  • nicht erledigte Störfälle
  • Weiterhin sollte eine TroubleTicket-Verwaltung auch die Möglichkeit bieten, direkt E-Mail-Nachrichten zu versenden. Auf diese Weise kann nach der Aufnahme einer Störung und der Neuanlage eines TroubleTickets in der Datenbank direkt der entsprechende Mitarbeiter per E-Mail über seine neue Aufgabe informiert und die Störung damit schnellstmöglich behoben werden.

    Hinweis

    Sie finden die Musterlösung zur TroubleTicket-Verwaltung in den Versionen für Access 97 (TroubleTicket97.mdb) und Access 2000 (TroubleTicket2000.mdb) auf der CD-ROM zum aktuellen Heft im Ordner mdb bzw. Musterlösungen.

    Die TroubleTicket-Verwaltung besteht aus den drei zentralen Tabellen tblTrouble, tblToDoListe und tblBearbeiter.

    Die Tabelle tblTrouble

    Die Tabelle tblTrouble (siehe Bild 1) dient der Erfassung der Störungen. Die Namen der Felder und eine dazugehörende Beschreibung entnehmen Sie der Tab. 1.

    Feld

    Beschreibung

    TroubleID

    Primärschlüsselfeld

    StatusID

    Fremdschlüsselfeld zur Tabelle tblStatus zum Festlegen des aktuellen Status.

    AbsenderName

    Die Person, die den Störfall gemeldet hat

    AbsenderAbteilung

    Abteilung der Person

    AbsenderDurchwahl

    Telefondurchwahl der Person

    AbsenderEmail

    E-Mail-Adresse der Person

    TroubleProblem

    Bezeichnung der Störung

    TroubleBeschreibung

    Beschreibung der Störung

    DatumAnlage

    Datum der Anlage der Störung

    DatumFaelligkeit

    Datum, bis zu dem die Störung behoben sein soll

    DatumErledigt

    Datum, an dem der gesamte Vorgang abgeschlossen wurde

    Tab. 1: Felder und Beschreibung der Tabelle tblTrouble

    Standardwert und Gültigkeitsregel

    Bei der Erfassung einer Störung kann unter Umständen der genaue Zeitpunkt der Erfassung von Bedeutung sein. Dies können Sie für das Feld DatumAnlage mit Hilfe der Eigenschaft Standardwert in der Tabelle sicherstellen.

    Mit Hilfe der Eigenschaft Gültigkeitsregel verhindern Sie, dass dort ein unsinniges Datum eingegeben wird: Das Anlagedatum kann nur das aktuelle Datum oder ein vergangenes Datum sein.

  • Aktivieren Sie im Tabellenentwurf für das Feld DatumAnlage das Register Allgemein.
  • Geben Sie in das Feld Standardwert die Funktion Jetzt() ein (siehe Bild 2).
  • Nun folgt die Erstellung der Gültigkeitsregel. Geben Sie in das Feld Gültigkeitsregel den Ausdruck <=Jetzt() ein.
  • Legen Sie abschließend noch einen passenden Wert für die Eigenschaft Gültigkeitsmeldung fest. Diese Meldung wird dann bei der Eingabe eines unpassenden Datums angezeigt (siehe Bild 3). (
  • Hinweis

    Im Gegensatz zur Funktion Datum(), die an dieser Stelle auch möglich wäre, gibt die Funktion Jetzt() zusätzlich zum Datum noch die Systemzeit zurück, wodurch der Zeitpunkt des Störfalls genauer festgehalten wird.

    Bild 2: Das Register Allgemein

    Bild 3: Gültigkeitsmeldung bei einer falschen Datumseingabe

    Bild 4: Die Tabelle tblToDoListe in der Entwurfsansicht

    Feld

    Beschreibung

    ToDoID

    Primärschlüssel

    TroubleID

    Fremdschlüsselfeld zu tblTrouble

    PrioritaetID

    Fremdschlüsselfeld zu tblPrioritaeten zum Festlegen einer Priorität

    BearbeiterID

    Fremdschlüsselfeld zu tblBearbeiter zum Festlegen des Bearbeiters

    ToDoMassnahme

    veranlasste Maßnahme zur Behebung einer Störung

    ToDoKontaktieren

    beauftragte Person

    ToDoEmailAdresse

    E-Mail-Adresse des Bearbeiters

    ToDoEmailText

    Text der E-Mail

    ToDoTelefon

    Telefonnummer des Bearbeiters

    ToDoBemerkung

    Feld für Bemerkungen

    Erledigt

    Ja/Nein-Feld zur Kennzeichnung einer abgeschlossenen Maßnahme

    Tab. 2: Felder und Beschreibung der Tabelle tblToDoListe

    Die Tabelle tblToDoListe

    Die Tabelle tblToDoListe (siehe Bild 4) speichert die einzelnen Maßnahmen zur Behebung einer Störung.

    Die Namen der Felder und die dazugehörende Beschreibung entnehmen Sie Tab. 2.

    Das Feld ToDoMassnahme ist bei dieser Musterlösung als Textfeld mit der maximalen Speicherkapazität von 255 Zeichen ausgelegt. Falls das nicht ausreichend sein sollte, können Sie den Felddatentyp problemlos in Memo ändern.

    Die Tabelle tblBearbeiter

    Die Tabelle tblBearbeiter (siehe Bild 5) dient der Zuweisung von Störungsbehebungsmaßnahmen zu den einzelnen Bearbeitern. Sie enthält neben dem Primärschlüsselfeld BearbeiterID lediglich noch die drei Felder Nachname, Vorname und Bemerkung.

    Dadurch können Sie diese Tabelle leicht den bei Ihnen vorliegenden Verhältnissen anpassen. Dazu stehen Ihnen die beiden folgenden Möglichkeiten zur Verfügung:

  • Sie erweitern die Tabelle tblBearbeiter um die benötigten Felder.
  • Sie verknüpfen eine vorliegende Mitarbeitertabelle über ein Fremdschlüsselfeld mit der Tabelle tblBearbeiter.
  • Weitere Tabellen

    Zusätzlich zu den bereits vorgestellten Tabellen finden Sie in der Beispieldatenbank noch die beiden Tabellen tblPriorität und tblStatus vor.

    Diese beiden Tabellen bestehen jeweils nur aus dem Primärschlüsselfeld und einem Textfeld zur Speicherung der Priorität bzw. des Status. Diese beiden Tabellen dienen lediglich der Zuordnung des betreffenden Attributs.

    Abb.6: Die Beziehungen der Musterlösung

    Bild 5: Die Tabelle tblBearbeiter in der Entwurfsansicht

    Die Beziehungen

    In der Musterlösung finden Sie insgesamt vier 1:n-Beziehungen vor (siehe Bild 6).

    tblTrouble zu tblToDoListe

    Die 1:n-Beziehung zwischen diesen beiden Tabellen ermöglicht es, zu jedem Störfall mehrere Maßnahmen anzulegen.

    Beim Löschen eines Störfalls aus der Datenbank sollen auch die dazu gehörenden Maßnahmen gelöscht werden. Dazu muss im Dialogfenster Beziehungen bearbeiten das Kontrollkästchen Löschweitergabe an verwandte Datensätze aktiviert sein (siehe Bild 7).

    Sie öffnen dieses Dialogfenster, indem Sie im Dialogfenster Beziehungen doppelt auf die Verknüpfungslinie zwischen diesen beiden Tabellen klicken.

    Bild 5: Das Dialogfenster Beziehungen bearbeiten

    tblBearbeiter zu tblToDoListe

    Die 1:n-Beziehung zwischen diesen beiden Tabellen ermöglicht es, eine oder mehrere Personen gleichzeitig mit der Behebung einer Störung zu beauftragen.

    Bei dieser Beziehung darf das Kontrollkästchen Löschweitergabe an verwandte Datensätze nicht aktiviert sein. Anderenfalls kann es geschehen, dass bei einem eventuell ungewollten Löschen eines Datensatzes aus der Tabelle tblBearbeiter auch die mit dem Bearbeiter verknüpften Aufträge gelöscht werden.

    Bild 6: Das Formular frmTrouble

    Die Musterlösung enthält insgesamt vier Formulare und ein reines Dialogformular, das weiter unten im Zusammenhang mit den Berichten dieser Musterlösung besprochen wird.

    Das Formular frmTrouble

    Das Formular frmTrouble (siehe Bild 8) dient gemeinsam mit dem eingebetteten Unterformular frmToDoListeSub der Erfassung und Verwaltung von Störungen. Datenherkunft des Formulars ist die Tabelle tblTrouble.

    Durch die Schaltflächen im Formularfuß fungiert das Formular frmTrouble gleichzeitig als Schaltzentrale der Anwendung.

    Das Kombinationsfeld cboStatus

    Das Kombinationsfeld cboStatus basiert auf der Tabelle tblStatus (siehe Bild 9) und dient der Auswahl eines Status. Die Verknüpfung erfolgt über das Feld StatusID.

    Bei der Erfassung einer neuen Störung ist deren Status logischerweise Offen – schließlich wurde ja noch nichts zur Behebung dieser Störung unternommen. Zur Eingabeerleichterung ist deshalb die Eigenschaft Standardwert des Kombinationsfelds auf den Wert 1 eingestellt.

    Bild 7: Die Tabelle tblStatus

    Neue Störung erfassen

    Das Erfassen einer neuen Störung erfolgt mit Hilfe der Schaltfläche btnNeu.

    Die dabei ausgeführte Ereignisprozedur (s. Quellcode 1) legt einen neuen Datensatz an und setzt den Focus auf das Feld AbsenderName.

    Das übersichtsformularanzeigen

    Mit Hilfe der Schaltfläche btnUebersicht können alle noch nicht erledigten Störfälle in einem Formular angezeigt werden.

    Die dabei ausgeführte Ereignisprozedur (s. Quellcode 2) speichert zunächst einmal eventuelle Datensatzänderungen.

    Anschließend wird das aufrufende Formular frmTrouble unsichtbar geschaltet und das Formular frmUebersicht geöffnet.

    Private Sub btnNeu_Click()
      '' Neuen Datensatz anlegen
      DoCmd.GoToRecord , , acNewRec
      DoCmd.GoToControl "AbsenderName"
    End Sub

    Quellcode 1

    Private Sub btnUebersicht_Click()  
      '' Eventuelle Datensatzänderungen speichern
      DoCmd.RunCommand acCmdSaveRecord
      '' Aufrufendes frm unsichtbar machen
      Me.Visible = False
      DoCmd.OpenForm "frmUebersicht"  
    End Sub

    Quellcode 2

    Bild 8: Das Formular frmToDoListeSub

    Bild 9: Die Abfrage qryBearbeiter in der Entwurfsansicht

    Die beiden folgenden Schaltflächen rufen Berichte auf und werden in diesem Zusammenhang besprochen.

    Das Unterformular frmToDoListeSub

    Das Unterformular frmToDoListeSub (siehe Bild 10) dient in erster Linie der Verteilung von Maßnahmen zur Störungsbeseitigung an verschiedene Personen.

    Als Datenherkunft für das Formular dient die Tabelle tblToDoListe.

    Das KombinationsfeldcboPrioritaet

    Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

    Testzugang

    eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

    diesen und alle anderen Artikel mit dem Jahresabo

    Schreibe einen Kommentar