EDM: DataGrid als Datenblatt

Wer von Access kommt und Datenbankanwendungen mit Visual Studio programmieren möchte, vermisst vermutlich das einfache Datenblatt, das man unter Access mit wenigen Mausklicks zusammenstellen konnte. Dieses zeigt nicht nur die Datensätze der als Datenherkunft verwendeten Tabelle oder Abfrage an, sondern bietet auch die Möglichkeit, die enthaltenen Daten zu ändern, zu löschen oder durch neue Datensätze zu ergänzen. Dies wollen wir in diesem Artikel durch den Einsatz eines entsprechend programmierten DataGrid-Steuerelements nachbauen.

Von Access zu EF: Step by step

Im Artikel »Von Access zu Entity Framework: Datenmodell« zeigen wir, wie Sie von Access aus auf Basis des aktuellen Datenmodells Klassen für ein Entity Data Model erstellen. In »Von Access zu Entity Framework: Daten« zeigen wir, wie Sie noch eine Seed-Anweisung hinzufügen, welche die Daten der Access-Datenbank in die auf Basis des Entity Data Models erstellte Datenbank füllt. Im vorliegenden Artikel nun liefern wir nochmal eine Kurzanleitung, wie Sie die in den Artikeln vorgestellten Techniken Schritt für Schritt nutzen, um ein .NET-Projekt mit Entity Data Model samt Daten aus der Access-Datenbank zu erstellen.

Von Access zu Entity Framework: Daten

Viele Leser dieses Magazins programmieren auch mit Access. Daher haben wir im Artikel »Von Access zu Entity Framework: Datenmodell« bereits gezeigt, wie Sie die meisten Elemente eines Datenmodells in Klassen für ein Entity Data Model überführen, die Sie dann wiederum zum Erstellen einer SQL Server-Datenbank per Code First nutzen können. Was fehlt, sind allerdings noch die Daten in diesen Tabellen. Wie Sie den Code erstellen, um auch die Daten über eine entsprechend Seed-Methode in die Datenbank zu schreiben, erfahren Sie in diesem Artikel.
Viele Leser dieses Magazins programmieren auch mit Access. Der eine oder andere hat vielleicht sogar eigene Anwendungen oder Anwendungen von Kunden auf Access-Basis, die er gern in Form eines WPF- oder ASP.NET-Projekts umsetzen würde. Das Problem: Der Zugriff auf die Access-Datenbank ist unter .NET nur begrenzt möglich, die tolle Datenzugriffstechnologie Entity Framework beispielsweise unterstützt Access-Datenbanken nicht. Dafür unterstützt es allerdings SQL Server-Datenbanken. Wie gehen wir also vor? Wir migrieren die Access-Datenbanken zum SQL Server und bauen dann ein Entity Data Model auf Basis dieser Datenbank. Es geht allerdings auch anders: Sie könnten auch ein paar Routinen in VBA schreiben, die ein Entity Data Model direkt aus Access heraus auf Basis des gewünschten Datenmodells erzeugen. Dieser Artikel zeigt, wie letztere Möglichkeit funktioniert.

Entity Framework: Datenbankmigration

Unter Access hatten Sie ein Problem, wenn Sie eine neue Version einer Datenbank ausliefern wollten, deren Datenmodell sich geändert hat. Dann war Handarbeit angesagt! Das Entity Framework bietet für das Übertragen von Änderungen am Datenmodell die sogenannten Migrationen an. Dieser Artikel zeigt, was es sich damit auf sich hat und wann Sie Migrationen gegenüber Datenbankinitialisierern nutzen sollten.
Wenn Sie mit Code First arbeiten, also Ihre Datenbank auf Basis eines Entity Data Models erstellt wird, können Sie verschiedene Strategien auswählen, um die Datenbank zu erstellen oder anzupassen, wenn Sie die Anwendung an einen anderen Benutzer weitergeben. Dieser Artikel zeigt, welche Möglichkeiten es gibt und wie diese funktionieren.

Von Access zum Entity Framework: Basics

In den vorherigen Ausgaben haben wir bereits verschiedene Techniken erläutert und unter anderem kleine Desktop- und Webanwendungen programmiert. Dabei sind wir ein wenig vom eigentlichen Ziel des Magazins abgewichen – Access-Entwicklern die Möglichkeiten von Visual Studio und den dortigen Technologien für die Migration von Access-Anwendungen in Desktop- oder Webanwendungen aufzuzeigen. Mit diesem Artikel kehren wir dorthin zurück und erklären, wie Sie den Umzug einer Anwendung von Access zu .NET einleiten und welche Techniken wir dazu in Zukunft nutzen wollen.

Kommandozeile per DLL

Wenn Sie von Access aus Befehle ausführen wollen, die Sie normalerweise über die Kommandozeile beziehungsweise die Eingabeaufforderung eingeben würden, ist das kein Problem – das erledigen Sie ganz einfach über die Shell-Anweisung. Interessanter wird es, wenn Sie die Ausgabe der Anwendung einlesen und verarbeiten wollen, um beispielsweise auszuwerten, ob der Aufruf erfolgreich war oder welches Ergebnis dieser geliefert hat. Mit VBA beziehungsweise API-Funktionen gelingt dies nicht immer zuverlässig. Also schauen wir uns in der .NET-Bibliothek um, ob es dort Alternativen gibt, und machen uns diese über eine DLL unter VBA verfügbar.

