private void btnPrint_Click(object sender, EventArgs e)
        {
            if (dataGridMov.Rows.Count == 0)
            {
                MessageBox.Show("Non ci sono risultati di ricerca da stampare.", "Riprovare con un'altra ricerca", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }

            //costruisco la lista dei movimenti da stampare
            List<MonthlyExpenseReportItem> itemList = new List<MonthlyExpenseReportItem>();
            MonthlyExpenseReportItem item;

            foreach (scadenzettiDbDataSet.MovimentoRow r in mdt.Rows)
            {
                item = new MonthlyExpenseReportItem();
                item.Scadenza = r.DataScadenza;
                item.Tipo = r.Tipo;
                item.Importo = item.Tipo=="uscita" ? - r.ImportoIvato : r.ImportoIvato;
                item.Debitore = Utenti[r.Utente];
                item.Creditore = Destinatari[r.DestinatarioMov];
                item.Causale = r.Causale;
                item.Ultimato = r.Ultimato;
                itemList.Add(item);
            }

            DateSearchCriteria dsc = new DateSearchCriteria();
            dsc.From = dtpickDataDa.Value;
            dsc.To = dtpickDataA.Value;

            ReportAllMovForm ramf = new ReportAllMovForm(itemList, dsc);
            ramf.Show();
        }
        public List<MonthlyExpenseReportItem> cercaMovimentiCategoria(int idCat)
        {
            OleDbConnection conn = new OleDbConnection(Properties.Settings.Default.scadenzettiDbConnectionString);
            string queryString = "SELECT * FROM QueryReportCategoria";
            OleDbCommand cmd = new OleDbCommand(queryString, conn);
            cmd.Parameters.Add("idCat", OleDbType.Integer).Value = idCat;
            conn.Open();
            OleDbDataReader reader = cmd.ExecuteReader();
            List<MonthlyExpenseReportItem> list = new List<MonthlyExpenseReportItem>();
            while (reader.Read())
            {
                MonthlyExpenseReportItem mov = new MonthlyExpenseReportItem();
                mov.Scadenza = DateTime.Parse(reader[0].ToString());
                mov.Importo = decimal.Parse(reader[1].ToString());
                mov.Debitore = reader[2].ToString();
                mov.Creditore = reader[3].ToString();
                mov.Causale = reader[4].ToString();
                mov.Tipo = reader[5].ToString();
                mov.Ultimato = bool.Parse(reader[6].ToString());

                list.Add(mov);
            }
            reader.Close();
            conn.Close();
            return list;
        }
        public List<MonthlyExpenseReportItem> getDataForMonthlyExpense(int month, int year, List<int> idUsers)
        {
            List<MonthlyExpenseReportItem> itemList = new List<MonthlyExpenseReportItem>();

            DateTime startDate = new DateTime(year, month, 1);
            DateTime endDate = startDate.AddMonths(1);

            OleDbConnection conn = new OleDbConnection(Properties.Settings.Default.scadenzettiDbConnectionString);

            string prefixQueryStringMov = "SELECT Utente.Nome, DestinatarioMov.Nome, Movimento.DataScadenza, Movimento.ImportoIvato, Movimento.Causale FROM Utente, DestinatarioMov, Movimento WHERE (Utente.ID =Movimento.Utente) AND (DestinatarioMov.ID=Movimento.DestinatarioMov)";

            MonthlyExpenseReportItem itemReport;
            conn.Open();
            foreach(int user in idUsers){
                string queryString = prefixQueryStringMov + " AND (Utente.ID = " + user + ") AND (Movimento.DataScadenza BETWEEN #" +
                    startDate.Month+"/"+startDate.Day+"/"+startDate.Year + "# AND #" +
                    endDate.Month + "/" + endDate.Day + "/" + endDate.Year + "#) AND Movimento.Ultimato=0 ORDER BY Movimento.DataScadenza;";
                OleDbCommand cmd = new OleDbCommand(queryString, conn);
                OleDbDataReader reader = cmd.ExecuteReader();
                while (reader.Read())
                {
                    itemReport = new MonthlyExpenseReportItem();
                    itemReport.Debitore = reader[0].ToString();
                    itemReport.Creditore = reader[1].ToString();
                    itemReport.Scadenza = DateTime.Parse(reader[2].ToString());
                    itemReport.Importo = decimal.Parse(reader[3].ToString());
                    itemReport.Causale = reader[4].ToString();
                    itemList.Add(itemReport);
                }
                reader.Close();
            }
            conn.Close();

            return itemList;
        }
        public List<MonthlyExpenseReportItem> cercaTuttiMov(DateTime from, DateTime to)
        {
            List<MonthlyExpenseReportItem> itemList = new List<MonthlyExpenseReportItem>();

            OleDbConnection conn = new OleDbConnection(Properties.Settings.Default.scadenzettiDbConnectionString);

            string queryString = "SELECT * FROM QueryReportAll";

            MonthlyExpenseReportItem itemReport;
            conn.Open();

            OleDbCommand cmd = new OleDbCommand(queryString, conn);
            cmd.Parameters.Add("DataFrom", OleDbType.Date).Value = from;
            cmd.Parameters.Add("DataTo", OleDbType.Date).Value = to;
            OleDbDataReader reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                itemReport = new MonthlyExpenseReportItem();
                itemReport.Scadenza = DateTime.Parse(reader[0].ToString());
                itemReport.Importo = decimal.Parse(reader[1].ToString());
                itemReport.Debitore = reader[2].ToString();
                itemReport.Creditore = reader[3].ToString();
                itemReport.Causale = reader[4].ToString();
                itemReport.Tipo = reader[5].ToString();
                itemReport.Ultimato = bool.Parse(reader[6].ToString());
                if (itemReport.Tipo == "uscita") itemReport.Importo = -itemReport.Importo;
                itemList.Add(itemReport);
            }
            reader.Close();
            conn.Close();
            return itemList;
        }