AddEquip.cpp
上传用户:latoyin
上传日期:2017-10-19
资源大小:2882k
文件大小:12k
源码类别:

数据库系统

开发平台:

Visual C++

  1. // AddEquip.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "Equipment.h"
  5. #include "AddEquip.h"
  6. #include "NumberEdit.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. extern CEquipmentApp theApp;
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CAddEquip dialog
  15. CAddEquip::CAddEquip(CWnd* pParent /*=NULL*/)
  16. : CDialog(CAddEquip::IDD, pParent)
  17. {
  18. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINTITLE);
  19. }
  20. void CAddEquip::DoDataExchange(CDataExchange* pDX)
  21. {
  22. CDialog::DoDataExchange(pDX);
  23. //{{AFX_DATA_MAP(CAddEquip)
  24. DDX_Control(pDX, IDC_PUREVALUE, purevalue);
  25. DDX_Control(pDX, IDC_PREPURSERATE, prepurerate);
  26. DDX_Control(pDX, IDC_PREPUREVALUE, prepurevalue);
  27. DDX_Control(pDX, IDC_MONTHDEPREVALUE, monthdeprevalue);
  28. DDX_Control(pDX, IDC_MONTHDEPRERATE, monthdeprerate);
  29. DDX_Control(pDX, IDC_ADDUPDEPRE, addupdepre);
  30. DDX_Control(pDX, IDC_SOURCEVALUE, sourcevalue);
  31. DDX_Control(pDX, IDC_USESTATE, usestate);
  32. DDX_Control(pDX, IDC_SPEC, spec);
  33. DDX_Control(pDX, IDC_REGDATE, regdate);
  34. DDX_Control(pDX, IDC_PREUSEMONTH, preusemonth);
  35. DDX_Control(pDX, IDC_EQUIPNAME, equipname);
  36. DDX_Control(pDX, IDC_EQUIPKINDS, equipkinds);
  37. DDX_Control(pDX, IDC_DEPREMONTH, depremonth);
  38. DDX_Control(pDX, IDC_DEPREMETHOD, depremethod);
  39. DDX_Control(pDX, IDC_ADDKINDS, addkinds);
  40. //}}AFX_DATA_MAP
  41. }
  42. BEGIN_MESSAGE_MAP(CAddEquip, CDialog)
  43. //{{AFX_MSG_MAP(CAddEquip)
  44. ON_COMMAND(ID_BUTTONCLOSE, OnButtonclose)
  45. ON_COMMAND(ID_BUTTONREFRESH, OnButtonrefresh)
  46. ON_EN_CHANGE(IDC_SOURCEVALUE, OnChangeSourcevalue)
  47. ON_EN_CHANGE(IDC_ADDUPDEPRE, OnChangeAddupdepre)
  48. ON_EN_CHANGE(IDC_PREPURSERATE, OnChangePrepurserate)
  49. ON_EN_CHANGE(IDC_PUREVALUE, OnChangePurevalue)
  50. ON_EN_CHANGE(IDC_PREUSEMONTH, OnChangePreusemonth)
  51. ON_CBN_SELCHANGE(IDC_DEPREMETHOD, OnSelchangeDepremethod)
  52. ON_EN_CHANGE(IDC_DEPREMONTH, OnChangeDepremonth)
  53. ON_EN_CHANGE(IDC_MONTHDEPRERATE, OnChangeMonthdeprerate)
  54. ON_COMMAND(ID_BUTTONADD, OnButtonadd)
  55. ON_EN_CHANGE(IDC_PREPUREVALUE, OnChangePrepurevalue)
  56. //}}AFX_MSG_MAP
  57. END_MESSAGE_MAP()
  58. /////////////////////////////////////////////////////////////////////////////
  59. // CAddEquip message handlers
  60. void CAddEquip::OnOK() 
  61. {
  62. // TODO: Add extra validation here
  63. }
  64. BOOL CAddEquip::OnInitDialog() 
  65. {
  66. CDialog::OnInitDialog();
  67. SetIcon(m_hIcon,true);
  68. toolbar.Create(TBSTYLE_FLAT|CCS_TOP|WS_CHILD|WS_VISIBLE|WS_BORDER|CCS_ADJUSTABLE|TBSTYLE_WRAPABLE,CRect(0,0,0,0),this,IDR_TOOLBAR2);
  69. toolbar.SetBitmapSize(CSize(32,32));
  70. imagelist.Create(32,32,ILC_COLOR32|ILC_MASK,0,0);
  71. for (int n =0;n<5;n++)
  72. {
  73. imagelist.Add(theApp.LoadIcon(n+IDI_ICON1));
  74. }
  75. toolbar.SetImageList(&imagelist);
  76. TBBUTTON  buttons[4];
  77. for (int i =0; i<4;i++)
  78. {
  79. CString str;
  80. int strlength;
  81. CCHAR *temp;
  82. if (i<1)
  83. buttons[i].fsStyle =TBSTYLE_SEP;
  84. else
  85. {
  86. buttons[i].fsStyle =TBSTYLE_BUTTON;
  87. }
  88. buttons[i].fsState =TBSTATE_ENABLED;
  89. buttons[i].dwData =0;
  90. if ((i ==2)|(i==3))
  91. {
  92. buttons[i].idCommand = ID_BUTTONADD+i+1;
  93. buttons[i].iBitmap = i+1;
  94. str.LoadString(ID_BUTTONADD+i+1);
  95. }
  96. else
  97. {
  98. buttons[i].idCommand = ID_BUTTONADD+i-1;
  99. buttons[i].iBitmap = i-1;
  100. str.LoadString(ID_BUTTONADD+i-1);//第一个按钮为分隔条
  101. }
  102. strlength = str.GetLength()+1;
  103. temp = str.GetBufferSetLength(strlength);
  104. temp[strlength]= '';
  105. temp[strlength-1]= '';
  106. buttons[i].iString = toolbar.AddStrings(temp);
  107. str.ReleaseBuffer();
  108. }
  109. toolbar.AutoSize();
  110. toolbar.AddButtons(4,buttons);
  111. toolbar.ShowWindow(SW_SHOW);
  112. OnButtonrefresh();
  113. return TRUE;  
  114. }
  115. BOOL CAddEquip::PreTranslateMessage(MSG* pMsg) 
  116. {
  117. if (pMsg->message ==WM_KEYDOWN)
  118. if (pMsg->wParam ==13)
  119. pMsg->wParam = 9;
  120. return CDialog::PreTranslateMessage(pMsg);
  121. }
  122. void CAddEquip::OnButtonclose() 
  123. {
  124. EndDialog(0);
  125. }
  126. void CAddEquip::OnButtonrefresh() 
  127. {
  128. AddEquipKinds();
  129. AddEquipMode();
  130. AddUseState();
  131. ClearText();
  132. }
  133. void CAddEquip::AddEquipKinds()
  134. {
  135. _RecordsetPtr temp;
  136. temp =theApp.datamanage->Record1; 
  137. temp->raw_Close();
  138. temp->Open("select kinds from tb_kinds",theApp.datamanage->GetConn().GetInterfacePtr(),adOpenKeyset,adLockPessimistic,adCmdText);
  139. if (temp->RecordCount>0) //如果有数据,利用循环向组合框中添加数据
  140. {
  141. equipkinds.ResetContent();
  142. while (!temp->ADOEOF)
  143. {
  144. CString str;
  145. str = temp->GetFields()->GetItem("kinds")->Value.bstrVal;
  146. equipkinds.AddString(str);
  147. temp->MoveNext();
  148. }
  149. }
  150. }
  151. void CAddEquip::AddEquipMode()
  152. {
  153. _RecordsetPtr temp;
  154. temp =theApp.datamanage->Record1; 
  155. temp->raw_Close();
  156. temp->Open("select addkinds from tb_addkinds",theApp.datamanage->GetConn().GetInterfacePtr(),adOpenKeyset,adLockPessimistic,adCmdText);
  157. if (temp->RecordCount>0) //如果有数据,利用循环向组合框中添加数据
  158. {
  159. addkinds.ResetContent();
  160. while (!temp->ADOEOF)
  161. {
  162. CString str;
  163. str = temp->GetFields()->GetItem("addkinds")->Value.bstrVal;
  164. addkinds.AddString(str);
  165. temp->MoveNext();
  166. }
  167. }
  168. }
  169. void CAddEquip::ClearText()
  170. {
  171. CWnd * temp;
  172. temp = this;
  173. for (int i= 0;i<16;i++)
  174. {
  175. temp = this->GetNextDlgTabItem(temp);
  176. temp->SetWindowText("");
  177. }
  178. //设置日期
  179. CTime t=CTime::GetCurrentTime();
  180. regdate.SetTime(&t);
  181. }
  182. //入账原值改变时的事件
  183. void CAddEquip::OnChangeSourcevalue() 
  184. {
  185. CString temp1,temp2;
  186. sourcevalue.GetWindowText(temp1);
  187. addupdepre.GetWindowText(temp2);
  188. if ((temp1.IsEmpty())|(temp2.IsEmpty())) //如果入账原值或累计折旧为空,净值为空
  189. {
  190. purevalue.SetWindowText("");
  191. }
  192. else
  193. {
  194. float source,add,netvalue;
  195. source = atof(temp1);
  196. add = atof(temp2);
  197. netvalue = source-add;
  198. CString temp3;
  199. temp3.Format("%f",netvalue);
  200. purevalue.SetWindowText(temp3);
  201. }
  202. OnChangePrepurserate();//计算预计净残值
  203. }
  204. //累计折旧改变时的事件
  205. void CAddEquip::OnChangeAddupdepre() 
  206. {
  207. OnChangeSourcevalue();  //调用入账原值改变时的事件
  208. }
  209. //处理预计净残值率改变时的事件,用于计算预计净残值,月折旧率
  210. void CAddEquip::OnChangePrepurserate() 
  211. {
  212. CString temp1,temp2;
  213. prepurerate.GetWindowText(temp1); //获得净残值率
  214. sourcevalue.GetWindowText(temp2);//获入账原值
  215. if ((temp1.IsEmpty())|(temp2.IsEmpty())) //如果净值或净残值率为空,清空净残值
  216. {
  217. prepurevalue.SetWindowText("");
  218. }
  219. else
  220. {
  221. float netrate,value,netvalue;
  222. netrate = atof(temp1);
  223. value = atof(temp2);
  224. //净残值 = 入账原值 * 净残值率
  225. netvalue = value * netrate;
  226. CString temp3;
  227. temp3.Format("%f",netvalue);
  228. prepurevalue.SetWindowText(temp3);
  229. }
  230. OnChangePreusemonth();//计算月折旧率
  231. }
  232. //处理净值改变时的事件
  233. void CAddEquip::OnChangePurevalue() 
  234. {
  235. //月折旧额 =( 入账原值-累计折旧-预计净残值)/(预计使用月份-已计提月份)
  236. CString c_temp1,c_temp2,c_temp3,c_temp4,c_temp5;
  237. sourcevalue.GetWindowText(c_temp1);
  238. addupdepre.GetWindowText(c_temp2);
  239. prepurevalue.GetWindowText(c_temp3);
  240. preusemonth.GetWindowText(c_temp4);
  241. depremonth.GetWindowText(c_temp5);
  242. if (c_temp1.IsEmpty()|c_temp2.IsEmpty()|c_temp3.IsEmpty()|c_temp4.IsEmpty()|c_temp5.IsEmpty())
  243. {
  244. monthdeprevalue.SetWindowText("");
  245. }
  246. else
  247. {
  248. float f_value1,f_value2,f_value3,f_value4,f_value5,f_value;
  249. f_value1 = atof(c_temp1);
  250. f_value2 = atof(c_temp2);
  251. f_value3 = atof(c_temp3);
  252. f_value4 = atof(c_temp4);
  253. f_value5 = atof(c_temp5);
  254. f_value = (f_value1-f_value2-f_value3)/(f_value4-f_value5);
  255. CString temp;
  256. temp.Format("%f",f_value);
  257. monthdeprevalue.SetWindowText(temp);
  258. }
  259. }
  260. //处理预计使用月份的OnChange事件,计算月折旧率
  261. void CAddEquip::OnChangePreusemonth() 
  262. {
  263. CString temp1,temp2;
  264. preusemonth.GetWindowText(temp1); //获得预计使用月份
  265. prepurerate.GetWindowText(temp2);//获得净残值率
  266. if ((temp1.IsEmpty())|(temp2.IsEmpty())) //如果预计使用月份或净残值率为空,清空月折旧率
  267. {
  268. monthdeprerate.SetWindowText("");
  269. }
  270. else
  271. {
  272. float monthrate,value,monthvalue;
  273. monthvalue = atof(temp1);
  274. value = atof(temp2);
  275. //月折旧率 = (1 - 净残值率)/预计使用月份
  276. monthrate = (1- value)/(monthvalue);
  277. CString temp3;
  278. temp3.Format("%f",monthrate);
  279. monthdeprerate.SetWindowText(temp3);
  280. }
  281. }
  282. //处理折旧方法改变时的事件,计算月折旧额
  283. void CAddEquip::OnSelchangeDepremethod() 
  284. {
  285. if (depremethod.GetCurSel()==-1)
  286. monthdeprevalue.SetWindowText("");
  287. else if (depremethod.GetCurSel()==0) //平均年限法1
  288. {
  289. CString value1,value2;
  290. sourcevalue.GetWindowText(value1);//获取入账原值
  291. monthdeprerate.GetWindowText(value2);
  292. if ((value1.IsEmpty())|(value2.IsEmpty())) //如果入账原值或月折旧率为空,月折旧额为空
  293. monthdeprevalue.SetWindowText("");
  294. else //计算月折旧额
  295. {
  296. //月折旧额 = 入账原值*月折旧率
  297. float m_value,m_rate,s_value;
  298. m_rate = atof(value2);
  299. s_value = atof(value1);
  300. m_value = s_value * m_rate;
  301. CString c_value;
  302. c_value.Format("%f",m_value);
  303. monthdeprevalue.SetWindowText(c_value);
  304. }
  305. }
  306. else //平均年限法2
  307. {
  308. OnChangePurevalue(); //调用预计净残值改变时的事件
  309. }
  310. }
  311. void CAddEquip::OnChangeDepremonth() 
  312. {
  313. if (depremethod.GetCurSel()==1)//平均年限法2
  314. OnChangePurevalue();
  315. }
  316. void CAddEquip::OnChangeMonthdeprerate() 
  317. {
  318. OnSelchangeDepremethod() ;
  319. }
  320. void CAddEquip::AddUseState()
  321. {
  322. _RecordsetPtr temp;
  323. temp =theApp.datamanage->Record1; 
  324. temp->raw_Close();
  325. temp->Open("select usestate from tb_usestate",theApp.datamanage->GetConn().GetInterfacePtr(),adOpenKeyset,adLockPessimistic,adCmdText);
  326. if (temp->RecordCount>0) //如果有数据,利用循环向组合框中添加数据
  327. {
  328. usestate.ResetContent();
  329. while (!temp->ADOEOF)
  330. {
  331. CString str;
  332. str = temp->GetFields()->GetItem("usestate")->Value.bstrVal;
  333. usestate.AddString(str);
  334. temp->MoveNext();
  335. }
  336. }
  337. }
  338. bool CAddEquip::InfoIsNull()
  339. {
  340. CWnd * temp;
  341. temp = this;
  342. for (int i= 0;i<16;i++)
  343. {
  344. temp = this->GetNextDlgTabItem(temp);
  345. CString str;
  346. temp->GetWindowText(str);
  347. if (str.IsEmpty())
  348. {
  349. return true;
  350. }
  351. }
  352. return false;
  353. }
  354. bool CAddEquip::IsNegative()
  355. {
  356. CString c_value1,c_value2,c_value3,c_value4,c_value5,c_value6,c_value7,c_value8;
  357. float f_value1,f_value2,f_value3,f_value4,f_value5,f_value6,f_value7,f_value8;
  358. sourcevalue.GetWindowText(c_value1);//入账原值
  359. addupdepre.GetWindowText(c_value2);//累计折旧
  360. purevalue.GetWindowText(c_value3);//净值
  361. prepurevalue.GetWindowText(c_value4);//净残值率
  362. preusemonth.GetWindowText(c_value5);//预计使用月份
  363. depremonth.GetWindowText(c_value6);//已计提月份
  364. monthdeprerate.GetWindowText(c_value7);//月折旧率
  365. monthdeprevalue.GetWindowText(c_value8); //月折旧额
  366. f_value1 = atof(c_value1);
  367. f_value2 = atof(c_value2);
  368. f_value3 = atof(c_value3);
  369. f_value4 = atof(c_value4);
  370. f_value5 = atof(c_value5);
  371. f_value6 = atof(c_value6);
  372. f_value7 = atof(c_value7);
  373. f_value8 = atof(c_value8);
  374. if ((f_value1 <0)|(f_value2<0)|(f_value3<0)|(f_value4 <0)|(f_value5 <0)|(f_value6 <0)|(f_value7 <0))
  375. return true;
  376. else
  377. return false;
  378. }
  379. void CAddEquip::OnButtonadd() 
  380. {
  381. if (!InfoIsNull())
  382. if (!IsNegative())
  383. {
  384. float f_sourcevalue,f_addupdepre,f_netvalue,f_prenetrate,f_prenetvalue,f_premonth,f_month,f_deprevalue,f_deprerate;
  385. CTime t;
  386. regdate.GetTime(t);
  387. CString arrays[16];
  388. CWnd * temp;
  389. temp = this;
  390. for (int i= 0;i<16;i++)
  391. {
  392. temp = this->GetNextDlgTabItem(temp);
  393. temp->GetWindowText(arrays[i]);
  394. }
  395. f_sourcevalue = atof(arrays[3]);
  396. f_addupdepre = atof(arrays[4]);
  397. f_netvalue = atof(arrays[5]);
  398. f_prenetrate = atof(arrays[8]);
  399. f_prenetvalue = atof(arrays[9]);
  400. f_premonth = atoi(arrays[11]);
  401. f_month = atoi(arrays[12]);
  402. f_deprerate = atof(arrays[14]);
  403. f_deprevalue = atof(arrays[15]);
  404. try
  405. { //执行存储过程保存数据
  406. CString sql;
  407. CString str;
  408. str = "temp";
  409. sql.Format(" Add_Equipmentinfo '%s','%s','%s',%f,%f,%f,'%s','%s',%f,%f,'%s',%f,%f,'%s',%f,%f ,'%s'",arrays[0],arrays[1],arrays[2],f_sourcevalue,f_addupdepre,f_netvalue,arrays[6],arrays[7],f_prenetrate,f_prenetvalue,arrays[10],f_premonth,f_month,arrays[13],f_deprerate,f_deprevalue,str);
  410. theApp.datamanage->ExecSQL(sql);
  411. MessageBox("操作成功.","提示",64);
  412. }
  413. catch(...)
  414. {
  415. MessageBox("操作失败.","提示",64);
  416. }
  417. OnButtonrefresh();
  418. }
  419. else
  420. {
  421. MessageBox("基础信息不能出现负数.","提示",64);
  422. }
  423. else
  424. this->MessageBox("基础信息不能为空.","提示",64);
  425. }
  426. void CAddEquip::OnChangePrepurevalue() 
  427. {
  428. // TODO: If this is a RICHEDIT control, the control will not
  429. // send this notification unless you override the CDialog::OnInitDialog()
  430. // function and call CRichEditCtrl().SetEventMask()
  431. // with the ENM_CHANGE flag ORed into the mask.
  432. // TODO: Add your control notification handler code here
  433. }