EDM: Bestellungen und Bestellpositionen

Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!

Auch in dieser Ausgabe geht es mit unserer Beispiellösung Bestellverwaltung weiter. Nachdem wir bereits Kunden, Produkte und Kategorien verwalten können, nehmen wir uns nun die Bestellungen und Bestellpositionen vor. Dabei brauchen wir ein paar neue Seiten, um die Details einer Bestellung mit den Bestellpositionen und die Details einer neuen oder zu bearbeitenden Bestellposition anzuzeigen. Damit werden wir erstmal die Bearbeitung von Daten einer m:n-Beziehung ermöglichen.

Neue Funktionen

Die neue Version der Bestellverwaltung enthält wieder eine neue Gruppe im Ribbon, mit der zwei neue Seiten geöffnet werden können. Die erste davon ist eine Übersicht der Bestellungen in absteigender Reihenfolge nach dem Bestelldatum (siehe Bild 1).

Übersicht der Bestellungen

Bild 1: Übersicht der Bestellungen

Hier kann der Benutzer die aktuell markierte Bestellung per Mausklick löschen oder auch eine neue Bestellung anlegen. Per Doppelklick lässt sich die angeklickte Bestellung öffnen (siehe Bild 2).

Bestellung in der Detailansicht

Bild 2: Bestellung in der Detailansicht

Ein Klick auf den Ribbon-Eintrag Neue Bestellung soll den Dialog mit den Bestelldetails für eine neue Bestellung anzeigen, wobei direkt das Kombinationsfeld zur Auswahl des Kunden für diese Bestellung ausgeklappt wird (siehe Bild 3).

Anlegen einer neuen Bestellung

Bild 3: Anlegen einer neuen Bestellung

Auch wenn der Benutzer mit einem Klick auf die Schaltfläche Neue Bestellposition klickt, soll sich direkt das Kombinationsfeld zur Auswahl des betroffenen Produkts öffnen und die schnelle Auswahl erleichtern.

Wenn der Benutzer dann das gewünschte Produkt ausgewählt hat, sollen direkt die Werte der Felder Einzelpreis, Mehrwertsteuersatz und Gewicht aus der Tabelle Produkte in den neuen Datensatz der Tabelle tblBestellpositionen übernommen werden.

Die Detailseite für eine Bestellposition, wie sie nach einem Doppelklick auf einen der Einträge der Seite mit den Bestelldetails aussieht, finden Sie in Bild 4.

Bearbeiten einer Bestellposition

Bild 4: Bearbeiten einer Bestellposition

Datenbankerweiterungen

Für diese neue Version der Bestellverwaltung haben wir ein paar kleine Änderungen am Datenmodell der SQLite-Datenbank Bestellungen.db vorgenommen. Dabei sind wir auf zwei Probleme gestoßen, die wir wie folgt gelöst haben:

  • Mit dem DBBrowser for SQLite konnten wir in manchen Fällen keine Zahlenfelder zu einer bestehenden Tabelle hinzufügen. Dies führt im schlimmsten Fall zum Leeren der kompletten Datenbank. Wir sind dann zu einem anderen Tool namens SQLiteStudio gewechselt (sqlitestudio.pl), welches die Änderungen klaglos vorgenommen hat.
  • Als wir die Änderungen an der Datenbank in das Entity Data Model übernehmen wollten, gab es ebenfalls Probleme. Die Änderungen übernehmen Sie, indem Sie das Entity Data Model (Datei BestellverwaltungEntities.edmx) öffnen und dann den Kontextmenüeintrag Modell aus der Datenbank aktualisieren … auswählen. Die nachfolgende Fehlermeldung, deren Text mit [A]System.Data.SQLite.SQLiteConnection cannot be cast to [B]System.Data.SQLite.SQLiteConnection. begann, wurde behoben, nachdem wir die aktuelle Version des NuGet-Pakets System.Data.SQLite sowie die aktuelle Runtime-Komponente von der Internetseite https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki installiert und Visual Studio dann neu gestartet haben.

Hinzufügen der neuen Ribbon-Elemente

Dieser Teil bringt keine neuen Techniken. Die beiden neu hinzugefügten Ribbon-Schaltflächen heißen btnNeueBestellung und btnBestelluebersicht und laden die Seiten BestellungDetails.xaml beziehungsweise BestellungUebersicht.xaml in das Frame-Element namens Workzone.

Die Schaltfläche btnBestelluebersicht löst die folgende Ereignismethode aus:

private void btnBestelluebersicht_Click(object sender, RoutedEventArgs e) {
     ShowBestellungenUebersicht();
}

Die hier aufgerufene Methode ShowBestellungenUebersicht verwendet den optionalen Parameter bestellungID, der beim Aufruf nach dem Ändern oder Neuanlegen einer Bestellung übergeben werden kann, damit der geänderte oder neu angelegte Eintrag im DataGrid markiert werden kann.

 

Schreibe einen Kommentar