private void LeseKlassenleiter() { KlasseTableAdapter ta = new KlasseTableAdapter(); Worksheet s = xls.workbook.Worksheets[1]; //Worksheet s = wb.ActiveSheet; int zeile=2; string kuerzel, klasse; int lehrerid; kuerzel = (string)(s.Cells[zeile,3].Value); klasse = (string)(s.Cells[zeile,4].Value); while (kuerzel!=null) { if (klasse!=null) { LehrerListe.TryGetValue(kuerzel,out lehrerid); var dt = ta.GetDataByBezeichnung(klasse); if (dt.Count>0) { var klassenRow = dt[0]; klassenRow.KlassenleiterId = lehrerid; ta.Update(klassenRow); } } zeile++; kuerzel = (string)(s.Cells[zeile,3].Value); klasse = (string)(s.Cells[zeile,4].Value); } }
public Klasse(int id) { var rst = new KlasseTableAdapter().GetDataById(id); if (rst.Count == 1) { this.data = rst[0]; } else { throw new InvalidOperationException("Konstruktor Klasse: Ungültige ID."); } }
/// <summary> /// Die Methode zum Einlesen der Daten. /// </summary> /// <param name="fileName">Der Dateiname.</param> public static void ReadSchueler(string fileName) { using (StreamReader reader = new StreamReader(fileName, Encoding.GetEncoding("iso-8859-1"))) using (SchuelerTableAdapter tableAdapter = new SchuelerTableAdapter()) using (KlasseTableAdapter klasseTableAdapter = new KlasseTableAdapter()) { while (!reader.EndOfStream) { string line = reader.ReadLine(); if (string.IsNullOrEmpty(line)) { log.Debug("Ignoriere Leerzeile"); continue; } string[] array = line.Split(new string[] { "\t" }, StringSplitOptions.None); string[] cleanArray = array.Select(aString => aString.Trim(new char[] { '\"', ' ', '\n' })).ToArray(); //TODO: Schueler nicht in Teilklassen stecken (bei Mischklassen, vor allem FOS/BOS-Mischung problematisch) var klasse = GetKlasseId(klasseTableAdapter, cleanArray[klasseSpalte].Trim()); if (klasse == null) { log.Debug("Ignoriere einen Schüler ohne richtige Klasse. Übergebene Klasse war " + cleanArray[klasseSpalte]); continue; } // wenn der Schüler noch nicht vorhanden ist var table = tableAdapter.GetDataById(int.Parse(cleanArray[schuelerIdSpalte])); diNoDataSet.SchuelerRow row = (table.Count == 0) ? table.NewSchuelerRow() : table[0]; FillRow(cleanArray, klasse, row); if (table.Count == 0) { table.AddSchuelerRow(row); } row.AcceptChanges(); tableAdapter.Update(row); // Diese Zeile meldet den Schüler bei allen notwendigen Kursen seiner Klasse an new Schueler(row).WechsleKlasse(new Klasse(klasse)); } } }
/// <summary> /// Die Methode zum Einlesen der Daten. /// </summary> /// <param name="fileName">Der Dateiname.</param> public static void ReadSchueler(string fileName) { using (StreamReader reader = new StreamReader(fileName, Encoding.GetEncoding("iso-8859-1"))) using (SchuelerTableAdapter tableAdapter = new SchuelerTableAdapter()) using (KlasseTableAdapter klasseTableAdapter = new KlasseTableAdapter()) { while (!reader.EndOfStream) { string line = reader.ReadLine(); if (string.IsNullOrEmpty(line)) { log.Debug("Ignoriere Leerzeile"); continue; } string[] array = line.Split(new string[] { "\t" }, StringSplitOptions.None); string[] cleanArray = array.Select(aString => aString.Trim(new char[] { '\"', ' ', '\n' })).ToArray(); int klasseId = GetKlasseId(klasseTableAdapter, cleanArray[klasseSpalte].Trim()); if (klasseId == -1) { log.Debug("Ignoriere einen Schüler ohne richtige Klasse. Übergebene Klasse war " + cleanArray[klasseSpalte]); continue; } // wenn der Schüler noch nicht vorhanden ist if (tableAdapter.GetDataById(int.Parse(cleanArray[schuelerIdSpalte])).Count == 0) { tableAdapter.Insert( int.Parse(cleanArray[schuelerIdSpalte]), cleanArray[nachnameSpalte], cleanArray[vornameSpalte], klasseId, cleanArray[rufnameSpalte], cleanArray[geschlechtSpalte], ParseDate(cleanArray[geburtsdatumSpalte]), cleanArray[geburtsortSpalte], cleanArray[bekenntnisSpalte], cleanArray[anschr1PlzSpalte], cleanArray[anschr1OrtSpalte], cleanArray[anschr1StrasseSpalte], cleanArray[anschr1TelefonSpalte], ChangeAusbildungsrichtung(cleanArray[ausbildungsrichtungSpalte]), cleanArray[fremdsprache2Spalte], cleanArray[reliOderEthikSpalte], cleanArray[wahlpflichtfachSpalte], cleanArray[wahlfach1Spalte], cleanArray[wahlfach2Spalte], cleanArray[wahlfach3Spalte], cleanArray[wahlfach4Spalte], cleanArray[wdh1JahrgangsstufeSpalte], cleanArray[wdh2JahrgangsstufeSpalte], cleanArray[wdh1GrundSpalte], cleanArray[wdh2GrundSpalte], ParseDate(cleanArray[probezeitBisSpalte]), ParseDate(cleanArray[austrittsdatumSpalte]), cleanArray[schulischeVorbildungSpalte], cleanArray[beruflicheVorbildungSpalte], cleanArray[lrsStoerungSpalte] == "1", cleanArray[lrsSchwaecheSpalte] == "1", ParseDate(cleanArray[lrsBisDatumSpalte]), cleanArray[verwandtschaftsbezeichnungEltern1Spalte], cleanArray[nachnameEltern1Spalte], cleanArray[vornameEltern1Spalte], cleanArray[anredeEltern1Spalte], cleanArray[nachnameEltern2Spalte], cleanArray[vornameEltern2Spalte], cleanArray[anredeEltern2Spalte], cleanArray[verwandtschaftsbezeichnungEltern2Spalte] ); } } } }
/// <summary> /// Sucht die ID der Klasse in der Datenbank. Versucht auch zu beurteilen, ob es sich überhaupt um eine echte Klasse handelt. /// Legt auch Klassen ggf. selbstständig in der Datenbank an. /// </summary> /// <param name="klasseTableAdapter">Der Table Adapter für Klassen.</param> /// <param name="klasse">Die Klassenbezeichnung.</param> /// <returns>Die Id der Klasse oder -1 falls die Klasse ungültig ist.</returns> private static int GetKlasseId(KlasseTableAdapter klasseTableAdapter, string klasse) { var klasseDBresult = klasseTableAdapter.GetDataByBezeichnung(klasse); if (klasseDBresult.Count == 1) { return klasseDBresult[0].Id; } else { // -N : Klassen für kommendes Jahr // AHR, FHR: Klassen des vergangenen Jahres // Abm: Abmeldungen // Ex, Import: ? if (klasse.EndsWith("-N") || klasse.Contains("AHR") || klasse.Contains("FHR") || klasse.Contains("Abm") || klasse.Equals("Ex") || klasse.Equals("Import")) { return -1; } else { klasseTableAdapter.Insert(klasse); var neueKlasse = klasseTableAdapter.GetDataByBezeichnung(klasse); return neueKlasse[0].Id; } } }
/// <summary> /// Sucht eine Klasse in der Datenbank. Wenn nicht gefunden, kann sie neu angelegt werden. /// </summary> /// <param name="aklasse">Die Klassenbezeichnung.</param> /// <param name="createIfNotFound">True wenn die Klasse ggf. auch neu angelegt werden darf.</param> /// <returns>Die Zeile der Klasse in der Datenbank oder null wenn nicht gefunden.</returns> public static diNoDataSet.KlasseRow FindOrCreateKlasse(string aklasse, bool createIfNotFound) { // suche die Klasse in der Datenbank. Wenn neu => anlegen using (var klAdapter = new KlasseTableAdapter()) { var klasse = klAdapter.GetDataByBezeichnung(aklasse); if (klasse.Count == 0) { if (createIfNotFound) { new KlasseTableAdapter().Insert(aklasse); } else { return null; } } return new KlasseTableAdapter().GetDataByBezeichnung(aklasse)[0]; } }