using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using Infragistics.Win.UltraWinGrid; using System.IO; using System.Data.OleDb; //连接Access数据库 using ADOX; using System.Reflection; using System.Threading; using Infragistics.Win; namespace CreateAccess { public partial class frmMinWgtMeter : Form { ServiceReference1.WebServerClient webServer = new ServiceReference1.WebServerClient(); public frmMinWgtMeter() { InitializeComponent(); } private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { switch (e.Tool.Key) { case "btnQuery": { btnQuery(); break; } case "btnImpl": { openFileDialog1.Filter = "Access数据库文件(mdb)|*.mdb";//只允许mdb文件 openFileDialog1.Title = "选择要导入的Access数据文件"; //弹出框头部显示 openFileDialog1.AddExtension = true; //自动增加后缀 openFileDialog1.AutoUpgradeEnabled = true; //是否随系统自动升级弹出窗口样式 openFileDialog1.InitialDirectory = Application.StartupPath;//默认打开当前目录 if (openFileDialog1.ShowDialog() == DialogResult.OK) { btnImpl(openFileDialog1.FileName); }; break; } default: break; } } private void btnImpl(string fileName) { string strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Persist Security Info=False"; DataSet ds = new DataSet(); using (OleDbConnection conn = new OleDbConnection(strConnection)) { conn.Open(); string strSql = string.Format("select * from Data08_MCGS where MCGS_Time between #{0}# and #{1}#", dtStartTime.Value.ToString("yyyy-MM-dd HH:mm:ss"), dtEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss")); OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn); da.Fill(ds, "生产数据"); try { ServiceReference1.meterWorkStorageActual[] lm = new ServiceReference1.meterWorkStorageActual[ds.Tables[0].Rows.Count]; string preNo = DateTime.Now.ToString("yyyyMMddHHmmssfff"); int i = 0; foreach (DataRow dr in ds.Tables[0].Rows) { lm[i++] = new ServiceReference1.meterWorkStorageActual { predictionNo = preNo, batchNo = dr["Data47"].ToString().Trim(), //批号 valueFlag = dr["Data51"]?.ToString().Trim() == "有效" ? "1" : "0", checkFlag = "0", createManNo = dr["Data06"].ToString().Trim(), //计量员编号 createManName = dr["Data06"].ToString().Trim(), //计量员 createTime = DateTime.Now, createTimeSpecified = true, //productNo = "",s productName = "小块镍", //品名 //gradeNo = "", //gradeName = dr["牌号"].ToString().Trim(), //牌号 //standardNo = "", standardName = dr["Data09"].ToString().Trim(), //标准 规格 packageNo = dr["Data45"].ToString().Trim(), //包号、箱号 //blockNum = dr["片数"].ToString().Trim() == "" ? short.Parse("0") : short.Parse(dr["片数"].ToString().Trim()), //blockNumSpecified = true, productDate = Convert.ToDateTime(dr["MCGS_Time"].ToString().Trim()), //生产日期 productDateSpecified = true, grossWeight = Convert.ToDecimal(dr["Data35"].ToString().Trim()), //毛 grossWeightSpecified = true, tareWeight = Convert.ToDecimal(dr["Data00"].ToString().Trim()), //皮 tareWeightSpecified = true, netWeight = Convert.ToDecimal(dr["Data02"].ToString().Trim()), //净 netWeightSpecified = true, baseSpotNo = "001034003", baseSpotName = "小块镍包装线", }; } da.Dispose(); ServiceReference1.resTfulResult res = webServer.doAccessCuImpl(lm); if (res.succeed) { MessageBox.Show("导入完成"); btnQuery(); } else { MessageBox.Show("部分数据导入失败"); } } catch (Exception ex) { MessageBox.Show("导入失败:" + ex.Message); System.GC.Collect(); } } } private void btnQuery() { try { if (DateTime.Compare(dtStartTime.Value, dtEndTime.Value) > 0) { MessageBox.Show("开始时间不能大于结束时间"); return; } if ((dtEndTime.Value - dtStartTime.Value).Days > 7) { MessageBox.Show("时间跨度不能大于7天"); return; } ServiceReference1.commonPage cp = new ServiceReference1.commonPage(); cp.startTime = dtStartTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); cp.endTime = dtEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss"); cp.param = new ServiceReference1.meterWorkStorageActual { valueFlag = "1", baseSpotNo = "001034003" }; ServiceReference1.meterWorkStorageActual[] ls = webServer.doQueryTimeWf(cp); DataTable dt = this.dataTable1.Clone(); if (ls != null && ls.Length > 0) { dt = ListToDataTable(ls); } CopyDataToDatatable(ref dt, ref this.dataTable1, true); RefreshAndAutoSize(ultraGridSj); } catch (Exception ex) { MessageBox.Show("查询异常:" + ex.Message); } } private void frmMinWgtMeter_Load(object sender, EventArgs e) { dtStartTime.Value = Convert.ToDateTime((DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00")); dtEndTime.Value = Convert.ToDateTime((DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59")); SetUltraGridRowFilter(ref ultraGridSj, true); } #region 控件数据设置 public void RefreshAndAutoSize(UltraGrid ultraGrid) { try { ultraGrid.BeginUpdate(); foreach (UltraGridBand band in ultraGrid.DisplayLayout.Bands) { foreach (UltraGridColumn column in band.Columns) { column.PerformAutoResize(PerformAutoSizeType.AllRowsInBand, band.ColHeadersVisible ? true : false); } } } catch { } ultraGrid.EndUpdate(); } public void CopyDataToDatatable(ref DataTable src, ref DataTable dest, bool ClearExists) { if (src == null) { dest = null; return; } if (dest == null) { dest = new DataTable(); } if (ClearExists) { if (dest != null) dest.Rows.Clear(); } DataRow CurRow, NewRow; if (src.Rows.Count > 0) for (int i = 0; i < src.Rows.Count; i++) { CurRow = src.Rows[i]; NewRow = dest.NewRow(); for (int j = 0; j < src.Columns.Count; j++) { try { if (dest.Columns.Contains(src.Columns[j].ColumnName)) { NewRow[src.Columns[j].ColumnName] = CurRow[j]; } } catch { } } dest.Rows.Add(NewRow); } dest.AcceptChanges(); } public void SetUltraGridRowFilter(ref UltraGrid myGrid1, bool bAllowFilter) { try { if (bAllowFilter) { if (myGrid1.DisplayLayout.Override.FilterUIType != FilterUIType.FilterRow) myGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.FilterRow; for (int i = 0; i < myGrid1.DisplayLayout.Bands.Count; i++) { for (int j = 0; j < myGrid1.DisplayLayout.Bands[i].Columns.Count; j++) { try { if (!myGrid1.DisplayLayout.Bands[i].Columns[j].Hidden && myGrid1.DisplayLayout.Bands[i].Columns[j].RowLayoutColumnInfo.LabelPosition != LabelPosition.LabelOnly) { //string sKey = myGrid1.DisplayLayout.Bands[i].Columns[j].Key; //UNCK UNCH myGrid1.DisplayLayout.Bands[i].Columns[j].AllowRowFiltering = Infragistics.Win.DefaultableBoolean.True; } } catch { } } } } else { if (myGrid1.DisplayLayout.Override.FilterUIType != FilterUIType.HeaderIcons) myGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.HeaderIcons; for (int i = 0; i < myGrid1.DisplayLayout.Bands.Count; i++) { try { myGrid1.DisplayLayout.Bands[i].ColumnFilters.ClearAllFilters(); } catch { } for (int j = 0; j < myGrid1.DisplayLayout.Bands[i].Columns.Count; j++) { try { myGrid1.DisplayLayout.Bands[i].Columns[j].AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False; } catch { } } } } } catch { } } public DataTable ListToDataTable(T[] items) { DataTable dataTable = new DataTable(); PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo prop in Props) { dataTable.Columns.Add(prop.Name); } foreach (T obj in items) { var values = new object[Props.Length]; for (int i = 0; i < Props.Length; i++) { values[i] = Props[i].GetValue(obj, null); } dataTable.Rows.Add(values); } return dataTable; } #endregion } }