public StartProgram(int[] t, StartPrg prgType, bool two) { InitializeComponent(); this.prgType = prgType; this.two = two; Owner = Win.mainWindow; this.t.AddRange(t); if (prgType == StartPrg.Calling) { for (int i = 0; i < t.Length; i++) { PanelX.Children.Add(new StartTaga(Win.program.listTables[t[i]].НомерЗаказа)); ((StartTaga)PanelX.Children[i]).MouseLeftButtonUp += new MouseButtonEventHandler(Ci); } } else { Lab.Content = "Вам следует удалить клиентов:"; Lab.ToolTip = "Что бы удалить клиента из списка нажмите на его ПКМ"; Ok.Click -= new RoutedEventHandler(Button_Click); Ok.Click += new RoutedEventHandler(Remove); Ok.Content = "Удалить всех"; for (int i = 0; i < t.Length; i++) { PanelX.Children.Add(new StartTaga(Win.program.listTables[t[i]].НомерЗаказа)); ((StartTaga)PanelX.Children[i]).MouseLeftButtonUp += new MouseButtonEventHandler(LKM); ((StartTaga)PanelX.Children[i]).MouseRightButtonUp += new MouseButtonEventHandler(PKM); } } }
public void getDateTable() { //初始化记录变量 string sdwEnrollNumber = ""; //考勤记录的用户ID int idwVerifyMode = 0; //验证方式,0代表密码,1代表指纹,2代表ID卡 int idwInOutMode = 0; //考勤状态,255代表无考勤状态 int idwYear = 0; //年 int idwMonth = 0; //月 int idwDay = 0; //日 int idwHour = 0; //时 int idwMinute = 0; //分 int idwSecond = 0; //秒 int idwWorkcode = 0; //记录的Workcode值 //实例化委托 objUpdataLbl = new UpdataLbl(LblState); objStartPrg = startPrg;//实例Prg委托 #region 创建DataTable表 //创建一个名为"AttLogTable"的DataTable表 DataTable AttLogTable = new DataTable(); //设定列数据 AttLogTable.Columns.Add("ClockId", typeof(int)); AttLogTable.Columns.Add("MachineId", typeof(int)); AttLogTable.Columns.Add("VerifyMode", typeof(int)); AttLogTable.Columns.Add("InOutMode", typeof(int)); AttLogTable.Columns.Add("ClockRecord", typeof(string)); //清空DataTable行数据 AttLogTable.Rows.Clear(); #endregion //异步修改lbl值 BeginInvoke(objUpdataLbl, "正在下载记录……"); while (axCZKEM1.SSR_GetGeneralLogData(iMachineNumber, out sdwEnrollNumber, out idwVerifyMode, out idwInOutMode, out idwYear, out idwMonth, out idwDay, out idwHour, out idwMinute, out idwSecond, ref idwWorkcode)) //从内存取得记录 { cNumber++; //循环记数,当前开写入的记录进度数 BeginInvoke(objStartPrg, cNumber); //异步执行,实现进度条更新进度 BeginInvoke(objUpdataLbl, cNumber + "/" + iValue); //异步修改lbl值 //把记录循环写入DataTable表 DataRow dr = AttLogTable.NewRow(); dr[0] = sdwEnrollNumber; dr[1] = iMachineNumber; dr[2] = idwVerifyMode; dr[3] = idwInOutMode; dr[4] = idwYear.ToString() + "-" + idwMonth.ToString() + "-" + idwDay.ToString() + " " + idwHour.ToString() + ":" + idwMinute.ToString() + ":" + idwSecond.ToString(); AttLogTable.Rows.Add(dr); } objSetDataSource = dgvDataSource; //实例委托 BeginInvoke(objSetDataSource, AttLogTable); //更新dgvAttLog //异步修改lbl值 BeginInvoke(objUpdataLbl, "下载完毕!正在筛选记录……"); #region 数据批量对比去重 //读取数据库已有数据 DataTable PastLogTable = objAttRecordService.GetAllOriginalLog().Tables[0]; //求差集结果, IEnumerable <DataRow> drResult = AttLogTable.AsEnumerable().Except(PastLogTable.AsEnumerable(), DataRowComparer.Default); //处理空结果的异常 if (drResult.Count() > 0)//如果序列元素的个数>0,则写入数据,否则跳过 { //接收不重复的数据 DataTable dtResult = drResult.CopyToDataTable(); //批量写入原始记录表 SQLHelper.UpdataByBulk(dtResult, "OriginalLog"); //批量写入记录备份表 SQLHelper.UpdataByBulk(dtResult, "OriginalLog_Bak"); //异步修改lbl值 BeginInvoke(objUpdataLbl, "数据保存成功!"); } #endregion //清空dt对象 AttLogTable = null; PastLogTable = null; //异步修改lbl值 BeginInvoke(objUpdataLbl, "数据保存成功!"); }