采集策略.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. using System;
  2. using System.Data;
  3. using System.Text;
  4. using System.Windows.Forms;
  5. using UAS_LabelMachine.PublicMethod;
  6. namespace UAS_LabelMachine
  7. {
  8. public partial class 采集策略 : Form
  9. {
  10. AutoSizeFormClass asc = new AutoSizeFormClass();
  11. DataHelper dh;
  12. StringBuilder sql = new StringBuilder();
  13. DataTable dt;
  14. public 采集策略()
  15. {
  16. InitializeComponent();
  17. si_type1.CheckedChanged += CheckChanged;
  18. si_type3.CheckedChanged += CheckChanged;
  19. si_type4.CheckedChanged += CheckChanged;
  20. si_type2.CheckedChanged += CheckChanged;
  21. si_type5.CheckedChanged += CheckChanged;
  22. }
  23. public 采集策略(string SG_CODE)
  24. {
  25. InitializeComponent();
  26. sg_code.Text = SG_CODE;
  27. si_type1.CheckedChanged += CheckChanged;
  28. si_type3.CheckedChanged += CheckChanged;
  29. si_type4.CheckedChanged += CheckChanged;
  30. si_type2.CheckedChanged += CheckChanged;
  31. si_type5.CheckedChanged += CheckChanged;
  32. }
  33. private void 采集策略_Load(object sender, EventArgs e)
  34. {
  35. asc.controllInitializeSize(this);
  36. dh = new DataHelper();
  37. pb_name.FormName = Name;
  38. pb_name.SetValueField = new string[] { "pb_name" };
  39. pb_name.TableName = "productbrand";
  40. pb_name.SelectField = "pb_name # 品牌名称,pb_remark # 备注";
  41. si_kind1.Text = "全部";
  42. si_kind2.Text = "全部";
  43. si_kind3.Text = "全部";
  44. si_kind4.Text = "全部";
  45. si_kind5.Text = "全部";
  46. if (sg_code.Text != "")
  47. {
  48. KeyEventArgs e2 = new KeyEventArgs(Keys.Enter);
  49. sg_code_KeyDown(sender, e2);
  50. }
  51. Width = Width + 1;
  52. }
  53. private void 采集策略_SizeChanged(object sender, EventArgs e)
  54. {
  55. asc.controlAutoSize(this);
  56. }
  57. private void Save_Click(object sender, EventArgs e)
  58. {
  59. if (sg_code.Text == "")
  60. {
  61. BaseUtil.ShowError("策略编号不能为空");
  62. }
  63. //如果是Enter获取的数据之后则这个隐藏字段的值不为空
  64. if (sg_id.Text != "")
  65. {
  66. sql.Clear();
  67. sql.Append("update scangroup set sg_name='" + sg_name.Text + "',sg_code='" + sg_code.Text + "',sg_brand='" + pb_name.Text + "',");
  68. sql.Append("sg_separator=:sg_separator where sg_id=" + sg_id.Text);
  69. dh.ExecuteSql(sql.ToString(), "update", new string[] { sg_separator.Text });
  70. for (int i = 1; i < 6; i++)
  71. {
  72. //如果从表的ID不为空则表示此条记录已存在需要更新
  73. if (Controls["si_id" + i].Text != "")
  74. {
  75. int Enable = 0;
  76. if ((Controls["si_type" + i] as CheckBox).Checked)
  77. {
  78. Enable = 1;
  79. }
  80. sql.Clear();
  81. sql.Append("update scanitem set si_item='" + Controls["si_item" + i].Text + "',si_detno='" + Controls["si_detno" + i].Text + "',");
  82. sql.Append("si_index='" + Controls["si_index" + i].Text + "',si_indexstring='" + Controls["si_indexstring" + i].Text + "',");
  83. sql.Append("si_kind='" + Controls["si_kind" + i].Text + "', si_length='" + Controls["si_length" + i].Text + "',si_expressionitem='" + Controls["si_expressionitem" + i].Text + "',");
  84. sql.Append("si_expression=:si_expression,si_enable=" + Enable + " where si_id=" + Controls["si_id" + i].Text);
  85. dh.ExecuteSql(sql.ToString(), "update", new string[] { Controls["si_expression" + i].Text });
  86. }
  87. }
  88. MessageBox.Show("保存成功");
  89. }
  90. else
  91. {
  92. //判断策略编号是否存在
  93. if (!dh.CheckExist("scangroup", "sg_code='" + sg_code.Text + "'"))
  94. {
  95. //如果是新增的从序列获取主键的ID
  96. string sg_id1 = dh.GetSEQ("scangroup_seq");
  97. sql.Clear();
  98. sql.Append("insert into scangroup (sg_id,sg_code,sg_name,sg_brand,sg_separator) values(" + sg_id1 + ",'" + sg_code.Text + "','" + sg_name.Text + "',");
  99. sql.Append("'" + pb_name.Text + "',:sg_separator)");
  100. dh.ExecuteSql(sql.ToString(), "insert", new string[] { sg_separator.Text });
  101. //遍历需要采集的字段
  102. for (int i = 1; i < 6; i++)
  103. {
  104. //保存四条记录,通过si_enable字段来判断是否启用
  105. int Enable = 0;
  106. if ((Controls["si_type" + i] as CheckBox).Checked)
  107. {
  108. Enable = 1;
  109. }
  110. string si_id = dh.GetSEQ("scanitem_seq");
  111. sql.Clear();
  112. sql.Append("insert into scanitem(si_id,si_sgid,si_detno,si_item,si_kind,si_indexstring,si_index,si_expressionitem,si_expression,si_enable) values(" + si_id + "," + sg_id1);
  113. sql.Append(",'" + Controls["si_detno" + i].Text + "','" + Controls["si_item" + i].Text + "','" + Controls["si_kind" + i].Text + "',");
  114. sql.Append("'" + Controls["si_indexstring" + i].Text + "','" + Controls["si_index" + i].Text + "','" + Controls["si_expressionitem" + i].Text + "',:si_expression," + Enable + ")");
  115. dh.ExecuteSql(sql.ToString(), "insert", new string[] { Controls["si_expression" + i].Text });
  116. Controls["si_id" + i].Text = si_id;
  117. }
  118. MessageBox.Show("保存成功");
  119. //保存成功后将值更新回界面,再次点击保存就是更新操作
  120. sg_id.Text = sg_id1;
  121. }
  122. else
  123. {
  124. MessageBox.Show("策略编号" + sg_code.Text + "已存在!");
  125. }
  126. }
  127. }
  128. private void Delete_Click(object sender, EventArgs e)
  129. {
  130. if (sg_id.Text != "")
  131. {
  132. string close = MessageBox.Show(this.ParentForm, "是否删除此策略", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question).ToString();
  133. if (close.ToString() == "Yes")
  134. {
  135. dh.ExecuteSql("delete from scangroup where sg_id=" + sg_id.Text, "delete");
  136. dh.ExecuteSql("delete from scanitem where si_sgid=" + sg_id.Text, "delete");
  137. MessageBox.Show("删除成功");
  138. BaseUtil.CleanForm(this);
  139. }
  140. }
  141. }
  142. private void CheckChanged(object sender, EventArgs e)
  143. {
  144. CheckBox cb = sender as CheckBox;
  145. //用来表示当前的勾选框的所属的TextBox
  146. int i = 0;
  147. switch (cb.Text)
  148. {
  149. case "DateCode":
  150. i = 1;
  151. break;
  152. case "LotNo":
  153. i = 2;
  154. break;
  155. case "QTY":
  156. i = 3;
  157. break;
  158. case "MPN":
  159. i = 4;
  160. break;
  161. case "品牌":
  162. i = 5;
  163. break;
  164. default:
  165. break;
  166. }
  167. //通过勾选状态来控制TextBox是否启用
  168. if (cb.Checked)
  169. {
  170. Controls["si_detno" + i].Enabled = true;
  171. Controls["si_item" + i].Text = cb.Text;
  172. Controls["si_kind" + i].Enabled = true;
  173. Controls["si_expression" + i].Enabled = true;
  174. Controls["si_expressionitem" + i].Enabled = true;
  175. Controls["si_index" + i].Enabled = true;
  176. Controls["si_indexstring" + i].Enabled = true;
  177. Controls["si_length" + i].Enabled = true;
  178. }
  179. else
  180. {
  181. Controls["si_detno" + i].Enabled = false;
  182. Controls["si_item" + i].Enabled = false;
  183. Controls["si_kind" + i].Enabled = false;
  184. Controls["si_expression" + i].Enabled = false;
  185. Controls["si_expressionitem" + i].Enabled = false;
  186. Controls["si_index" + i].Enabled = false;
  187. Controls["si_indexstring" + i].Enabled = false;
  188. Controls["si_length" + i].Enabled = false;
  189. }
  190. }
  191. private void sg_code_KeyDown(object sender, KeyEventArgs e)
  192. {
  193. if (e.KeyCode == Keys.Enter)
  194. {
  195. dt = (DataTable)dh.ExecuteSql("select sg_id,sg_code,sg_name,sg_brand as pb_name,sg_separator from scangroup where sg_code='" + sg_code.Text + "'", "select");
  196. if (dt.Rows.Count > 0)
  197. {
  198. BaseUtil.SetFormValue(this.Controls, dt);
  199. dt = (DataTable)dh.ExecuteSql("select * from scanitem where si_sgid=" + sg_id.Text, "select");
  200. //通过匹配采集的字段名称给界面赋值
  201. for (int i = 0; i < dt.Rows.Count; i++)
  202. {
  203. for (int j = 1; j < 6; j++)
  204. {
  205. //如果Item和CheckBox的文字相等
  206. if (dt.Rows[i]["si_item"].ToString() == Controls["si_type" + j].Text)
  207. {
  208. //如果状态不为0则表示启用
  209. if (dt.Rows[i]["si_enable"].ToString() != "0")
  210. (Controls["si_type" + j] as CheckBox).CheckState = CheckState.Checked;
  211. else
  212. (Controls["si_type" + j] as CheckBox).CheckState = CheckState.Unchecked;
  213. Controls["si_id" + j].Text = dt.Rows[i]["si_id"].ToString();
  214. Controls["si_detno" + j].Text = dt.Rows[i]["si_detno"].ToString();
  215. Controls["si_kind" + j].Text = dt.Rows[i]["si_kind"].ToString();
  216. Controls["si_indexstring" + j].Text = dt.Rows[i]["si_indexstring"].ToString();
  217. Controls["si_index" + j].Text = dt.Rows[i]["si_index"].ToString();
  218. Controls["si_item" + j].Text = dt.Rows[i]["si_item"].ToString();
  219. Controls["si_kind" + j].Text = dt.Rows[i]["si_kind"].ToString();
  220. Controls["si_length" + j].Text = dt.Rows[i]["si_length"].ToString();
  221. Controls["si_expression" + j].Text = dt.Rows[i]["si_expression"].ToString();
  222. Controls["si_expressionitem" + j].Text = dt.Rows[i]["si_expressionitem"].ToString();
  223. }
  224. }
  225. }
  226. }
  227. else
  228. MessageBox.Show("不存在编号为" + sg_code.Text + "的采集策略");
  229. }
  230. }
  231. /// <summary>
  232. /// 清除界面的信息
  233. /// </summary>
  234. /// <param name="sender"></param>
  235. /// <param name="e"></param>
  236. private void Add_Click(object sender, EventArgs e)
  237. {
  238. BaseUtil.CleanForm(this);
  239. for (int i = 1; i < 6; i++)
  240. (Controls["si_type" + i] as CheckBox).Checked = false;
  241. }
  242. }
  243. }