ODBC-Verknüpfungen in Formularen

Es gibt verschiedene Möglichkeiten, auf die Daten einer SQL Server-Datenbank zuzugreifen. Die einfachste Variante, gerade wenn es um die Migration einer reinen Access-Datenbank in eine Kombination aus Access-Frontend und SQL Server-Backend geht, ist der Einsatz von per ODBC verknüpften Tabellen. Dabei werden die Tabellen einfach nur zum SQL Server migriert und man greift dann über ODBC-Verknüpfungen auf die Tabellen zu. Für den Zugriff auf diese Daten von Formularen aus ergeben sich so gut wie keine Änderungen – und was sich doch ändern kann, erfahren Sie in diesem Beitrag.

HTML-Kreuztabelle 1: Basics

Kreuztabellenabfragen sind eine praktische Sache, wenn es darum geht, Kombinationen aus m:n-Beziehungen abzubilden – zum Beispiel die Preise für verschiedene Bauelemente oder Materialien in Abhängigkeit von der Höhe und der Breite des Materials. Dabei benötigen Sie noch nicht einmal eine m:n-Beziehung, die in einer Kreuztabelle darzustellenden Daten können auch aus einer einzigen Tabelle stammen. Der Haken an Kreuztabellen ist, dass diese in der Regel nicht bearbeitet werden können. Wenn Sie also etwa den Preis für ein Bauelement mit einer Höhe von einem Meter und einer Breite von fünfzig Zentimetern einstellen wollen, müssen Sie wieder die zugrunde liegende Tabelle oder das darauf aufbauende Formular bemühen. Im vorliegenden Beitrag wollen wir zunächst einmal die Grundlage für die Bearbeitung schaffen – indem wir die Daten der Tabelle per HTML in Kreuztabellenform darstellen.

SQL Server: Tabellendefinition ändern

Unter Access sind Sie es gewohnt, nach Lust und Laune am Entwurf einer Tabelle zu arbeiten. Probleme gibt es nur, wenn Sie einmal die Feldgröße oder den Felddatentyp ändern wollen – etwa, weil die Daten dann nicht mehr in das Feld passen könnten. Das können Sie jedoch durch einen Mausklick bestätigen und weitermachen. Beim SQL Server sieht das etwas anders aus. Relevante Änderungen, die sich auf bestehende Felder beziehen, sieht das SQL Server Management Studio nicht so gern und blockiert dies – Sie müssen dann die Tabelle neu anlegen. Wer einen kleinen Trick nicht kennt, macht sich auf diese Weise viel unnötige Arbeit.

HTML-Kreuztabelle 2: Werte bearbeiten

Im Beitrag »Kreuztabelle per HTML« haben wir gezeigt, wie Sie die Daten einer Tabelle in Form einer Kreuztabelle ausgeben können. Das ist natürlich auch per Kreuztabellenabfrage möglich, aber wir haben in diesem Fall das Webbrowser-Steuerelement mit einer entsprechenden HTML-Seite verwendet. Der Hintergrund ist, dass wir so Funktionen zum direkten Bearbeiten der Einträge hinzufügen können – vorausgesetzt, dass die Kreuztabelle nur die Werte einer Kombination anzeigt und nicht etwa Domänenfunktionen wie Summen oder Mittelwerte. Wir wollen also die bereits vorhandene Darstellung noch um Funktionen zum Bearbeiten sowie zum Hinzufügen neuer Spalten oder Zeilen erweitern.
1 von 2
Aktuell im Blog
Listenfeld: Reihenfolge mehrerer Einträge...

Wir haben bereits in mehreren Beiträgen beschrieben, wie Sie die individuelle Reihenfolge von... [mehr]

Diagramme mit gefilterten Daten

In Ausgabe 2/2019 haben wir in zwei Artikeln die modernen Diagramme von Access vorgestellt. Im... [mehr]

Benutzerverwaltung mit verschlüsselten...

Wenn Sie in einer Access-Anwendung Benutzer verwalten wollen, die sich per Benutzername und... [mehr]

HTML-Tabellen mit fester Kopfzeile

In den vorherigen Ausgaben von Access im Unternehmen und in der aktuellen Ausgabe arbeiten wir in... [mehr]

Flexible HTML-Tabellen mit fester Kopfzeile

Im Beitrag »HTML-Tabellen mit fester Kopfzeile« haben wir gezeigt, wie Sie Daten aus einer... [mehr]

Berechtigungen per HTML verwalten

Im Beitrag »Benutzerverwaltung mit verschlüsselten Kennwörtern« stellen wir eine Lösung vor, in... [mehr]

Benutzer und Berechtigungen ermitteln

In den Beiträgen »Benutzerverwaltung mit verschlüsselten Kennwörtern« und »Berechtigungen per... [mehr]

Zugriffsrechte mit Datenmakros

Es gibt verschiedene Möglichkeiten, auf Basis des aktuell angemeldeten Benutzers sicherzustellen,... [mehr]

Kennwörter generieren

Für den einen oder anderen Zweck möchten Sie vielleicht Kennwörter generieren oder in einer... [mehr]

Neuer Datensatz von Frontend zu Backend

Für manche Themen gibt es keine kurze, prägnante Überschrift. In diesem Fall wollen wir zeigen,... [mehr]