Поразмысли над этим примерм, но тут я создаю таблицу от руки, так как некоторые параметры нужны по названиям а не по идентифакторам, и кстати, этот метод проверяет на срок сегоднешнего дня, т.е. если документ просрочен (срок исполнения задается изначально) список документов вывдитя... Можно додумать под твою и все | Код | //Проверка на срок private void ProverkaNaSrok() {
//=========================================================== #region Таблица DataTable newTable = new DataTable("SrocConec");
DataColumn myDateColumn; myDateColumn = new DataColumn(); myDateColumn.DataType = Type.GetType("System.Int32"); myDateColumn.ColumnName = "id_Key"; myDateColumn.ReadOnly = true; myDateColumn.AllowDBNull = false; myDateColumn.Unique = true;
myDateColumn.AutoIncrement = true; myDateColumn.AutoIncrementSeed = 1000; myDateColumn.AutoIncrementStep = 1; //myTable.Columns.Add(myDateColumn );
myDateColumn = new DataColumn(); myDateColumn.DataType = Type.GetType("System.String"); myDateColumn.ColumnName = "id"; newTable.Columns.Add(myDateColumn);
myDateColumn = new DataColumn(); myDateColumn.DataType = Type.GetType("System.String"); myDateColumn.ColumnName = "PunctProtocola"; newTable.Columns.Add(myDateColumn);
myDateColumn = new DataColumn(); myDateColumn.DataType = Type.GetType("System.String"); myDateColumn.ColumnName = "Soderganiye"; newTable.Columns.Add(myDateColumn);
myDateColumn = new DataColumn(); myDateColumn.DataType = Type.GetType("System.String"); myDateColumn.ColumnName = "SrocIspolneniya"; newTable.Columns.Add(myDateColumn);
myDateColumn = new DataColumn(); myDateColumn.DataType = Type.GetType("System.String"); myDateColumn.ColumnName = "HodIspolneniya"; newTable.Columns.Add(myDateColumn);
myDateColumn = new DataColumn(); myDateColumn.DataType = Type.GetType("System.String"); myDateColumn.ColumnName = "Primechanie"; newTable.Columns.Add(myDateColumn);
myDateColumn = new DataColumn(); myDateColumn.DataType = Type.GetType("System.String"); myDateColumn.ColumnName = "VidRezoluciy"; newTable.Columns.Add(myDateColumn);
myDateColumn = new DataColumn(); myDateColumn.DataType = Type.GetType("System.String"); myDateColumn.ColumnName = "Ispolnitel"; newTable.Columns.Add(myDateColumn);
myDateColumn = new DataColumn(); myDateColumn.DataType = Type.GetType("System.String"); myDateColumn.ColumnName = "Podrazdeleie"; newTable.Columns.Add(myDateColumn);
myDateColumn = new DataColumn(); myDateColumn.DataType = Type.GetType("System.String"); myDateColumn.ColumnName = "Status"; newTable.Columns.Add(myDateColumn);
myDateColumn = new DataColumn(); myDateColumn.DataType = Type.GetType("System.String"); myDateColumn.ColumnName = "id_Protocol"; newTable.Columns.Add(myDateColumn);
DataColumn[] pk = new DataColumn[1]; pk[0] = newTable.Columns["id"]; newTable.PrimaryKey = pk;
#endregion //==========================================================
using (OleDbConnection conn = new OleDbConnection(connProtocolsTable)) { try {
conn.Open(); selCommand = new OleDbCommand(connStringPunctOne, conn); selCommand.CommandType = CommandType.Text;
daPunctOne = new OleDbDataAdapter(selCommand); DataSet ds = new DataSet(); daPunctOne.Fill(ds, "PunctOne"); //------------------------------------------------------- try { DateTime nowDate = DateTime.Now.Date;
int kol=0;
bool flag = false;
//----------------------------------------------------------- foreach (DataRow empRow in ds.Tables["PunctOne"].Rows) { if ((empRow.IsNull("SrocIspolneniya")) || empRow["Status"].ToString() == "1" || empRow["Status"].ToString() == "2") { continue; } else { DateTime empBirthDay = (DateTime)empRow["SrocIspolneniya"];
bool isBirthDay = false;
if (empBirthDay.Year < nowDate.Year) { isBirthDay = true;
} if (empBirthDay.Year == nowDate.Year) { if ((empBirthDay.Month == nowDate.Month) && (empBirthDay.Day == nowDate.Day) || (empBirthDay.Month == nowDate.Month) && (empBirthDay.Day < nowDate.Day) || (empBirthDay.Month < nowDate.Month) && (empBirthDay.Day < nowDate.Day) || (empBirthDay.Month < nowDate.Month) && (empBirthDay.Day > nowDate.Day)) { isBirthDay = true;
} } if (empBirthDay.Year > nowDate.Year) { isBirthDay = false; }
if (isBirthDay) {
DataRow newRow = newTable.NewRow(); newRow["id"] = empRow["id"].ToString(); newRow["PunctProtocola"] = empRow["PunctProtocola"].ToString(); newRow["Soderganiye"] = empRow["Soderganiye"].ToString(); newRow["SrocIspolneniya"] = empRow["SrocIspolneniya"].ToString(); newRow["HodIspolneniya"] = empRow["HodIspolneniya"].ToString(); newRow["Primechanie"] = empRow["Primechanie"].ToString(); newRow["VidRezoluciy"] = empRow["VidRezoluciy"].ToString(); newRow["Ispolnitel"] = empRow["Ispolnitel"].ToString(); newRow["Podrazdeleie"] = empRow["Podrazdeleie"].ToString(); newRow["Status"] = empRow["Status"].ToString(); newRow["id_Protocol"] = empRow["id_Protocol"].ToString();
newTable.Rows.Add(newRow);
kol+=1; flag = true;
} } } //----------------------------------------------------------- if (flag) { DataView dvPunctOne = new DataView(newTable); dvPunctOne.Sort = "PunctProtocola asc";
dgvSrocPunktOne.DataSource = dvPunctOne; lblPunctOneKol.Text = Convert.ToString(kol); ObshKolDocSroc += kol;
} //------------------------------------------------------------ } catch (Exception ex) { MessageBox.Show(ex.Message, ex.Source); } //-------------------------------------------------------------------
conn.Close(); } catch (SqlException ex) { MessageBox.Show(ex.Message, ex.Source); conn.Close(); } }
} //-----------------------------------------
|
Также можно вычислять дни просрочки к примеру с помощью этого метода В этом методе нужно подать ту дату, которую имеем в базе и получаем разничу со ссегоднешним днем, если к примеру +10 то 10 дней прошло как должен был быть исполнен, если -10 то еще есть 10 дней до исполнения В общем посмотри, это не совсе то что надо, но с датами примерно вот что сделать, Удачи!!! | Код | //Вычисление разницу в годах и днях internal static int VichislenieDneySroka(DateTime srocDoc) { //----------------------------------- int Reshenie = 0; int ZnachenieGoda = 0; int ZnachenieMesaca = 0; ZnachenieGoda = DateTime.Now.Year.CompareTo(srocDoc.Year); ZnachenieMesaca = DateTime.Now.Month.CompareTo(srocDoc.Month);
//****************************************************************** //Если года ровны (Документы имеют срок в одном году) if (ZnachenieGoda == 0) { //----------------------- if (ZnachenieMesaca == 0) { Reshenie = DateTime.Now.Day - srocDoc.Day; } //----------------------- if (ZnachenieMesaca == 1) { int mes = 0; mes = DateTime.Now.Month - srocDoc.Month; int kol = 0; for (int i = 0; i <= mes; i++) { kol += DateTime.DaysInMonth(DateTime.Now.Year, srocDoc.Month + i);
} int kolDneySroka = 0; kolDneySroka = DateTime.DaysInMonth(DateTime.Now.Year, srocDoc.Month) - srocDoc.Day + DateTime.Now.Day; Reshenie = kol - kolDneySroka;
} //----------------------- if (ZnachenieMesaca == -1) { int mes = srocDoc.Month - DateTime.Now.Month; int kol = 0; for (int i = 0; i <= mes; i++) { kol += DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month + i);
}
int kolDneySroka = 0; kolDneySroka = DateTime.DaysInMonth(DateTime.Now.Year, srocDoc.Month) - srocDoc.Day + DateTime.Now.Day;
Reshenie = kolDneySroka - kol;
} } //****************************************************************** //Если нынешний год больше if (ZnachenieGoda == 1) { //------------------------------------- int kolDneyVGodu = 0; for (int i = 0; i < 12; i++) { kolDneyVGodu += DateTime.DaysInMonth(DateTime.Now.Year, i + 1);
}
int KolDneyPosleDaty = 0;
int DnyPosleSegodnya = 0; DnyPosleSegodnya = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) - DateTime.Now.Day;
for (int i = 0; i < 12 - DateTime.Now.Month; i++) { KolDneyPosleDaty += DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month + i + 1);
}
int KolDneyMinusDaysVGodu = 0;
KolDneyMinusDaysVGodu = KolDneyPosleDaty + DnyPosleSegodnya;
//-------------------------------------- int kolDneyVGoduSroc = 0; for (int i = 0; i < 12; i++) { kolDneyVGoduSroc += DateTime.DaysInMonth(srocDoc.Year, i + 1);
} int KolDneyPosleDatySroc = 0;
for (int i = 0; i < 13 - srocDoc.Month; i++) { KolDneyPosleDatySroc += DateTime.DaysInMonth(srocDoc.Year, srocDoc.Month + i);
} int KolDneyMinusDaysVGoduSroc = 0;
KolDneyMinusDaysVGoduSroc = kolDneyVGoduSroc - KolDneyPosleDatySroc + srocDoc.Day;
//--------------------------------------
int raznizaGodov = 0; raznizaGodov = DateTime.Now.Year - srocDoc.Year; int kolDneyVGoduObsee = 0;
for (int i = 0; i <= raznizaGodov; i++) { for (int j = 0; j < 12; j++) { kolDneyVGoduObsee += DateTime.DaysInMonth(srocDoc.Year + i, j + 1); } }
Reshenie = kolDneyVGoduObsee - (KolDneyMinusDaysVGoduSroc + KolDneyMinusDaysVGodu);
} //****************************************************************** //Если нынешний год меньше if (ZnachenieGoda == -1) { //------------------------------------- int kolDneyVGodu = 0; for (int i = 0; i < 12; i++) { kolDneyVGodu += DateTime.DaysInMonth(DateTime.Now.Year, i + 1);
}
int KolDneyPosleDaty = 0;
//int DnyPosleSegodnya = 0; //DnyPosleSegodnya = DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month) - DateTime.Now.Day;
for (int i = 0; i < 13 - DateTime.Now.Month; i++) { KolDneyPosleDaty += DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month + i); }
int KolDneyMinusDaysVGodu = 0;
KolDneyMinusDaysVGodu = kolDneyVGodu - (KolDneyPosleDaty - DateTime.Now.Day);
//-------------------------------------- int kolDneyVGoduSroc = 0; for (int i = 0; i < 12; i++) { kolDneyVGoduSroc += DateTime.DaysInMonth(srocDoc.Year, i + 1);
} int KolDneyPosleDatySroc = 0;
for (int i = 0; i < 13 - srocDoc.Month; i++) { KolDneyPosleDatySroc += DateTime.DaysInMonth(srocDoc.Year, srocDoc.Month + i);
} int KolDneyMinusDaysVGoduSroc = 0;
KolDneyMinusDaysVGoduSroc = KolDneyPosleDatySroc - srocDoc.Day;
//--------------------------------------
int raznizaGodov = 0; raznizaGodov = srocDoc.Year - DateTime.Now.Year; int kolDneyVGoduObsee = 0;
for (int i = 0; i <= raznizaGodov; i++) { for (int j = 0; j < 12; j++) { kolDneyVGoduObsee += DateTime.DaysInMonth(DateTime.Now.Year + i, j + 1); } }
Reshenie = (KolDneyMinusDaysVGoduSroc + KolDneyMinusDaysVGodu) - kolDneyVGoduObsee; } //****************************************************************** return Reshenie;
} //-------------------------------------------
|
|