Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
Im Beitrag “Access zu EDM: Dateien erstellen” haben wir gezeigt, wie Sie mit einer einfachen Access-Prozedur aus einem Access-Datenmodell die für ein Entity Data Model notwendigen Dateien erzeugen können. Wenn Sie nun noch passende Klassen mit den Grundfunktionen für die Validierung hinzufügen wollen, können Sie die Erweiterungen aus diesem Artikel dazu verwenden. Wir legen für jede Entitätsklasse des Entity Data Models auf Basis des Datenmodells einer Access-Datenbank zusätzlich eine weitere Klasse in einem Unterordner namens Validierung an, der die grundlegenden Funktionen für die Validierung enthält. Diese müssen allerdings noch angepasst werden. An welchen Stellen, lesen Sie im Folgenden.
Die grundlegenden Techniken zum Validieren von Daten in Benutzeroberflächen, die Daten aus einem Entity Data Model nutzen, haben wir im Artikel Validieren mit VB und EDM beschrieben (www.datenbankentwickler.net/175). Dort zeigen wir eine Methode, die in verschiedenen Bereichen implementiert werden muss. Der erste dort beschriebene Teil erläutert, wie Sie die Entitätsklassen um eine Schnittstelle erweitern, die das Auslösen von Ereignissen beim Eintreten von Validierungsfehlern erlaubt. Diese Schnittstelle implementieren wir nicht direkt in der Klasse, zum Beispiel Kunde, sondern machen uns zunutze, dass man Klassen auf mehrere Dateien aufteilen kann. Das hat den Vorteil, dass automatisch erzeugte neue Versionen des Entity Data Models nach Änderungen im Datenmodell sich nicht auf die Klassen mit der Validierung auswirken.
Wir erstellen also eine neue partielle Klasse, welche die für die Validierung notwendigen Elemente aufnimmt und das ist genau das, was wir automatisch auf Basis des Datenmodells der Access-Datenbank erledigen wollen.
Die übrigen Schritte, die im oben genannten Artikel beschrieben werden, beziehen sich auf die Änderungen, die per XAML für die Benutzeroberfläche umgesetzt werden müssen.
Benötigter Code für die partielle Klasse mit der Validierung
Die partiellen Klassen, welche den Code für die Validierung enthalten, wollen wir wie gesagt in jeweils einer eigenen Klassendatei unterbringen, die in einem Unterverzeichnis namens Validation liegen. Eine solche Klasse soll wie folgt aussehen und zunächst den Namespace importieren, der die benötigte Schnittstelle enthält:
Imports System.ComponentModel
Dann folgt die Klasse, welche die Schnittstelle IDataErrorInfo implementiert:
Partial Public Class Kunde Implements IDataErrorInfo
Die Implementierung besteht aus zwei öffentlichen Eigenschaften, von denen uns nur die erste interessiert – die zweite muss aber dennoch implementiert werden. Die erste sieht wie folgt aus:
Default Public ReadOnly Property Item(columnName As String) As String Implements IDataErrorInfo.Item Get Dim strErrorMessage As String = "" Select Case columnName Case "Vorname" If (String.IsNullOrEmpty(Vorname)) Then strErrorMessage = "Bitte geben Sie einen Vornamen ein." End If ... End Select Return strErrorMessage End Get End Property
Die Methode erwartet den Namen der zu untersuchenden Eigenschaft als Parameter und unterscheidet diese in einer Select Case-Bedingung. Hier prüft sie die Bedingung und trägt dann die Validierungsmeldung in die Variable strErrorMessage ein, die dann auch zurückgegeben wird.
Den Rest der Schnittstelle fügen wir wie folgt an:
Public ReadOnly Property [Error] As String Implements IDataErrorInfo.Error Get Throw New NotImplementedException() End Get End Property End Class
Nun benötigen wir eine VBA-Prozedur analog zu der im Artikel Access zu EDM: Dateien erstellen (www.datenbankentwickler.net/219), die uns diesen Code auf Basis des Datenmodells erstellt. Da wir in den dort vorgestellten Prozeduren und Funktionen schon sehr viele der auch für die Erstellung der Validierungsklassen benötigten Informationen zusammentragen, werden wir diese nochmals erweitern. Das geschieht so, dass die ermittelten Informationen genutzt werden, in weiteren Variablen die Inhalte der Validierungsklassen zusammenzustellen, die wir dann von der Hauptprozedur aus in die Validierungsdateien in einem neuen Verzeichnis namens Validation ausgeben.
Die Prozedur EDMDateienErstellen erweitern wir dazu zunächst wieder um einen Parameter, diesmal namens bolValidation: