private void btnHaeRaportti_Click(object sender, EventArgs e) { DateTime alku = DateTime.Parse(dtpAlku.Text); DateTime loppu = DateTime.Parse(dtpLoppu.Text); string toimialue = cbToimialueet.Text; DataTable tt = TaskDB.HaeRaportti(toimialue, alku, loppu); dgvRaportti.DataSource = tt; dgvPalvRapsa.DataSource = TaskDB.HaeVaratutPalv(toimialue, alku, loppu); int i = dgvPalvRapsa.Rows.Count - 1; lbMaara.Text = "Yhteensä: " + i + " kpl"; lbMaara.Visible = true; double paivat = 0; int rivi = 0; List <int> list = new List <int>(); try { foreach (DataRow row in tt.Rows) { //Hakee taulukosta päivämäärät sekä dtp:loppupäivän vertailukohteeksi DateTime alkupv = (DateTime)tt.Rows[rivi].ItemArray[2]; DateTime loppupv = tt.Rows[rivi].Field <DateTime>(3); DateTime vertaa = DateTime.Parse(dtpLoppu.Text); int id = int.Parse(tt.Rows[rivi].ItemArray[0].ToString()); //Jos listassa ei ole ko mökkiä, lisää sen id:n listaan, jotta myöhemmin voidaan laskea mökkien lukumäärä if (!list.Contains(id)) { list.Add(id); } rivi++; //Jos päättymispäivä on suurempi, kuin vertauspäivä, lasketaan varatutpäivät vertauspäivän mukaan eli raportointijakson päättymisen mukaan if (loppupv > vertaa) { paivat += (vertaa - alkupv).TotalDays; } else { //Muussa tapauksessa lasketaan loppupäivän mukaan. Tällä lasketaan varatut vuorokaudet kaikkiaan. paivat += (loppupv - alkupv).TotalDays; } } lbPaivat.Text = "Varatut päivät yhteensä: " + paivat.ToString("00"); lbPaivat.Visible = true; DateTime raporttiAlku = DateTime.Parse(dtpAlku.Text); DateTime raporttiLoppu = DateTime.Parse(dtpLoppu.Text); //Lasketaan raportoitavien päivien määrä double raportoitavaAika = (raporttiLoppu - raporttiAlku).TotalDays; //Katsotaan listasta mökkien lukumäärä int kerroin = list.Count; //Kaikkiaan varattavissa olevien päivien määrä ajanjaksolla double mokkipäivatYht = raportoitavaAika * kerroin; //Täyttöaste double tayttoaste = (paivat / mokkipäivatYht) * 100; lbTaytto.Text = "Täyttöaste: " + tayttoaste.ToString("00") + " %"; lbTaytto.Visible = true; } catch (Exception ex) { MessageBox.Show("Virhe tiedoissa! " + ex.Message); } }