コード例 #1
0
        /// <summary>
        /// Delete or Update each modified value in DataSet
        /// </summary>
        /// <param name="interval"></param>
        /// <param name="ds"></param>
        /// <param name="overWrite"></param>
        /// <param name="validationFlag"></param>
        public void SaveChanges(string interval,
                                GraphData ds, bool overWrite, char validationFlag, bool isModeledData = false, int mrid = 0)
        {
            //for (int i = 0; i < ds.Series.Count; i++)
            foreach (var s in ds.SeriesRows)
            {
                if (String.Compare(s.Interval, interval, true) == 0)
                {
                    DataTable tbl = ds.GetTable(s.TableName);
                    DataTableUtility.PrintRowState(tbl);
                    DataRow[] rows = tbl.Select("", "", DataViewRowState.ModifiedCurrent);


                    foreach (DataRow row in rows)
                    {
                        DateTime t = Convert.ToDateTime(row[0]);
                        // Code for R-table data
                        if (!isModeledData)
                        {
                            if (row[1, DataRowVersion.Current] == DBNull.Value && row[1, DataRowVersion.Original] != DBNull.Value)
                            {// Delete
                                delete_from_hdb(s.hdb_site_datatype_id, t,
                                                interval, ds.GraphRow.TimeZone);
                            }
                            else
                            {// update
                                double val = Convert.ToDouble(row[1]);
                                ModifyRase(s.hdb_site_datatype_id, interval, t, val, overWrite,
                                           validationFlag, ds.GraphRow.TimeZone);
                            }
                        }
                        // Code for M-table data
                        else
                        {
                            DateTime tEnd = new DateTime();
                            if (interval.ToLower() == "hour")
                            {
                                tEnd = t.AddHours(1);
                            }
                            else if (interval.ToLower() == "day")
                            {
                                tEnd = t.AddDays(1);
                            }
                            else if (interval.ToLower() == "month")
                            {
                                tEnd.AddMonths(1);
                            }
                            else if (interval.ToLower() == "year")
                            {
                                tEnd = t.AddYears(1);
                            }
                            else
                            {
                                throw new Exception("Editing of modeled " + interval + " data is not supported.");
                            }

                            if (row[1, DataRowVersion.Current] == DBNull.Value && row[1, DataRowVersion.Original] != DBNull.Value)
                            {// Delete
                                delete_from_mtable(mrid, Convert.ToInt32(s.hdb_site_datatype_id), t, tEnd, interval);
                            }
                            else
                            {// update
                                double val = Convert.ToDouble(row[1]);
                                modify_m_table(mrid, Convert.ToInt32(s.hdb_site_datatype_id), t, tEnd, val, interval, true);
                            }
                        }
                    }


                    tbl.AcceptChanges();
                }
            }
        }