frmHisQuery.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using Infragistics.Win.UltraWinGrid;
  10. using System.IO;
  11. using System.Data.OleDb; //连接Access数据库
  12. using ADOX;
  13. using System.Reflection;
  14. using System.Threading;
  15. using Infragistics.Win;
  16. namespace CreateAccess
  17. {
  18. public partial class frmHisQuery : Form
  19. {
  20. ServiceReference1.WebServerClient webServer = new ServiceReference1.WebServerClient();
  21. public frmHisQuery()
  22. {
  23. InitializeComponent();
  24. }
  25. private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
  26. {
  27. switch (e.Tool.Key)
  28. {
  29. case "btnQuery":
  30. {
  31. btnQuery();
  32. break;
  33. }
  34. case "btnImpl":
  35. {
  36. openFileDialog1.Filter = "Access数据库文件(mdb)|*.mdb";//只允许mdb文件
  37. openFileDialog1.Title = "选择要导入的Access数据文件"; //弹出框头部显示
  38. openFileDialog1.AddExtension = true; //自动增加后缀
  39. openFileDialog1.AutoUpgradeEnabled = true; //是否随系统自动升级弹出窗口样式
  40. openFileDialog1.InitialDirectory = Application.StartupPath;//默认打开当前目录
  41. if (openFileDialog1.ShowDialog() == DialogResult.OK)
  42. {
  43. btnImpl(openFileDialog1.FileName);
  44. };
  45. break;
  46. }
  47. default: break;
  48. }
  49. }
  50. private void btnImpl(string fileName)
  51. {
  52. string strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Persist Security Info=False";
  53. DataSet ds = new DataSet();
  54. using (OleDbConnection conn = new OleDbConnection(strConnection))
  55. {
  56. conn.Open();
  57. string strSql = "select * from 生产数据";
  58. OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);
  59. da.Fill(ds, "生产数据");
  60. try
  61. {
  62. ServiceReference1.meterWorkStorageActual[] lm = new ServiceReference1.meterWorkStorageActual[ds.Tables[0].Rows.Count];
  63. string preNo = DateTime.Now.ToString("yyyyMMddHHmmssfff");
  64. string strBaseSpotNo = "", strBaseSpotName = "";
  65. int i = 0;
  66. foreach (DataRow dr in ds.Tables[0].Rows)
  67. {
  68. switch (dr["包装线代号"].ToString().Trim())
  69. {
  70. case "1":
  71. strBaseSpotNo = "001034001";
  72. strBaseSpotName = "铜1号线";
  73. break;
  74. case "2":
  75. strBaseSpotNo = "001034002";
  76. strBaseSpotName = "铜2号线";
  77. break;
  78. }
  79. lm[i++] = new ServiceReference1.meterWorkStorageActual
  80. {
  81. predictionNo = preNo,
  82. batchNo = dr["批号"].ToString().Trim(),
  83. valueFlag = "1",
  84. checkFlag = "0",
  85. createManNo = dr["计量员编号"].ToString().Trim(),
  86. createManName = dr["计量员"].ToString().Trim(),
  87. createTime = DateTime.Now,
  88. createTimeSpecified = true,
  89. //productNo = "",s
  90. productName = dr["品名"].ToString().Trim(),
  91. //gradeNo = "",
  92. gradeName = dr["牌号"].ToString().Trim(),
  93. //standardNo = "",
  94. standardName = dr["标准"].ToString().Trim(),
  95. packageNo = dr["包号"].ToString().Trim(),
  96. blockNum = dr["片数"].ToString().Trim(),
  97. productDate = Convert.ToDateTime(dr["生产日期"].ToString().Trim()),
  98. productDateSpecified = true,
  99. grossWeight = Convert.ToDecimal(dr["毛重"].ToString().Trim()),
  100. grossWeightSpecified = true,
  101. tareWeight = Convert.ToDecimal(dr["毛重"].ToString().Trim()) - Convert.ToDecimal(dr["主称净重"].ToString().Trim()),
  102. tareWeightSpecified = true,
  103. netWeight = Convert.ToDecimal(dr["主称净重"].ToString().Trim()),
  104. netWeightSpecified = true,
  105. baseSpotNo = strBaseSpotNo,
  106. baseSpotName = strBaseSpotName,
  107. actualWeight = Convert.ToDecimal(dr["主称净重"].ToString().Trim()),
  108. actualWeightSpecified = true,
  109. referWeight = Convert.ToDecimal(dr["副称净重"].ToString().Trim()),
  110. referWeightSpecified = true
  111. };
  112. }
  113. da.Dispose();
  114. ServiceReference1.resTfulResult res = webServer.doAccessCuImpl(lm);
  115. if (res.succeed)
  116. {
  117. MessageBox.Show("导入完成");
  118. btnQuery();
  119. }
  120. else
  121. {
  122. MessageBox.Show("部分数据导入失败");
  123. }
  124. }
  125. catch (Exception ex)
  126. {
  127. MessageBox.Show("导入失败:"+ex.Message);
  128. System.GC.Collect();
  129. }
  130. }
  131. }
  132. private void btnQuery()
  133. {
  134. try
  135. {
  136. if (DateTime.Compare(dtStartTime.Value, dtEndTime.Value) > 0)
  137. {
  138. MessageBox.Show("开始时间不能大于结束时间");
  139. return;
  140. }
  141. if ((dtEndTime.Value - dtStartTime.Value).Days > 7)
  142. {
  143. MessageBox.Show("时间跨度不能大于7天");
  144. return;
  145. }
  146. ServiceReference1.commonPage cp = new ServiceReference1.commonPage();
  147. cp.startTime = dtStartTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  148. cp.endTime = dtEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  149. cp.param = new ServiceReference1.meterWorkStorageActual { valueFlag = "1", baseSpotNo = cmbPoint.Value?.ToString(), productNo = cmbMatterNo.Text.Trim() };
  150. ServiceReference1.meterWorkStorageActual[] ls = webServer.doQueryTimeWf(cp);
  151. DataTable dt = this.dataTable1.Clone();
  152. if (ls != null && ls.Length > 0)
  153. {
  154. dt = ListToDataTable<ServiceReference1.meterWorkStorageActual>(ls);
  155. }
  156. CopyDataToDatatable(ref dt, ref this.dataTable1, true);
  157. RefreshAndAutoSize(ultraGridSj);
  158. }
  159. catch (Exception ex)
  160. {
  161. MessageBox.Show("查询异常:" + ex.Message);
  162. }
  163. }
  164. private void frmHisQuery_Load(object sender, EventArgs e)
  165. {
  166. dtStartTime.Value = Convert.ToDateTime((DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00"));
  167. dtEndTime.Value = Convert.ToDateTime((DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59"));
  168. SetUltraGridRowFilter(ref ultraGridSj, true);
  169. #region
  170. /*
  171. ServiceReference1.comBaseInfo cp = new ServiceReference1.comBaseInfo();
  172. cp.validFlag = "1";
  173. cp.pBaseCode = "001025";
  174. ServiceReference1.comBaseInfo[] ls = webServer.doQueryComBaseInfoWf(cp);
  175. if (ls != null && ls.Length > 0)
  176. {
  177. SetUltraComboDataSource(cmbMatterNo, ListToDataTable<ServiceReference1.comBaseInfo>(ls), "baseCode", "baseName");
  178. }
  179. else
  180. {
  181. MessageBox.Show("产品信息载入失败");
  182. return;
  183. }
  184. //*/
  185. ServiceReference1.comBaseInfo co = new ServiceReference1.comBaseInfo();
  186. co.validFlag = "1";
  187. co.pBaseCode = "001034";
  188. ServiceReference1.comBaseInfo[] lo = webServer.doQueryComBaseInfoWf(co);
  189. if (lo != null && lo.Length > 0)
  190. {
  191. SetUltraComboDataSource(cmbPoint, ListToDataTable<ServiceReference1.comBaseInfo>(lo), "baseCode", "baseName");
  192. }
  193. else
  194. {
  195. MessageBox.Show("计量点载入失败");
  196. return;
  197. }
  198. #endregion
  199. }
  200. #region 控件数据设置
  201. public void RefreshAndAutoSize(UltraGrid ultraGrid)
  202. {
  203. try
  204. {
  205. ultraGrid.BeginUpdate();
  206. foreach (UltraGridBand band in ultraGrid.DisplayLayout.Bands)
  207. {
  208. foreach (UltraGridColumn column in band.Columns)
  209. {
  210. column.PerformAutoResize(PerformAutoSizeType.AllRowsInBand, band.ColHeadersVisible ? true : false);
  211. }
  212. }
  213. }
  214. catch { }
  215. ultraGrid.EndUpdate();
  216. }
  217. public void CopyDataToDatatable(ref DataTable src, ref DataTable dest, bool ClearExists)
  218. {
  219. if (src == null)
  220. {
  221. dest = null;
  222. return;
  223. }
  224. if (dest == null)
  225. {
  226. dest = new DataTable();
  227. }
  228. if (ClearExists)
  229. {
  230. if (dest != null) dest.Rows.Clear();
  231. }
  232. DataRow CurRow, NewRow;
  233. if (src.Rows.Count > 0)
  234. for (int i = 0; i < src.Rows.Count; i++)
  235. {
  236. CurRow = src.Rows[i];
  237. NewRow = dest.NewRow();
  238. for (int j = 0; j < src.Columns.Count; j++)
  239. {
  240. try
  241. {
  242. if (dest.Columns.Contains(src.Columns[j].ColumnName))
  243. {
  244. NewRow[src.Columns[j].ColumnName] = CurRow[j];
  245. }
  246. }
  247. catch { }
  248. }
  249. dest.Rows.Add(NewRow);
  250. }
  251. dest.AcceptChanges();
  252. }
  253. public void SetUltraGridRowFilter(ref UltraGrid myGrid1, bool bAllowFilter)
  254. {
  255. try
  256. {
  257. if (bAllowFilter)
  258. {
  259. if (myGrid1.DisplayLayout.Override.FilterUIType != FilterUIType.FilterRow)
  260. myGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.FilterRow;
  261. for (int i = 0; i < myGrid1.DisplayLayout.Bands.Count; i++)
  262. {
  263. for (int j = 0; j < myGrid1.DisplayLayout.Bands[i].Columns.Count; j++)
  264. {
  265. try
  266. {
  267. if (!myGrid1.DisplayLayout.Bands[i].Columns[j].Hidden && myGrid1.DisplayLayout.Bands[i].Columns[j].RowLayoutColumnInfo.LabelPosition != LabelPosition.LabelOnly)
  268. {
  269. //string sKey = myGrid1.DisplayLayout.Bands[i].Columns[j].Key; //UNCK UNCH
  270. myGrid1.DisplayLayout.Bands[i].Columns[j].AllowRowFiltering = Infragistics.Win.DefaultableBoolean.True;
  271. }
  272. }
  273. catch { }
  274. }
  275. }
  276. }
  277. else
  278. {
  279. if (myGrid1.DisplayLayout.Override.FilterUIType != FilterUIType.HeaderIcons)
  280. myGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.HeaderIcons;
  281. for (int i = 0; i < myGrid1.DisplayLayout.Bands.Count; i++)
  282. {
  283. try
  284. {
  285. myGrid1.DisplayLayout.Bands[i].ColumnFilters.ClearAllFilters();
  286. }
  287. catch { }
  288. for (int j = 0; j < myGrid1.DisplayLayout.Bands[i].Columns.Count; j++)
  289. {
  290. try
  291. {
  292. myGrid1.DisplayLayout.Bands[i].Columns[j].AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;
  293. }
  294. catch { }
  295. }
  296. }
  297. }
  298. }
  299. catch { }
  300. }
  301. public void SetUltraComboDataSource(UltraCombo cmb, DataTable table, string ColumnValue, string ColumnDisplay)
  302. {
  303. if (table == null || !table.Columns.Contains(ColumnValue) || !table.Columns.Contains(ColumnDisplay)) return;
  304. try
  305. {
  306. if (cmb != null)
  307. {
  308. cmb.DataSource = table;
  309. cmb.DisplayLayout.Override.TipStyleScroll = TipStyle.Hide;
  310. cmb.DisplayLayout.Override.BorderStyleCell = UIElementBorderStyle.None;
  311. cmb.DisplayLayout.Override.BorderStyleRow = UIElementBorderStyle.None;
  312. cmb.DisplayLayout.Override.SelectTypeRow = SelectType.Single;
  313. cmb.DisplayLayout.Override.HeaderStyle = HeaderStyle.Standard;
  314. cmb.DisplayLayout.Override.HeaderAppearance.TextHAlign = HAlign.Center;
  315. cmb.DisplayLayout.Override.RowAppearance.TextVAlign = VAlign.Middle;
  316. cmb.DisplayLayout.Override.ActiveRowAppearance.BackColor = Color.FromArgb(51, 153, 255);
  317. cmb.DisplayLayout.Override.ActiveRowAppearance.ForeColor = Color.FromArgb(255, 255, 255);
  318. cmb.DisplayLayout.Override.SelectedRowAppearance.BackColor = Color.FromArgb(51, 153, 255);
  319. cmb.DisplayLayout.Override.SelectedRowAppearance.ForeColor = Color.FromArgb(255, 255, 255);
  320. //cmb.DisplayLayout.Override.ActiveRowAppearance.FontData.Bold = DefaultableBoolean.True;
  321. foreach (UltraGridBand band in cmb.DisplayLayout.Bands)
  322. {
  323. band.ColHeadersVisible = false;
  324. foreach (UltraGridColumn column in band.Columns)
  325. {
  326. if (!column.Key.Equals(ColumnDisplay)) column.Hidden = true;
  327. column.Width = cmb.Width;
  328. //column.PerformAutoResize(PerformAutoSizeType.AllRowsInBand);
  329. }
  330. }
  331. cmb.ValueMember = ColumnValue;
  332. cmb.DisplayMember = ColumnDisplay;
  333. cmb.DropDownWidth = -1;
  334. }
  335. }
  336. catch { }
  337. }
  338. public DataTable ListToDataTable<T>(T[] items)
  339. {
  340. DataTable dataTable = new DataTable();
  341. PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
  342. foreach (PropertyInfo prop in Props)
  343. {
  344. dataTable.Columns.Add(prop.Name);
  345. }
  346. foreach (T obj in items)
  347. {
  348. var values = new object[Props.Length];
  349. for (int i = 0; i < Props.Length; i++)
  350. {
  351. values[i] = Props[i].GetValue(obj, null);
  352. }
  353. dataTable.Rows.Add(values);
  354. }
  355. return dataTable;
  356. }
  357. #endregion
  358. }
  359. }