Erste Schritte · Schritt 9 von 10

Ein bisschen C#: Nächste Kalibrierung berechnen

Manche Werte gibt niemand ein, sie werden berechnet. Du ergänzt ein Attribut „Nächste Kalibrierung am“ und schreibst die Berechnung in C#.

CharisVisual Studioca. 15 Min.← Übersicht

In diesem Schritt

  1. Ein berechnetes Attribut anlegen
  2. Formular und Liste ergänzen
  3. Code generieren und dem Compiler folgen
  4. Die Berechnung in C# schreiben

Ein berechnetes Attribut

Lege in Charis an der Entität Messmittel ein neues Attribut an: Nächste Kalibrierung am mit Typ date. Hake außerdem im Bereich additional features das Feld run code for value an. Das heißt: Den Wert gibt niemand ein, er wird im Code berechnet.

Formular des Attributs Nächste Kalibrierung am, technischer Name NächsteKalibrierungAm, Typ date, format string dd.MM.yyyy und angehaktes run code for value.
Der Wert kommt aus dem Code.

Der technische Name NächsteKalibrierungAm behält sein „ä“. C# kommt mit Umlauten in Namen gut zurecht.

Mit den Pfeilen über der Attributliste schiebst du das neue Attribut an seinen Platz, hinter das Kalibrierintervall.

Formular der Entität Messmittel; Nächste Kalibrierung am steht zwischen Kalibrierintervall (Monate) und Ausgemustert und hat einen Haken in der Spalte for value.
Das neue Attribut an seinem Platz

Formular und Liste ergänzen

Formular und Liste hat assure usable in Schritt 6 angelegt. Damals gab es das neue Attribut noch nicht. Du findest beide im Formular der Entität auf dem Reiter views. Links die Formularansicht, rechts die Tabellenansicht.

Formular der Entität Messmittel, Reiter views mit der form view Messmittel und der table view Messmittel.
Die Ansichten der Entität

Öffne die form view und klicke rechts auf generate widgets. Charis ergänzt ein Eingabefeld für jedes Attribut, das noch keines hat. Öffne dann die table view und klicke auf generate columns. Schiebe Feld und Spalte mit den Pfeilen an die passende Stelle.

form view Messmittel mit den widgets; neu ist Nächste Kalibrierung am mit dem widget type date for date.
Ein neues Feld im Formular
table view Messmittel mit den columns; neu ist die Spalte Nächste Kalibrierung am.
Eine neue Spalte in der Liste

Der Compiler zeigt dir den Weg

Generiere den Code wie in Schritt 7. Wechsle dann zu Visual Studio und baue die Lösung mit Build › Build Solution (Erstellen › Projektmappe erstellen). Der Build schlägt fehl, und das ist Absicht:

Visual Studio mit der Error List (Fehlerliste): CS0534, Messmittel implementiert den geerbten abstrakten Member MessmittelBase.GetNächsteKalibrierungAm() nicht.
Fehler CS0534: Hier fehlt deine Fachlogik.

Charis hat eine Basisklasse MessmittelBase erzeugt. Darin steht für jedes Attribut mit run code for value eine abstrakte Methode, hier GetNächsteKalibrierungAm(). Deine Klasse Messmittel muss sie implementieren. Du kannst sie also gar nicht vergessen: Der Compiler sagt dir genau, wo deine Fachlogik fehlt.

Die Berechnung schreiben

Ein Doppelklick auf den Fehler öffnet die Datei Messmittel.cs im Objektprojekt. Charis hat sie beim ersten Generieren angelegt, und sie ist noch fast leer:

// Prepared by de.horaios.Charis
// Place your cool methods for this object here. Have fun!

namespace de.aft_praezisa.Messmittelverwaltung.Objects.Objects
{
    public class Messmittel : MessmittelBase, IMessmittel
    {
    }
}

Setze den Cursor auf Messmittel und drücke Strg+.. Wähle Implement missing members (Fehlende Member implementieren). Visual Studio schreibt den Rahmen der Methode für dich.

Visual Studio Quick Actions mit dem Eintrag Implement missing members.
Visual Studio schreibt den Rahmen.
Solution Explorer mit dem Objektprojekt und den Ordnern DataObjects, Names und Objects mit den Unterordnern Base, Behavior, Interface, Model und Service.
Messmittel.cs liegt in Objects/Behavior.

Im Methodenrumpf stehen dir alle Attribute als Eigenschaften zur Verfügung. IntelliSense zeigt sie dir an, mit ihren technischen Namen:

Visual Studio mit IntelliSense-Vorschlägen; LetzteKalibrierungAm ist als Eigenschaft vom Typ DateTime? ausgewählt.
Deine Attribute sind direkt da.

Die nächste Kalibrierung ist die letzte plus das Intervall in Monaten:

public override DateTime? GetNächsteKalibrierungAm()
{
    return LetzteKalibrierungAm?.AddMonths(KalibrierintervallMonate ?? 0);
}
Visual Studio mit der fertigen Methode GetNächsteKalibrierungAm in Messmittel.cs.
Die fertige Methode

Ohne Datum der letzten Kalibrierung liefert die Methode keinen Wert.

Deine Datei bleibt deineDas Objektprojekt hat drei Ordner: DataObjects, Names und Objects. Deshalb endet der Namensraum auf .Objects.Objects. Deine Fachlogik steht in Objects/Behavior. Dort schreibt Charis nach dem ersten Anlegen nie wieder hinein. Alles andere erzeugt Charis bei Bedarf neu.

Das Ergebnis

Drücke F5. Die Liste zeigt jetzt die neue Spalte mit den berechneten Daten. Öffnest du ein Messmittel, ist das Feld „Nächste Kalibrierung am“ ausgegraut: Ein berechneter Wert lässt sich nicht eintippen.

Liste Messmittel mit der Spalte Nächste Kalibrierung am: 15.03.2027, 02.11.2026, 20.06.2026 und 10.01.2024.
Berechnet, nicht eingetippt

Schaue dir die Daten genau an: Der Endmaßsatz hätte schon im Juni kalibriert werden müssen. Die Messuhr ist noch länger überfällig, aber sie ist ausgemustert. Solche Fälle sollen sofort auffallen. Genau darum geht es im letzten Schritt.

Hängst du irgendwo fest?

Schreibe uns, an welchem Schritt es hakt. Wir helfen dir weiter und verbessern das Tutorial.

Frage stellen
horaios GmbH
Lindenstraße 40
89134 Blaustein
Telefon 0731 950 334-0
info@horaios.de