private void DatenAuslesen(tabMaschine Maschine, string DateiName) { int zaehler = 0; string msg = ""; _Ergebnisse.Clear(); var lZeilen = StringListenLaden(DateiName); if (lZeilen != null) { foreach (var zeile in lZeilen) { zaehler++; var felder = zeile.Split(new char[] { ';' }, StringSplitOptions.None); var erg = new ErgebnisAbfrage(); try { erg.Start = Convert.ToDateTime(felder[6]); } catch (Exception f) { FehlerAusloesen("DatumStart", zaehler, zeile, 6, felder[6], f); } try { erg.Dauer = Convert.ToDateTime(felder[7]) - (DateTime)erg.Start; } catch (Exception f) { FehlerAusloesen("DatumEnde", zaehler, zeile, 7, felder[7], f); } try { erg.Schluessel = felder[2]; } catch (Exception f) { FehlerAusloesen("NummerPosition", zaehler, zeile, 2, felder[2], f); } _Ergebnisse.Add(erg); } ErgebnissInDatenbank(Maschine, _Ergebnisse); try { File.Delete(DateiName); } catch (Exception f) { msg = $"Datei {DateiName} konnte nicht gelöscht werden !\nGrund: {f.Message}"; throw new Exception(msg); } } }
public override void Start(tabMaschine Maschine) { var pfadStart = @"\\" + Maschine.MaschineAdresse + @"\" + _StartPfad; Helper.SetzeBackflash(ref pfadStart); if (KontrolleDirectory(Maschine, pfadStart)) { // alle relevante Dateien aus Verzeichnissen laden -> Stammverzeichnis ...\EVG\Eingabe\Monit\(Jahr)\(HahrMonat)\.... var heute = DateTime.Now.Date; var durchlauf = Maschine.eProtokoll.LetzteDateiDatum; var dateienAuswertung = new List <string>(); while (durchlauf <= heute) { var dirMonatJahr = string.Format(@"{0}\{1}\{1}{2}", pfadStart, durchlauf.Year, durchlauf.Month.ToString("D2")); dateienAuswertung.AddRange(Directory.EnumerateFiles(dirMonatJahr, "F_*.mon").ToList()); durchlauf.AddMonths(1); } ; var merkeLetzteDatum = Maschine.eProtokoll.LetzteDateiDatum; var merkeLetzteZeile = Maschine.eProtokoll.LetzteZeile; var merkeZeileBauteil = 0; foreach (var datei in dateienAuswertung) { var datum = Helper.DatumAusYyyyMMdd(Path.GetFileName(datei).Substring(2)); if (datum < Maschine.eProtokoll.LetzteDateiDatum) { continue; } var lZeilen = StringListenLaden(datei); if (datum > Maschine.eProtokoll.LetzteDateiDatum) { Maschine.eProtokoll.LetzteDateiDatum = datum; } ErgebnisAbfrage ergNeu = null; var zeileStart = 0; if (datum == merkeLetzteDatum) { zeileStart = merkeLetzteZeile; } for (int zeile = zeileStart; zeile < lZeilen.Length; zeile++) { if (lZeilen[zeile][7] == 'A') { merkeZeileBauteil = zeile; ergNeu = new ErgebnisAbfrage() { Start = GetDatum(datum, lZeilen[zeile]) }; _Ergebnisse.Add(ergNeu); var felder = lZeilen[zeile].Split(new char[] { ';' }, StringSplitOptions.None); try { ergNeu.Schluessel = felder[4]; } catch (Exception f) { var msg = $"Fehler beim konvertieren der Id {felder[4]} in Zeile: {zeile}.\nGrund: {f.Message}"; throw new Exception(msg); } } else if ((ergNeu != null) && (lZeilen[zeile][7] == 'D')) { ergNeu.Dauer = (DateTime)ergNeu.Start - GetDatum(datum, lZeilen[zeile]); } } if (datum == Maschine.eProtokoll.LetzteDateiDatum) { Maschine.eProtokoll.LetzteZeile = merkeZeileBauteil; } } ErgebnissInDatenbank(Maschine, _Ergebnisse); } }