frmCreateAccess.cs 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482
  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. namespace CreateAccess
  16. {
  17. public partial class frmCreateAccess : Form
  18. {
  19. public frmCreateAccess()
  20. {
  21. InitializeComponent();
  22. }
  23. private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
  24. {
  25. switch (e.Tool.Key)
  26. {
  27. case "Query":
  28. {
  29. cbAll.Checked = false;
  30. Query();
  31. break;
  32. }
  33. case "Export":
  34. {
  35. Export();
  36. break;
  37. }
  38. default: break;
  39. }
  40. }
  41. ServiceReference1.WebServerClient webServer = new ServiceReference1.WebServerClient();
  42. public void Query()
  43. {
  44. DataSet ds = new DataSet();
  45. try
  46. {
  47. ServiceReference1.meterToLimsOld mto = new ServiceReference1.meterToLimsOld();
  48. mto.cpmc = txtCpmc.Text.Trim();
  49. mto.qx = txtQx.Text.Trim();
  50. mto.ly = txtLy.Text.Trim();
  51. ServiceReference1.commonPage cp = new ServiceReference1.commonPage();
  52. cp.startTime = dtStartTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  53. cp.endTime = dtEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  54. cp.param = mto;
  55. ServiceReference1.meterToLimsOld[] ls = webServer.ExportAccess(cp);
  56. DataTable dt = this.dt_meterToOld.Clone();
  57. if (ls != null && ls.Length > 0)
  58. {
  59. dt = ListToDataTable<ServiceReference1.meterToLimsOld>(ls);
  60. }
  61. CopyDataToDatatable(ref dt, ref this.dt_meterToOld, true);
  62. RefreshAndAutoSize(ultraGrid1);
  63. }
  64. catch (Exception ex)
  65. {
  66. MessageBox.Show("查询异常:"+ex.Message);
  67. }
  68. }
  69. public void Export()
  70. {
  71. string fileName = Path.Combine(Application.StartupPath, "db1.mdb");
  72. bool bflag = File.Exists(fileName);
  73. if (!bflag)
  74. {
  75. CreateData(fileName, "weighing");
  76. AddData(fileName, "weighing");
  77. }
  78. else
  79. {
  80. AddData(fileName, "weighing");
  81. }
  82. }
  83. #region 创建数据库并添加数据
  84. //创建数据库
  85. public void CreateData(string fileName, string Pwd)
  86. {
  87. if (File.Exists(fileName))
  88. {
  89. string delFile = fileName;
  90. File.Delete(delFile);
  91. }
  92. string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Jet OLEDB:Database Password=" + Pwd + ";Jet OLEDB:Engine Type=5";
  93. //创建数据库
  94. ADOX.Catalog catalog = new Catalog();
  95. try
  96. {
  97. catalog.Create(conn);
  98. }
  99. catch(Exception ex)
  100. {
  101. MessageBox.Show("access创建失败:"+ex.Message);
  102. return;
  103. }
  104. //连接数据库
  105. ADODB.Connection cn = new ADODB.Connection();
  106. cn.Open(conn, null, null, -1);
  107. catalog.ActiveConnection = cn;
  108. //新建表
  109. ADOX.Table table = new ADOX.Table();
  110. table.Name = "biaoqian";
  111. ADOX.Column column = new ADOX.Column();
  112. column.ParentCatalog = catalog;
  113. column.Type = ADOX.DataTypeEnum.adInteger; // 必须先设置字段类型
  114. column.Name = "id";
  115. column.DefinedSize = 9;
  116. column.Properties["AutoIncrement"].Value = true; //自增长
  117. table.Columns.Append(column, DataTypeEnum.adInteger, 0);
  118. //设置主键
  119. table.Keys.Append("PrimaryKey", ADOX.KeyTypeEnum.adKeyPrimary, "id", "", "");
  120. table.Columns.Append("xh", DataTypeEnum.adInteger, 9); //整型9位
  121. table.Columns.Append("cpfl", DataTypeEnum.adVarWChar, 100); //文本50位
  122. table.Columns.Append("cpmc", DataTypeEnum.adVarWChar, 100); //文本50位
  123. table.Columns.Append("ly", DataTypeEnum.adVarWChar, 100); //文本50位
  124. table.Columns.Append("qx", DataTypeEnum.adVarWChar, 100); //文本50位
  125. table.Columns.Append("chh", DataTypeEnum.adVarWChar, 100); //文本50位
  126. table.Columns.Append("rq", DataTypeEnum.adDate);
  127. table.Columns.Append("ph", DataTypeEnum.adVarWChar, 100);
  128. ADOX.Column mzc = new ADOX.Column();
  129. mzc.Type = ADOX.DataTypeEnum.adDouble; // 必须先设置字段类型
  130. mzc.Name = "mz";
  131. mzc.NumericScale = 2;
  132. mzc.Attributes = ColumnAttributesEnum.adColNullable;
  133. table.Columns.Append(mzc, DataTypeEnum.adDouble, 10);
  134. ADOX.Column pzc = new ADOX.Column();
  135. pzc.Type = ADOX.DataTypeEnum.adDouble; // 必须先设置字段类型
  136. pzc.Name = "pz";
  137. pzc.NumericScale = 2;
  138. pzc.Attributes = ColumnAttributesEnum.adColNullable;
  139. table.Columns.Append(pzc, DataTypeEnum.adDouble, 10);
  140. ADOX.Column jzc = new ADOX.Column();
  141. jzc.Type = ADOX.DataTypeEnum.adDouble; // 必须先设置字段类型
  142. jzc.Name = "jz";
  143. jzc.NumericScale = 2;
  144. jzc.Attributes = ColumnAttributesEnum.adColNullable;
  145. table.Columns.Append(jzc, DataTypeEnum.adDouble, 10);
  146. table.Columns.Append("jly", DataTypeEnum.adVarWChar, 100);
  147. table.Columns.Append("sj", DataTypeEnum.adVarWChar, 100);
  148. ADOX.Column column1 = new ADOX.Column();
  149. column1.Type = ADOX.DataTypeEnum.adDouble; // 必须先设置字段类型
  150. column1.Name = "fjpz";
  151. column1.NumericScale = 2;
  152. column1.Attributes = ColumnAttributesEnum.adColNullable;
  153. table.Columns.Append(column1, DataTypeEnum.adDouble, 10);
  154. table.Columns.Append("bzh", DataTypeEnum.adVarWChar, 100);
  155. table.Columns.Append("bz", DataTypeEnum.adVarWChar, 100);
  156. ADOX.Column column2 = new ADOX.Column();
  157. column2.Type = ADOX.DataTypeEnum.adDouble; // 必须先设置字段类型
  158. column2.Name = "cpz";
  159. column2.NumericScale = 2;
  160. column2.Attributes = ColumnAttributesEnum.adColNullable;
  161. table.Columns.Append(column2, DataTypeEnum.adDouble, 10);
  162. ADOX.Column column3 = new ADOX.Column();
  163. column3.Type = ADOX.DataTypeEnum.adDouble; // 必须先设置字段类型
  164. column3.Name = "shl";
  165. column3.NumericScale = 2;
  166. column3.Attributes = ColumnAttributesEnum.adColNullable;
  167. table.Columns.Append(column3, DataTypeEnum.adDouble, 10);
  168. /*
  169. ADOX.Column column4 = new ADOX.Column();
  170. column4.Type = DataTypeEnum.adBoolean;
  171. column4.Name = "cjbz";
  172. object obj = column4.Properties;//["Default"].Value = false;
  173. table.Columns.Append(column4, DataTypeEnum.adBoolean);
  174. //*/
  175. table.Columns.Append("cjbz", DataTypeEnum.adBoolean,1);
  176. //weighing
  177. ADOX.Column column5 = new ADOX.Column();
  178. column5.Type = ADOX.DataTypeEnum.adInteger; // 必须先设置字段类型
  179. column5.Name = "cpbz";
  180. column5.Attributes = ColumnAttributesEnum.adColNullable;
  181. table.Columns.Append(column5, DataTypeEnum.adInteger, 10);
  182. try
  183. {
  184. catalog.Tables.Append(table);
  185. }
  186. catch (Exception ex)
  187. {
  188. MessageBox.Show(ex.Message);
  189. }
  190. //此处一定要关闭连接,否则添加数据时候会出错
  191. table = null;
  192. //catalog = null;
  193. cn.Close();
  194. try
  195. {
  196. System.Runtime.InteropServices.Marshal.FinalReleaseComObject(catalog.ActiveConnection);
  197. System.Runtime.InteropServices.Marshal.FinalReleaseComObject(catalog);
  198. catalog = null;
  199. }
  200. catch
  201. {
  202. catalog = null;
  203. }
  204. System.GC.Collect();
  205. }
  206. private void AddData(string fileName, string pwd)
  207. {
  208. string strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Persist Security Info=False;Jet OLEDB:Database password=" + pwd;
  209. DataSet ds = new DataSet();
  210. using (OleDbConnection conn = new OleDbConnection(strConnection))
  211. {
  212. conn.Open();
  213. string strDel = "delete from biaoqian";
  214. OleDbCommand cmd = new OleDbCommand(strDel, conn);
  215. cmd.ExecuteNonQuery();
  216. string strSql = "select * from biaoqian";
  217. OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);
  218. da.Fill(ds, "biaoqian");
  219. try
  220. {
  221. foreach (UltraGridRow ugr in ultraGrid1.Rows)
  222. {
  223. if (ugr.Cells["UNCH"].Value.ToString().ToUpper() == "TRUE")
  224. {
  225. DataRow dr = ds.Tables["biaoqian"].NewRow();
  226. if (ugr.Cells["xh"].Text.Trim() != "")
  227. dr["xh"] = Convert.ToInt32(ugr.Cells["xh"].Text.Trim());
  228. dr["cpfl"] = ugr.Cells["cpfl"].Text.Trim();
  229. dr["cpmc"] = ugr.Cells["cpmc"].Text.Trim();
  230. dr["ly"] = ugr.Cells["ly"].Text.Trim();
  231. dr["qx"] = ugr.Cells["qx"].Text.Trim();
  232. dr["chh"] = ugr.Cells["chh"].Text.Trim();
  233. if (ugr.Cells["rq"].Text.Trim() != "")
  234. dr["rq"] = ugr.Cells["rq"].Text.Trim().Split(' ')[0];
  235. dr["ph"] = ugr.Cells["ph"].Text.Trim();
  236. if (ugr.Cells["mz"].Text.Trim() != "")
  237. dr["mz"] = Convert.ToDouble(ugr.Cells["mz"].Text.Trim());
  238. if (ugr.Cells["pz"].Text.Trim() != "")
  239. dr["pz"] = Convert.ToDouble(ugr.Cells["pz"].Text.Trim());
  240. if (ugr.Cells["jz"].Text.Trim() != "")
  241. dr["jz"] = Convert.ToDouble(ugr.Cells["jz"].Text.Trim());
  242. dr["jly"] = ugr.Cells["cpfl"].Text.Trim();
  243. if (ugr.Cells["sj"].Text.Trim() != "")
  244. dr["sj"] = ugr.Cells["sj"].Text.Trim().Split(' ')[1];
  245. if (ugr.Cells["fjpz"].Text.Trim() != "" && ugr.Cells["fjpz"].Text.Trim() != "0")
  246. dr["fjpz"] = Convert.ToDouble(ugr.Cells["fjpz"].Text.Trim());
  247. dr["bzh"] = ugr.Cells["cpfl"].Text.Trim();
  248. dr["bz"] = ugr.Cells["cpfl"].Text.Trim();
  249. if (ugr.Cells["cpz"].Text.Trim() != "")
  250. dr["cpz"] = Convert.ToDouble(ugr.Cells["cpz"].Text.Trim());
  251. //dr["shl"] = ugr.Cells["cpfl"].Text.Trim();
  252. //dr["cjbz"] = false;
  253. //dr["cpbz"] = ugr.Cells["cpfl"].Text.Trim();
  254. ds.Tables["biaoqian"].Rows.Add(dr);
  255. }
  256. }
  257. OleDbCommandBuilder cb = new OleDbCommandBuilder(da);
  258. da.Update(ds, "biaoqian");
  259. ds.AcceptChanges();
  260. da.Dispose();
  261. cb.Dispose();
  262. MessageBox.Show("导出完成");
  263. //System.Environment.Exit(0);
  264. }
  265. catch (Exception ex)
  266. {
  267. MessageBox.Show(ex.Message);
  268. System.GC.Collect();
  269. }
  270. }
  271. }
  272. #endregion
  273. #region 控件数据设置
  274. public void RefreshAndAutoSize(UltraGrid ultraGrid)
  275. {
  276. try
  277. {
  278. ultraGrid.BeginUpdate();
  279. foreach (UltraGridBand band in ultraGrid.DisplayLayout.Bands)
  280. {
  281. foreach (UltraGridColumn column in band.Columns)
  282. {
  283. column.PerformAutoResize(PerformAutoSizeType.AllRowsInBand, band.ColHeadersVisible ? true : false);
  284. }
  285. }
  286. }
  287. catch { }
  288. ultraGrid.EndUpdate();
  289. }
  290. public void CopyDataToDatatable(ref DataTable src, ref DataTable dest, bool ClearExists)
  291. {
  292. if (src == null)
  293. {
  294. dest = null;
  295. return;
  296. }
  297. if (dest == null)
  298. {
  299. dest = new DataTable();
  300. }
  301. if (ClearExists)
  302. {
  303. if (dest != null) dest.Rows.Clear();
  304. }
  305. DataRow CurRow, NewRow;
  306. if (src.Rows.Count > 0)
  307. for (int i = 0; i < src.Rows.Count; i++)
  308. {
  309. CurRow = src.Rows[i];
  310. NewRow = dest.NewRow();
  311. for (int j = 0; j < src.Columns.Count; j++)
  312. {
  313. try
  314. {
  315. if (dest.Columns.Contains(src.Columns[j].ColumnName))
  316. {
  317. NewRow[src.Columns[j].ColumnName] = CurRow[j];
  318. }
  319. }
  320. catch { }
  321. }
  322. dest.Rows.Add(NewRow);
  323. }
  324. dest.AcceptChanges();
  325. }
  326. public void SetUltraGridRowFilter(ref UltraGrid myGrid1, bool bAllowFilter)
  327. {
  328. try
  329. {
  330. if (bAllowFilter)
  331. {
  332. if (myGrid1.DisplayLayout.Override.FilterUIType != FilterUIType.FilterRow)
  333. myGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.FilterRow;
  334. for (int i = 0; i < myGrid1.DisplayLayout.Bands.Count; i++)
  335. {
  336. for (int j = 0; j < myGrid1.DisplayLayout.Bands[i].Columns.Count; j++)
  337. {
  338. try
  339. {
  340. if (!myGrid1.DisplayLayout.Bands[i].Columns[j].Hidden && myGrid1.DisplayLayout.Bands[i].Columns[j].RowLayoutColumnInfo.LabelPosition != LabelPosition.LabelOnly)
  341. {
  342. //string sKey = myGrid1.DisplayLayout.Bands[i].Columns[j].Key; //UNCK UNCH
  343. myGrid1.DisplayLayout.Bands[i].Columns[j].AllowRowFiltering = Infragistics.Win.DefaultableBoolean.True;
  344. }
  345. }
  346. catch { }
  347. }
  348. }
  349. }
  350. else
  351. {
  352. if (myGrid1.DisplayLayout.Override.FilterUIType != FilterUIType.HeaderIcons)
  353. myGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.HeaderIcons;
  354. for (int i = 0; i < myGrid1.DisplayLayout.Bands.Count; i++)
  355. {
  356. try
  357. {
  358. myGrid1.DisplayLayout.Bands[i].ColumnFilters.ClearAllFilters();
  359. }
  360. catch { }
  361. for (int j = 0; j < myGrid1.DisplayLayout.Bands[i].Columns.Count; j++)
  362. {
  363. try
  364. {
  365. myGrid1.DisplayLayout.Bands[i].Columns[j].AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;
  366. }
  367. catch { }
  368. }
  369. }
  370. }
  371. }
  372. catch { }
  373. }
  374. #endregion
  375. private void cbAll_CheckedChanged(object sender, EventArgs e)
  376. {
  377. foreach (UltraGridRow ugr in ultraGrid1.Rows)
  378. {
  379. ugr.Cells["UNCH"].Value = cbAll.Checked;
  380. }
  381. }
  382. public DataTable ListToDataTable<T>(T[] items)
  383. {
  384. DataTable dataTable = new DataTable();
  385. PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
  386. foreach (PropertyInfo prop in Props)
  387. {
  388. dataTable.Columns.Add(prop.Name);
  389. }
  390. foreach (T obj in items)
  391. {
  392. var values = new object[Props.Length];
  393. for (int i = 0; i < Props.Length; i++)
  394. {
  395. values[i] = Props[i].GetValue(obj, null);
  396. }
  397. dataTable.Rows.Add(values);
  398. }
  399. return dataTable;
  400. }
  401. private void frmCreateAccess_Load(object sender, EventArgs e)
  402. {
  403. SetUltraGridRowFilter(ref ultraGrid1, true);
  404. }
  405. }
  406. }