Beispiel #1
0
        // 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!");
            }
        }
Beispiel #2
0
 private void button2_Click(object sender, EventArgs e)
 {
     // Lista törlése gomb
     RTBox1.Clear();
     btnNyomtat.Enabled = false;
 }