采集策略.cs 11 KB

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