using System; using System.IO; using System.Data; using System.Text; using System.Windows.Forms; using System.Collections; using DevComponents.DotNetBar; namespace Cyberpipe { public partial class PatrolLog : Form { string patrolerid; private int pagesize = 16; private int currentpage = 1; private int lastpage = 1; public PatrolLog() { InitializeComponent(); } public PatrolLog(string patrolerid) { this.patrolerid = patrolerid; InitializeComponent(); } private void reloadDataGrid(int pageIndex) { if (dateTimePicker_start.Value.CompareTo(dateTimePicker_end.Value) > 0) { MessageBox.Show("开始日期不能大于结束日期!"); return; } string sqlrows = "select * from (select rownum as rowno,dbid,equipment,operate,operate_time,username from loginfo where patroler_id=" + patrolerid + " "; string sqlcount = "select count(*) from loginfo where patroler_id=" + patrolerid + " "; if (null!=dateTimePicker_start.Value) { sqlrows += "and operate_time>=to_date('" + dateTimePicker_start.Value.ToShortDateString() + "','yyyy-MM-dd') "; sqlcount += "and operate_time>=to_date('" + dateTimePicker_start.Value.ToShortDateString() + "','yyyy-MM-dd') "; } if (null != dateTimePicker_end.Value) { DateTime time = dateTimePicker_end.Value; sqlrows += "and operate_time<=to_date('" + time.AddDays(1).ToShortDateString() + "','yyyy-MM-dd') "; sqlcount += "and operate_time<=to_date('" + time.AddDays(1).ToShortDateString() + "','yyyy-MM-dd') "; } sqlrows += "and rownum<=" + (pagesize * pageIndex) + ") table_alias where table_alias.rowno>=" + ((pageIndex - 1) * pagesize + 1); sqlrows += " order by operate_time desc"; int rows = int.Parse(OracleUtils.ExecuteScalar(OracleUtils.ConnectionString, CommandType.Text, sqlcount).ToString()); int pages = 0; if (rows % pagesize == 0) { pages = rows / pagesize; } else { pages = rows / pagesize + 1; } lastpage = pages; lab_page_msg.Text = "共" + rows + "条记录,每页" + pagesize + "条,第" + pageIndex + "页,共" + pages + "页"; combo_page_num.Items.Clear(); for (int i = 1; i <= pages; i++) { combo_page_num.Items.Add(new ComboBoxItem(i.ToString(), i.ToString())); } if (lastpage == 1) { btn_page_first.Enabled = false; btn_page_pre.Enabled = false; btn_page_last.Enabled = false; btn_page_next.Enabled = false; } else if (currentpage == 1) { btn_page_first.Enabled = false; btn_page_pre.Enabled = false; btn_page_last.Enabled = true; btn_page_next.Enabled = true; } else if (currentpage == lastpage) { btn_page_first.Enabled = true; btn_page_pre.Enabled = true; btn_page_last.Enabled = false; btn_page_next.Enabled = false; } else { btn_page_first.Enabled = true; btn_page_pre.Enabled = true; btn_page_last.Enabled = true; btn_page_next.Enabled = true; } DataTable table = OracleUtils.ExecuteDataset(OracleUtils.ConnectionString, CommandType.Text, sqlrows).Tables[0]; dataGridViewX1.DataSource = table; } private void PatrolLog_Load(object sender, EventArgs e) { try { dateTimePicker_end.Value = DateTime.Now; dateTimePicker_start.Value = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1) ; reloadDataGrid(currentpage); } catch (Exception ex) { MessageBox.Show("日志显示失败:" + ex.ToString(), "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } #region public static void PublishError(Exception e) { if (e.Data.Count > 0) { e.Data.Add("Kind", "ErrorLog"); } PublishTxt("ErrorLog", e); PublishErrorToDataBase(e); } private static void PublishErrorToDataBase(Exception e) { string stackTrace = e.StackTrace.Replace("\r\n", "||"); string message = e.Message.Replace("'", "\""); string source = e.Source.Replace(" ", "-"); string sql = " insert into 日志管理 values('" + DateTime.Now.ToString() + "','" + message + "','" + source + "','" + stackTrace + "','" + e.TargetSite + "')"; try { int.Parse(OracleUtils.ExecuteScalar(OracleUtils.ConnectionString, CommandType.Text, sql).ToString()); } catch (Exception ex) { PublishTxt("ErrorLog", ex); } } private static void PublishTxt(string LogName, Exception e) { string m_LogName = Application.StartupPath + "/log.txt"; StringBuilder sb = new StringBuilder(); sb.Append("\r\n exception begin -----------------" + DateTime.Now + "---------------------\r\n\r\n\r\n"); sb.Append("\r\n e.Message:" + e.Message + "\r\n"); sb.Append("\r\n e.Source:" + e.Source + "\r\n"); sb.Append("\r\n e.TargetSite:" + e.TargetSite.ToString() + "\r\n"); sb.Append("\r\n e.StackTrace:" + e.StackTrace + "\r\n"); sb.Append("\r\n\r\n\r\n exception over ------------------------------------------------------------\r\n"); if (e.Data.Count > 0) { foreach (DictionaryEntry de in e.Data) { sb.Append("\r\n" + de.Key.ToString() + de.Value.ToString() + "\r\n"); } } PublishStream(m_LogName, sb); } public static void PublishAlarmMessage(string sensorType, string eqtId, string alarmValue, string collectTime) { string m_LogName = Application.StartupPath + "/alarmlog.txt"; //m_LogName = m_LogName.Split('.')[0] + DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() // + DateTime.Now.Day.ToString() +"."+ m_LogName.Split('.')[1]; StringBuilder sb = new StringBuilder(); sb.Append("\r\n alarm begin -----------------" + DateTime.Now + "---------------------\r\n\r\n\r\n"); sb.Append("\r\n 传感器类型:" + sensorType + "\r\n"); sb.Append("\r\n 设备id:" + eqtId + "\r\n"); sb.Append("\r\n 传感器测量值:" + alarmValue + "\r\n"); sb.Append("\r\n 测量值采集时间:" + collectTime + "\r\n"); sb.Append("\r\n\r\n\r\n alarm over ------------------------------------------------------------\r\n"); PublishStream(m_LogName, sb); } private static void PublishStream(string LogName, StringBuilder sb) { using (StreamWriter sw = new StreamWriter(LogName, true)) { sw.Write(sb); } using (StreamReader sr = new StreamReader(LogName)) { string strLog = sr.ReadToEnd(); if (strLog.Length > 1024 * 1024) { strLog = strLog.Substring(1024 * 512); } } } #endregion private void btn_page_first_Click(object sender, EventArgs e) { currentpage = 1; reloadDataGrid(currentpage); } private void btn_page_pre_Click(object sender, EventArgs e) { currentpage--; if (currentpage <= 0) { currentpage = 1; } reloadDataGrid(currentpage); } private void btn_page_next_Click(object sender, EventArgs e) { currentpage++; if (currentpage > lastpage) { currentpage = lastpage; } reloadDataGrid(currentpage); } private void btn_page_last_Click(object sender, EventArgs e) { currentpage = lastpage; reloadDataGrid(currentpage); } private void combo_page_num_SelectedIndexChanged(object sender, EventArgs e) { if (String.IsNullOrEmpty(combo_page_num.Text.Trim())) return; currentpage = int.Parse(combo_page_num.Text.Trim()); reloadDataGrid(currentpage); } private void btn_query_Click(object sender, EventArgs e) { currentpage = 1; reloadDataGrid(currentpage); } } }