06.04.2017
Ich soll aus einer DataTable den maximalen Wert aus einer Spalte bestimmen.
Nach einiger Recherche im Internet habe ich die folgende Lösung gefunden:
In der ersten Zeile wird eine DataTable dtDaten gebildet. In der zweiten Zeile wird eine Variable maxVal definiert, als das Maximum in der Spalte 0. Damit dieser Wert bestimmt werden kann, muss die DataTable zuerst mit AsEnumerable() abzählbar gemacht werden.
Language-Integrated Query (LINQ) Abfragen funktionieren mit Datenquellen, die die Schnittstelle IEnumerable <T>, oder die Schnittstelle T:System.Query.IQueryable beinhalten. Die DataTable-Klasse beinhaltet keine von diesen Schnittstellen, so dass die AsEnumerable-Methode aufgerufen werden muss, um die DataTable als Quelle für die LINQ-Abfrage zu verwenden.
Max() ist eine Methode aus dem Namespace System.Linq und gibt den maximalen Wert in einer Wertesammlung aus.
LINQ ist ein programmtechnisches Verfahren von Microsoft für den Zugriff auf Daten. System.Linq bietet Klassen und Schnittstellen an, die Linq-Abfragen unterstützen. LINQ stellt innerhalb der Entwicklungsplattform .NET eine einheitliche Methode für jeglichen Datenzugriff zur Verfügung. Die Syntax der Abfragen in LINQ ist ähnlich der von SQL. Im Unterschied zu SQL stellt LINQ jedoch auch Sprachelemente zur Verfügung, die für den Zugriff auf hierarchische und Netzwerk-Strukturen geeignet sind.
Zurück zur Wolke26.10.2016
Ich soll eine Datenmigration durchführen. Die Quelldatei besitzt Null-Werte. Es muss ein Primärschlüssel und ein Fremdschlüssel gesetzt werden.
Zuerst schaue ich, welches die optimalen Datentypen für die einzelnen Attribute sind und passe die Zieltabelle entsprechend an. Ich ermittle, welche Attribute als Primärschlüssel und welche als Fremdschlüssel funktionieren sollen und setze den Datentyp dieser Attribute in der Zieltabelle auf int (integer), weil alle anderen Tabellen auch den Datentyp int bei den Schlüsseln aufweisen. Natürlich müssen die Schlüssel nun die Eigenschaft haben, dass bei ihnen kein Null-Wert vorhanden sein darf, sonst ist die referentielle Integrität nicht gewährleistet. Ich lösche also in der Quelltabelle alle Datensätze, die beim Fremdschlüssel einen Null-Wert haben. Bei allen anderen Attributen darf ein Null-Wert vorkommen, also setze ich dort jeweils den Haken für allow null. Nun ist die Quelldatei für die Migration vorbereitet.
DELETE FROM Parzelle WHERE gdeId is NULL;
Bei einer Datenmigration ist es sehr wichtig, dass vor dem Datenimport Datensätze mit einem Null-Wert beim Fremdschlüssel gelöscht werden. Diese Datensätze sind für die Datenbank unbrauchbar und müssen entfernt werden wie faule Teile eines Apfels, bevor man ihn essen will.
Zurück zur Wolke07.10.2016
Ich soll in C# eine dynamische Tabelle erstellen und mit Inhalt füllen.
Ich recherchiere im Internet, um an die nötigen Informationen heranzukommen. Zum Glück habe ich etwas gefunden, das ich meinen Begebenheiten angepasst habe:
Die ADSUserList und die Variablen IDUser, txtUsername, txtPassword, txtTel und txtMobile sind vorgängig definiert worden. Die UserTable ist ebenfalls vorgängig als Element der Webseite hinzugefügt und entsprechend benannt worden.
Mit C# kann auch eine Tabelle erstellt werden, die sich je nach Datenmenge in ihrer Grösse anpasst.
Zurück zur Wolke15.09.2016
Ich soll das Spiel Snake möglichst selbst entwickeln. Dabei stellte sich mir vor allem eine Frage: Wie bringe ich die Schlange dazu sich zu bewegen?
Nach einigem Studieren und Recherchieren im Internet habe ich einen Weg gefunden, die Snake bewegen zu lassen:
Die gefärbten Rechtecke des Schlangenkörpers werden in einem Array gespeichert, hier als Beispiel mit 3 Objekten.
In den Bildern 1 bis 3 wird die Situation vor und während der Methode bewegeSnake()
dargestellt,
während die 4. Abbildung den eigentlichen Schritt nachLinks()
veranschaulicht:
snakeBody[0]
, snakeBody[1]
und snakeBody[2]
sind je einem Rechteck des Schlangenkörpers zugewiesen.
snakeBody[2]
das Rechteck snakeBody[1]
zugewiesen.
Sowohl snakeBody[1]
, wie auch snakeBody[2]
stehen jetzt für dasselbe Rechteck.
snakeBody[1]
wird das Rechteck snakeBody[0]
zugewiesen.
nachLinks()
wird das Rechteck snakeBody[0]
um eine Einheit nach links verschoben.
Das Gleichheitszeichen in der Informatik bedeutet nicht ganz dasselbe wie in der Mathematik: links von einem Gleichheitszeichen steht immer die Bezeichnung, während rechts vom Gleichheitszeichen der eigentliche Wert steht. Das Gleichheitszeichen muss also immer von links nach rechts gelesen werden, auf keinen Fall von rechts nach links!
Zurück zur Wolke12.09.2016
Ich soll in C# mit Hilfe von einer Liste (dynamisches Array) die Benutzer aus dem Active Directory einlesen.
Ich recherchiere im Internet, um an die nötigen Informationen heranzukommen. Folgende Schritte muss ich angehen:
Wie im Bild zu erkennen ist, habe ich alle diese Teilaufgaben lösen können. Sehr lange habe ich daran gearbeitet, wie ich mit Daten umgehe, die den Wert Null haben:
u.txtTel = reader[‘‘txtTel‘‘]==DBNull.Value?‘‘ ‘‘:(string)reader[‘‘txtTel‘‘];
heisst: Falls die Variable u.txtTel den Wert Null hat, wird ihr ein Leerzeichen als Wert übergeben, andernfalls soll der Wert von txtTel als String gelesen und übergeben werden.
Code kann sehr kurz geschrieben werden!
Zurück zur Wolke07.12.2015
Wie muss ich ein Backup planen, damit ich eine Sicherung für 10 Jahre, mit möglichst wenigen Datenträgern bewerkstelligen kann?
Um Zeit zu sparen wird pro Tag, jeweils am Abend, ein differentielles, oder ein inkrementelles Backup gemacht. Ein Vollbackup wird jeweils am Wochenende durchgeführt. Somit wird gewährleistet, dass die Daten aus der Woche jederzeit wiederhergestellt werden können.
In der zweiten Woche werden die Tages-Backup-Datenträger wieder eingesetzt und das vorherige Backup überschrieben.
Auch nach der zweiten Woche wird ein Vollbackup gemacht und auf die Seite gelegt. So läuft das weiter bis zum Monatsende,
wo ein Wochenbackup zu einem Monatsbackup wird.
Die auf die Seite gelegten Wochenbackups der ersten, zweiten und dritten Woche werden nun im neuen Monat wieder überschrieben.
Das Wochenbackup der vierten Woche wird automatisch zum Monatsbackup. Auf diese Weise geht es weiter bis zum Jahresende,
wo ein Monatsbackup zum Jahresbackup wird.
Die Monatsbackups des ersten bis zum 11. Monat des vergangenen Jahres werden nun im neuen Jahr wieder eingesetzt und überschrieben.
So geht es weiter bis zum 10. Jahr. Im elften Jahr wird das Jahresbackup aus dem ersten Jahr zum Jahresbackup des 11. Jahres.
Auf diese Art kann beim letzten Wochenbackup auf die letzten Tage, beim letzten Monatsbackup auf die letzten Wochen,
beim letzten Jahresbackup auf die letzten Monate und beim letzten 10-Jahres-Backup auf die letzten Jahre zugegriffen werden.
Dieses Prinzip nennt man das Generationenprinzip.
Ein Backupplan nach dem Generationenprinzip braucht mindestens 29, also ungefähr 30 Backup-Datenträger: 5 Tages-, 3 Wochen-, 11 Monats- und 10 Jahres-Backup-Datenträger.
Zurück zur Wolke29.10.2015
Ein Kunde bringt seinen alten Laptop und ein Netbook vorbei. Er will einen neuen PC kaufen und das E-Mail-Konto, das beim alten Laptop schon eingerichtet ist, auf dem Netbook und auf dem neuen PC einrichten lassen. Der Kunde hat ein Datenblatt dabei, mit den Informationen zu seinem E-Mail-Konto.
Auf dem Netbook richte ich das E-Mail-Konto mit dem Benutzernamen und dem Passwort im Mailprogramm von Windows 10 ein. Das geht recht einfach: Das Programm hat automatisch die richtigen Servernamen erkannt.
Auf dem neuen PC installiere ich das Windows Live Mail von Windows Essentials.
Für die Einstellungen in diesem Programm muss ich beim E-Mail-Anbieter online nachschauen,
vor allem, wie der Posteingangs- und der Postausgangsserver heissen.
Als Kontotyp wähle ich, sowohl beim Netbook wie auch beim PC, IMAP aus, weil ich weiss, dass es die bessere Wahl ist,
wenn mehrere Geräte auf ein Konto zugreifen. Beim Testen funktioniert das E-Mail-Konto einwandfrei.
Nach einer Weile kommt jedoch der Kunde nochmals vorbei und teilt uns mit, dass er nicht alle E-Mails bekommen würde.
Da kommt mir in den Sinn, dass ich die Einstellungen beim alten Laptop nicht überprüft habe, welcher Kontotyp eingerichtet worden ist.
Wenn dort POP eingerichtet ist werden alle Mails automatisch vom Server entfernt, sobald E-Mails von diesem Gerät abgerufen werden.
POP- und IMAP-Konti unterscheiden sich unter anderem darin, dass POP die E-Mails auf den lokalen Computer lädt und sie auf dem Server löscht, während IMAP die E-Mails auf dem Server belässt.
Zurück zur Wolke