// Lista készítése gomb private void button1_Click(object sender, EventArgs e) { // access adatbázis összesítő try { // Feldolgozás indul... lblFeldolgoz.Visible = true; // Listaablak törlése RTBox1.Clear(); string azonosito = "", nev = "", beosztas = ""; DateTime datum = new DateTime(); // Heti munkaórák összeszámlálása start // // ossz.csv-be kiírjuk az összesített adatokat FileStream cfs = new FileStream("ossz.csv", FileMode.Create); StreamWriter sw = new StreamWriter(cfs, Encoding.UTF8); // Fejléc kiírása CSV-be sw.WriteLine("azonosító;név;dátum;ledolg.óra"); // Nyomtatás gomb aktíválása. btnNyomtat.Enabled = true; DateTime startOfWeek = startDatum.Value; DateTime endOfWeek = stopDatum.Value.AddDays(1); // A hét első és utolsó napjának meghatározása String startOfWeekST = startOfWeek.ToString("d", DateTimeFormatInfo.InvariantInfo); String endOfWeekST = endOfWeek.ToString("d", DateTimeFormatInfo.InvariantInfo); // Leválogatás OleDbCommand command = new OleDbCommand(); command.Connection = connection; connection.Open(); // A listából választott személy vizsgálata String szemely = szemelyLista.SelectedItem.ToString(); int szemelyhossz = szemely.Length; String szemelykeres; if (szemely != "Minden szemely") { szemelykeres = "azonosito=" + szemely.Substring(szemelyhossz - 11) + " and "; } else { szemelykeres = ""; } command.CommandText = "select * from mozgas where " + szemelykeres + "(datum between #" + startOfWeekST + "# and #" + endOfWeekST + "#) order by nev, datum ASC"; OleDbDataReader reader2 = command.ExecuteReader(); int startDay = 0, endDay = 0; TimeSpan startTime = new TimeSpan(); TimeSpan endTime = new TimeSpan(); TimeSpan ossz_munkaora, listaossz = new TimeSpan(); ossz_munkaora = TimeSpan.Zero; listaossz = TimeSpan.Zero; String akt_azonosito = ""; while (reader2.Read()) { // Adatok kiolvasása az adatbázisból azonosito = reader2.GetValue(1).ToString(); nev = reader2.GetString(2); beosztas = reader2.GetString(3); datum = Convert.ToDateTime(reader2.GetDateTime(4)); if ((ossz_munkaora == TimeSpan.Zero) && (akt_azonosito != azonosito)) { akt_azonosito = azonosito; startDay = datum.Day; endDay = datum.Day; startTime = datum.TimeOfDay; endTime = datum.TimeOfDay; } if (akt_azonosito == azonosito) { if (startDay == 0) { startDay = datum.Day; endDay = datum.Day; startTime = datum.TimeOfDay; endTime = datum.TimeOfDay; } else { if (datum.Day == startDay) { if (startTime == TimeSpan.Zero) { startTime = datum.TimeOfDay; } endTime = datum.TimeOfDay; if (startTime != endTime) { ossz_munkaora += (endTime - startTime); startTime = TimeSpan.Zero; akt_azonosito = azonosito; RTBox1.AppendText(azonosito + " " + nev + " " + beosztas + " " + datum.ToShortDateString() + " ... "); RTBox1.AppendText(ossz_munkaora.ToString() + "\n"); RTBox1.AppendText("-----------------------------------------------------------------------------------------------------------------------\n"); // Adat rögzítése fájlba sw.WriteLine(azonosito + ';' + nev + ';' + datum.ToShortDateString() + ';' + ossz_munkaora.ToString()); listaossz += ossz_munkaora; ossz_munkaora = TimeSpan.Zero; } } else { endDay = datum.Day; startTime = datum.TimeOfDay; endTime = TimeSpan.Zero; } startDay = datum.Day; } } } // Az össz óraszám egész részét vesszük String listaosszST = listaossz.TotalHours.ToString(); int lpoz = listaosszST.IndexOf(','); // if (lpoz > 0) { String kiir = "Időszakban összesen = " + listaosszST.Substring(0, lpoz) + " óra " + listaossz.Minutes + " perc " + listaossz.Seconds + " másodperc\n"; RTBox1.AppendText(kiir); //sw.WriteLine(kiir); } sw.Close(); cfs.Close(); connection.Close(); // Ha van az időszakban rögzítés. if (listaossz.Hours > 0 || listaossz.Minutes > 0 || listaossz.Seconds > 0) { // // Heti munkaórák összeszámlálása start // Makró1 start // A munka.xlsm makro segítségével a létrehozott csv fájlból beolvassuk az adatokat, majd részösszeget képzünk! // Kimenet: ossz.xlsx állomány Excel.Application objExcel = new Excel.Application(); Excel.Workbook objWorkBook; object misValue = System.Reflection.Missing.Value; objExcel = new Excel.Application(); objWorkBook = objExcel.Workbooks.Open(Application.StartupPath + @"\munka.xlsm"); objExcel.Run("Makró1"); objWorkBook.Close(false); objExcel.Quit(); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(objExcel); System.Runtime.InteropServices.Marshal.FinalReleaseComObject(objWorkBook); GC.Collect(); // Makró1 stop } else { MessageBox.Show("Az időszakban nincs kiértékelhető adat!", "Hiba!"); } // Feldolgozás vége lblFeldolgoz.Visible = false; } catch (Exception ex2) { MessageBox.Show("Hiba " + ex2.Message, "Hiba!"); } }
private void button2_Click(object sender, EventArgs e) { // Lista törlése gomb RTBox1.Clear(); btnNyomtat.Enabled = false; }