/// <summary> /// Konstruktor. /// </summary> /// <param name="statusChangedHandler">Handler für Statusmeldungen. Kann auch null sein.</param> public ErzeugeAlleExcelDateien(StatusChanged statusChangedHandler) { KursTableAdapter ta = new KursTableAdapter(); var kurse = ta.GetData(); int count = 0; foreach (var kurs in kurse) { //if (kurs.Id > 824 && kurs.Id < 840) //if (kurs.Id==851) { if (statusChangedHandler != null) { statusChangedHandler(this, new StatusChangedEventArgs() { Meldung = "Erzeuge Datei" + count + " von " + kurse.Count }); } new ErzeugeExcelDatei(kurs); count++; } } if (statusChangedHandler != null) { statusChangedHandler(this, new StatusChangedEventArgs() { Meldung = count + " Dateien erfolgreich erzeugt" }); } }
/// <summary> /// Synchronisiert die Excel-Datei mit der Datenbank. /// </summary> /// <param name="fileName">Der Dateiname.</param> public void Synchronize(string fileName) { if (OnStatusChange != null) { OnStatusChange(this, new StatusChangedEventArgs() { Status = "synchronisiere " + fileName }); } using (ExcelSheet sheet = new ExcelSheet(fileName)) { // erst mal schauen, ob der Kurs laut DB existiert. Todo: nächstes Jahr kursId verwenden! KursTableAdapter kursAdapter = new KursTableAdapter(); var kurse = kursAdapter.GetDataByBezeichnung(sheet.Kursbezeichnung); if (kurse.Count != 1) { kurse = kursAdapter.GetDataByBezeichnung(sheet.Fachname + " " + sheet.Kursbezeichnung); if (kurse.Count != 1) { if (OnStatusChange != null) { OnStatusChange(this, new StatusChangedEventArgs() { Status = "Fehler in Datei " + fileName + ": Kurs nicht oder mehrfach gefunden: " + sheet.Kursbezeichnung }); } } } int kursId = kurse[0].Id; using (NoteTableAdapter noteAdapter = new NoteTableAdapter()) using (BerechneteNoteTableAdapter berechneteNotenAdapter = new BerechneteNoteTableAdapter()) { DeleteAlteNoten(kursId, noteAdapter, berechneteNotenAdapter); foreach (var schueler in sheet.Schueler) { InsertNoten(kursId, noteAdapter, berechneteNotenAdapter, schueler); } if (OnStatusChange != null) { OnStatusChange(this, new StatusChangedEventArgs() { Status = "Noten sind eingetragen. Prüfe auf Änderungen an den Schülerdaten." }); } var alleSchueler = CheckSchueler(sheet, kursId); CheckLegastheniker(sheet, kursAdapter, kurse[0], alleSchueler); } } if (OnStatusChange != null) { OnStatusChange(this, new StatusChangedEventArgs() { Status = "Datei " + fileName + " erfolgreich gelesen" }); } }
void subrptKursEventHandler(object sender, SubreportProcessingEventArgs e) { diNoDataSet.KursDataTable kurse = new diNoDataSet.KursDataTable(); KursTableAdapter BerichtTableAdapter; BerichtTableAdapter = new KursTableAdapter(); BerichtTableAdapter.ClearBeforeFill = true; //e.Parameters verwenden, um Fremdschlüssel abzugreifen int LehrerId=0; int.TryParse(e.Parameters[0].Values[0],out LehrerId); BerichtTableAdapter.FillByLehrerId(kurse, LehrerId); e.DataSources.Add(new ReportDataSource("DataSetKurs",(DataTable) kurse)); }
public Kurs(int id) { this.Id = id; var rst = new KursTableAdapter().GetDataById(id); if (rst.Count == 1) { this.data = rst[0]; } else { throw new InvalidOperationException("Konstruktor Kurs: Ungültige ID."); } }
private static Kurs FindOrCreateDummyKurs(string bezeichnung, string fachKuerzel) { var kursAdapter = new KursTableAdapter(); var fachAdapter = new FachTableAdapter(); var kurse = kursAdapter.GetDataByBezeichnung(bezeichnung); if (kurse == null || kurse.Count == 0) { kursAdapter.Insert(bezeichnung, null, fachAdapter.GetDataByKuerzel(fachKuerzel)[0].Id, null); kurse = kursAdapter.GetDataByBezeichnung(bezeichnung); } if (kurse == null || kurse.Count == 0) { throw new InvalidOperationException("Dummykurs "+ bezeichnung + " konnte nicht angelegt werden."); } return new Kurs(kurse[0]); }
/// <summary> /// Sucht den Kurs in der Datenbank. Falls nicht vorhanden, wird er neu angelegt. /// </summary> /// <param name="aKursBezeichung">Die Bezeichnung des Kurses.</param> /// <param name="aLehrerId">Die Id des Lehrers.</param> /// <param name="aFach">Das Fach.</param> /// <returns>Die Zurszeile in der Datenbank.</returns> public static diNoDataSet.KursRow FindOrCreateKurs(string aKursBezeichung, int aLehrerId, string aFach) { using (var kursAdapter = new KursTableAdapter()) { // suche den Kurs in der Datenbank. Wenn neu => anlegen var kurse = kursAdapter.GetDataByBezeichnung(aKursBezeichung); if (kurse.Count == 0) { // suche Fach in der Datenbank var fach = FindOrCreateFach(aFach); kursAdapter.Insert(aKursBezeichung, aLehrerId, fach.Id); } kurse = kursAdapter.GetDataByBezeichnung(aKursBezeichung); return kurse[0]; } }
/// <summary> /// Prüft, ob die Legasthenievermerke der Datenbank mit der Excel-Datei übereinstimmen. /// </summary> /// <param name="sheet">Das Excel-Sheet.</param> /// <param name="kursAdapter">Der Kurs-Adapter.</param> /// <param name="kurs">Die Zeile des aktuellen Kurses in der Datenbank.</param> /// <param name="alleSchueler">Liste aller Schüler aus der Datenbank.</param> private static void CheckLegastheniker(ExcelSheet sheet, KursTableAdapter kursAdapter, diNoDataSet.KursRow kurs, diNoDataSet.SchuelerKursDataTable alleSchueler) { //TODO: Methode ungetestet using (FachTableAdapter fachAdapter = new FachTableAdapter()) { var deutsch = fachAdapter.GetDataByKuerzel("D")[0]; var englisch = fachAdapter.GetDataByKuerzel("E")[0]; if (kurs.FachId == deutsch.Id || kurs.FachId == englisch.Id) { foreach (var schueler in alleSchueler) { var excelSchueler = sheet.Schueler.FirstOrDefault( x => x.Id == schueler.SchuelerId ); //falls der Schüler noch in der Excel-Datei drinsteht. Könnte ja sein, dass er schon ausgetreten o. ä. ist if (excelSchueler != null) { var dbSchueler = new SchuelerTableAdapter().GetDataById(schueler.SchuelerId)[0]; if (excelSchueler.IsLegastheniker != (dbSchueler.LRSSchwaeche || dbSchueler.LRSStoerung)) { excelSchueler.IsLegastheniker = (dbSchueler.LRSSchwaeche || dbSchueler.LRSStoerung); sheet.SetLegasthenieVermerk(excelSchueler); } } } } } }