public void Cerca() { this.Enabled = false; var ancheFuturi = cbPrevisti.Checked; try { var mov = new DB.DataWrapper.cMovimenti() { DataDa = cGB.DateTo00000(eDa.Value), DataA = cGB.DateTo235959(eA.Value), descrizione = cGB.QQ(eDescrizione.Text), MacroArea = cGB.QQ(eMacroArea.Text) }; Totale = mov.RicercaGraficoSaldo(); grafico.Series.Clear(); using (var data_reader = mov.RicercaGrafico(cbPeriodicita.SelectedIndex == 1)) { var NumCorre = -1; var serie_nuova = CreaSerie(); var DataPrec = default(DateTime); var DataAct = default(DateTime); var DateUsate = new List <string>(); var tipo_intervallo = (cbPeriodicita.SelectedIndex == 1 ? eTipoData.Anno : eTipoData.Mese); try { if (data_reader.HasRows) { while (data_reader.Read()) { NumCorre += 1; var LaData = data_reader.GetString(0); DateUsate.Add(LaData); DataPrec = DataAct; DataAct = StringYYYYMMToDate(LaData); var soldi = cGB.ObjectToMoney(data_reader[1]); var data_point_attuale = CreaDataPoint(LaData, soldi); //inserire un datapoint vuoto se non ho dati nel db per quella data if (DataPrec != DateTime.MinValue) { if (DateDiff(tipo_intervallo, DataPrec, DataAct) != 1) { var differenza_date = DiffDate(tipo_intervallo, DataPrec, DataAct); for (var u = 0; u < (differenza_date?.Length ?? 0); u++) { if (differenza_date[u] != LaData) { var data_point_vuoto_no_dati_su_db = new System.Windows.Forms.DataVisualization.Charting.DataPoint() { YValues = DoubleToDataPointDouble(0D), ToolTip = ToEuroWithDate(0D, differenza_date[u]), AxisLabel = differenza_date[u], Color = Color.Green }; DateUsate.Add(differenza_date[u]); serie_nuova.Points.Insert(NumCorre, data_point_vuoto_no_dati_su_db); NumCorre += 1; } } } } serie_nuova.Points.Insert(NumCorre, data_point_attuale); } //fine lettura DB } if (ancheFuturi) { var daAggiungere = false; var val = 0d; var LaDataPeriodica = ""; var per = new DB.DataWrapper.cPeriodici(); var movimenti = per.RicercaScadenzeCalcolate(eDa.Value, eA.Value); for (var i = 0; i < movimenti.Count; i++) { daAggiungere = false; LaDataPeriodica = movimenti[i].GiornoDelMese.ToString(tipo_intervallo == eTipoData.Mese ? "yyyy/MM" : "yyyy"); val += movimenti[i].soldi_d; if (i < movimenti.Count - 1) { if (LaDataPeriodica != movimenti[i + 1].GiornoDelMese.ToString(tipo_intervallo == eTipoData.Mese ? "yyyy/MM" : "yyyy")) { daAggiungere = true; } } else { daAggiungere = true; } if (daAggiungere) { if (DateUsate.Contains(LaDataPeriodica)) { for (var v = 0; v < serie_nuova.Points.Count; v++) { if (serie_nuova.Points[v].AxisLabel.Equals(LaDataPeriodica, StringComparison.OrdinalIgnoreCase)) { serie_nuova.Points[v] = CreaDataPoint(LaDataPeriodica, serie_nuova.Points[v].YValues[0] + val, Color.Blue, Color.Brown); break; } } } else { NumCorre++; var e = CreaDataPoint(LaDataPeriodica, val, Color.Blue, Color.Brown); serie_nuova.Points.Insert(NumCorre, e); } val = 0; } } Totale = 0; for (var v = 0; v < serie_nuova.Points.Count; v++) { Totale += serie_nuova.Points[v].YValues[0]; } } //fine movimenti futuri this.gbGrafico.Text = "Grafico dei movimenti - Saldo = " + cGB.DoubleToMoneyStringValuta(Totale); serie_nuova.Name = "Saldo = " + cGB.DoubleToMoneyStringValuta(Totale); grafico.Series.Add(serie_nuova); } finally { data_reader.Close(); } } //using data_reader } finally { SettaTitolo(); this.Enabled = true; foreach (var area in grafico.ChartAreas) { area.RecalculateAxesScale(); } } }
public void Cerca() { this.Enabled = false; try { var mov = new DB.DataWrapper.cMovimenti(); Totale = mov.RicercaGraficoSaldo(false); grafico.Series.Clear(); using (var data_reader = mov.RicercaGraficoSpline()) { var NumCorre = -1; var serie_nuova = CreaSerie(); var DataPrec = default(DateTime); var DataAct = default(DateTime); var DateUsate = new List <string>(); var AnnoSoldi = new SortedDictionary <string, double>(); try { if (data_reader.HasRows) { while (data_reader.Read()) { NumCorre += 1; var LaData = data_reader.GetString(0); DateUsate.Add(LaData); DataPrec = DataAct; DataAct = StringYYYYMMToDate(LaData); var soldi = cGB.ObjectToMoney(data_reader[1]); var soldiDB = soldi; foreach (var yyyy in AnnoSoldi) { soldi += yyyy.Value; } AnnoSoldi[LaData] = soldiDB; var data_point_attuale = CreaDataPoint(LaData, soldi); //inserire un datapoint vuoto se non ho dati nel db per quella data if (DataPrec != DateTime.MinValue) { if (DateDiff(DataPrec, DataAct) != 1) { var differenza_date = DiffDate(DataPrec, DataAct); for (var u = 0; u < (differenza_date?.Length ?? 0); u++) { if (differenza_date[u] != LaData) { var data_point_vuoto_no_dati_su_db = new System.Windows.Forms.DataVisualization.Charting.DataPoint() { YValues = DoubleToDataPointDouble(0D), ToolTip = ToEuroWithDate(0D, differenza_date[u]), AxisLabel = differenza_date[u], Color = Color.Green }; DateUsate.Add(differenza_date[u]); serie_nuova.Points.Insert(NumCorre, data_point_vuoto_no_dati_su_db); NumCorre += 1; } } } } serie_nuova.Points.Insert(NumCorre, data_point_attuale); } //fine lettura DB } this.gbGrafico.Text = "Grafico dei movimenti - Saldo = " + cGB.DoubleToMoneyStringValuta(Totale); serie_nuova.Name = "Saldo = " + cGB.DoubleToMoneyStringValuta(Totale); grafico.Series.Add(serie_nuova); } finally { data_reader.Close(); } } //using data_reader } finally { SettaTitolo(); this.Enabled = true; foreach (var area in grafico.ChartAreas) { area.RecalculateAxesScale(); } } }