Direkter SQL-Zugriff und SQL-Injection

Wenn Sie von Access kommen und es gewohnt sind, Abfragen mit der Entwurfsansicht über die Benutzeroberfläche anzulegen, kann schon das Zusammenstellen von SQL-Abfragen nervig sein. Aber diese kann man unter Access immerhin noch aus der SQL-Ansicht einer Abfrage ermitteln. Was aber, wenn man nun Abfragen in LINQ formulieren soll, wo es noch nicht einmal eine grafische Entwurfsansicht gibt Nun: Es gibt auch unter Entity Framework die Möglichkeit, SQL-Befehle abzusetzen. Das ist auch deshalb interessant, weil Sie so auch gespeicherte Prozeduren ausführen können. Wie das gelingt, zeigt der vorliegende Artikel.

Weiterlesen

Textdateien mit Visual Basic

Der Namespace System.IO liefert eine ganze Reihe Befehle für den Umgang mit Laufwerken, Verzeichnissen und Dateien. Wenn es sich bei letzteren um Textdateien handelt, möchten Sie diese möglicherweise von Ihrer Anwendung aus einlesen oder Daten in die Datei schreiben. Vielleicht wollen Sie auch komplett neue Textdateien mit Texten aus einer Datenbank füllen. Dieser Artikel zeigt, wie Sie die Objekte, Methoden und Eigenschaften des System.IO-Namespaces nutzen, um lesend und schreibend auf Textdateien zuzugreifen.

Weiterlesen

Mit Dateien und Verzeichnissen arbeiten

Wer unter Visual Studio Anwendungen mit Visual Basic programmiert, wird früher oder später an den Punkt kommen, wo er mit Dateien und Verzeichnissen arbeitet. Dabei gibt es Aufgaben wie zu ermitteln, ob eine Datei bereits vorhanden ist, eine Datei von einem Verzeichnis in ein anderes zu kopieren, alle Dateien eines Verzeichnisses zu durchlaufen oder dies gar rekursiv für untergeordnete Verzeichnisse und Dateien zu erledigen. Natürlich bietet Microsoft passende Möglichkeiten an, die kaum noch etwas mit den von VBA gewohnten Befehlen zu tun haben und auch nicht mit den Methoden des FileSystemObjects.

Weiterlesen

String-Interpolation in Zeichenketten

Wer unter Visual Basic oder VBA komplizierte Zeichenketten wie etwa Abfragen mit vielen UNION-Verknüpfungen zusammenstellen muss, die auch noch zur Laufzeit um variable Texte wie etwa Vergleichswerte ergänzt werden sollen, macht schnell Fehler. Mit Visual Basic 14 hat Microsoft die sogenannte String-Interpolation auch in Visual Basic eingeführt. Damit wird die Lesbarkeit von Zeichenketten durch den Einsatz von Platzhaltern in geschweiften Klammern stark verbessert. Dieser Artikel zeigt die Möglichkeiten der String-Interpolation auf.

Weiterlesen

Mehrzeilige Zeichenketten

Unter VBA war die Eingabe mehrzeiliger Zeichenketten eine Qual. Man musste sich mit dem Unterstrich und zusätzlich eingefügten Zeilenumbrüchen mit vbCrLf oder Chr(10) & Chr(13) durchschlagen. Unter Visual Basic ab der Version 14 (mit Visual Studio 2015) gibt es eine tolle Neuerung für alle, die mit Visual Basic in Visual Studio programmieren: Die Eingabe mehrzeiliger Texte wurde deutlich vereinfacht. Wie genau, lesen Sie hier.

Weiterlesen

Access zu WPF: Validierung und Navigation

Im Artikel “Access zu WPF: Detailformulare mit Combo, Checkbox und Button” haben wir gezeigt, wie Sie die in Formularen enthaltenen gebundenen Steuer-elemente wie Kombinationsfelder und Kontrollkästchen sowie Schaltflächen in WPF-Fenster übertragen. In diesem Artikel wollen wir uns ansehen, wie Sie einem WPF-Fenster auf Basis eines Access-Detailformulars eine Validierung und Navigationsschaltflächen hinzufügen. Die notwendigen Techniken haben wir bereits im Artikel “EDM: Blättern in Datensätzen” vorgestellt, nun integrieren wir diese in unsere VBA-Prozedur zum Erstellen des Codes für ein WPF-Fenster mit Navigationsschaltflächen.

Weiterlesen

Detailformulare mit Combo, Checkbox und Button

Im Artikel “Access zu WPF: Detailformulare mit Textfeldern” schauen wir uns an, wie die programmgesteuerten Möglichkeiten aussehen, um Formulare automatisch als WPF-Fenster oder -Seiten abzubilden. Damit haben wir einfache Detailformulare samt Textfeldern und Datenbindung unter WPF abgebildet. Nun wollen wir einen Schritt weitergehen und uns um weitere Steuer-elemente wie etwa Kombinationsfelder und Kontrollkästchen kümmern. Außerdem wollen wir noch Schaltflächen zum Blättern in den Datensätzen sowie zum Anlegen neuer Datensätze hinzufügen.

Weiterlesen

Entity Framework: Der ChangeTracker

Wenn Sie Daten etwa aus den Tabellen einer Datenbank in ein Entity Data Model geladen haben, finden Sie dort einige Funktionen für den Umgang mit den enthaltenen Daten vor. Ein sehr wichtiges Element ist dabei der ChangeTracker. Auch wenn Sie mit der SaveChanges-Methode automatisch alle Änderungen im Entity Data Model erkennen und diese in die Datenbank übertragen können, so treten doch Fälle auf, in denen Sie zuvor prüfen wollen, welche Änderungen überhaupt im Entity Data Model vorgenommen wurden – und ob diese in die Datenbank übernommen oder vielleicht sogar verworfen werden sollen.

Weiterlesen

Änderungen erkennen und verwerfen

Unter Access können Sie beispielsweise mit der Escape die aktuellen ungespeicherten Änderungen an einem Datensatz verwerfen. Das Formular zeigt dann direkt die Daten an, die beim letzten Speichern in den gebundenen Feldern enthalten waren. Dieses Verhalten wollen wir auch für Fenster abbilden, die an ein Element gebunden sind und die Daten in einer Detailansicht anzeigen. Wir wollen erkennen, ob der Benutzer Änderungen an einem Datensatz vorgenommen hat und in Abhängigkeit davon eine Rückgängig-Schaltfläche aktivieren oder deaktivieren. Durch einen Klick auf die Schaltfläche sollen die vorherigen Werte wiederhergestellt werden. Wie das gelingt, zeigt der vorliegende Beitrag.

Weiterlesen

Validieren mit VB und EDM

Im Artikel EDM: Validieren von Entitäten mit IDataErrorInfo haben wir bereits erläutert, wie Sie einer auf dem Entity Framework basierenden Anwendung eine Validierung hinzufügen können. Im vorliegenden Artikel schauen wir uns an, wie Sie die Validierung nicht unter C#, sondern unter VB realisieren und welche Änderungen in den Methoden zum Migrieren einer Access-Anwendung nach WPF/EDM notwendig sind, um die Validierung vorzubereiten oder gegebenenfalls auch direkt umzusetzen.

Weiterlesen