MoneyViewDlg.cpp
上传用户:shcaka8
上传日期:2013-04-06
资源大小:103k
文件大小:6k
源码类别:

家庭/个人应用

开发平台:

Visual C++

  1. // MoneyViewDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "MyAssistant.h"
  5. #include "MoneyViewDlg.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CMoneyViewDlg dialog
  13. CMoneyViewDlg::CMoneyViewDlg(CWnd* pParent /*=NULL*/) 
  14. : CDialog(CMoneyViewDlg::IDD, pParent)
  15. {
  16. //{{AFX_DATA_INIT(CMoneyViewDlg)
  17. m_strID = _T("");
  18. m_nSum = 0;
  19. m_nYear = 0;
  20. m_nMonth = 0;
  21. m_nDay = 0;
  22. //}}AFX_DATA_INIT
  23. m_nPage = 0;
  24. }
  25. void CMoneyViewDlg::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CDialog::DoDataExchange(pDX);
  28. //{{AFX_DATA_MAP(CMoneyViewDlg)
  29. DDX_Control(pDX, IDC_TYPE, m_comboType);
  30. DDX_Control(pDX, IDC_MONEY_LIST, m_listMoney);
  31. DDX_Text(pDX, IDC_ID, m_strID);
  32. DDX_Text(pDX, IDC_SUM, m_nSum);
  33. DDX_Text(pDX, IDC_YEAR, m_nYear);
  34. DDX_Text(pDX, IDC_MONTH, m_nMonth);
  35. DDX_Text(pDX, IDC_DAY, m_nDay);
  36. //}}AFX_DATA_MAP
  37. }
  38. BEGIN_MESSAGE_MAP(CMoneyViewDlg, CDialog)
  39. //{{AFX_MSG_MAP(CMoneyViewDlg)
  40. ON_BN_CLICKED(IDC_QUERY, OnQuery)
  41. ON_BN_CLICKED(IDC_PREF, OnPref)
  42. ON_BN_CLICKED(IDC_NEXT, OnNext)
  43. //}}AFX_MSG_MAP
  44. END_MESSAGE_MAP()
  45. /////////////////////////////////////////////////////////////////////////////
  46. // CMoneyViewDlg message handlers
  47. void CMoneyViewDlg::OnOK() 
  48. {
  49. // TODO: Add extra validation here
  50. // CDialog::OnOK();
  51. }
  52. void CMoneyViewDlg::OnCancel() 
  53. {
  54. // TODO: Add extra cleanup here
  55. // CDialog::OnCancel();
  56. }
  57. BOOL CMoneyViewDlg::OnInitDialog() 
  58. {
  59. CDialog::OnInitDialog();
  60. // TODO: Add extra initialization here
  61. m_comboType.AddString("饮食");
  62. m_comboType.AddString("住宿");
  63. m_comboType.AddString("衣服");
  64. m_comboType.AddString("交通");
  65. m_comboType.AddString("通信");
  66. m_comboType.AddString("书籍");
  67. m_comboType.AddString("培训");
  68. m_comboType.AddString("其它");
  69. m_comboType.SetCurSel(0);
  70. m_nSum = 0;
  71. CString strYear,strMonth,strDay;
  72. m_nYear = 2004;
  73. m_nMonth = CTime::GetCurrentTime().GetMonth();
  74. m_nDay = CTime::GetCurrentTime().GetDay();
  75. UpdateData(FALSE);
  76. m_listMoney.InsertColumn(0,"说明",LVCFMT_LEFT,300);
  77. m_listMoney.InsertColumn(0,"日期",LVCFMT_LEFT,100);
  78. m_listMoney.InsertColumn(0,"金额",LVCFMT_LEFT,100);
  79. m_listMoney.InsertColumn(0,"类型",LVCFMT_LEFT,100);
  80. LoadFromDb();
  81. return TRUE;  // return TRUE unless you set the focus to a control
  82.               // EXCEPTION: OCX Property Pages should return FALSE
  83. }
  84. void CMoneyViewDlg::OnPref() 
  85. {
  86. if(m_nPage > 0) {
  87. m_nPage --;
  88. }
  89. }
  90. void CMoneyViewDlg::OnNext() 
  91. {
  92. if(m_nPage < 10) {
  93. m_nPage ++;
  94. }
  95. }
  96. void CMoneyViewDlg::OnQuery() 
  97. {
  98. UpdateData(TRUE);
  99. m_comboType.GetWindowText(m_strType);
  100. CTime p_Date(m_nYear,m_nMonth,m_nDay,0,0,0);
  101. m_Date = p_Date;
  102. m_strFilter = "";
  103. if(m_strType.GetLength() != 0) {
  104. m_strFilter += "Type = '" + m_strType + "'";
  105. }
  106. else {
  107. m_strFilter += "Type = '*'";
  108. }
  109. QueryFromDb();
  110. }
  111. BOOL CMoneyViewDlg::LoadFromDb()
  112. {
  113. p_Database = new CDatabase;
  114. p_Database->SetLoginTimeout(5);
  115. BOOL p_Status = FALSE;
  116. try
  117. {
  118. p_Status = p_Database->Open("Assistant");
  119. if(p_Status)
  120. TRACE("nDB opened successfullyn");
  121. else
  122. TRACE("nOpen DSN failed.n");
  123. }
  124. catch(CMemoryException* pEx)
  125. {
  126. pEx->ReportError();
  127. }
  128. catch(CDBException* pDBEx)
  129. {
  130. pDBEx->ReportError();
  131. TRACE("RetCOde:%d strError:[%d] strState: [%d]n",
  132. pDBEx->m_nRetCode,
  133. pDBEx->m_strError,
  134. pDBEx->m_strStateNativeOrigin);
  135. }
  136. if(!p_Status)
  137. {
  138. MessageBox("Open DSN Failed.");
  139. if(p_Database->IsOpen()) p_Database->Close();
  140. if(p_Database != NULL) delete p_Database;
  141. return FALSE;
  142. }
  143. p_Record = new CMoneyRecord(p_Database);
  144. if(!p_Record->Open(AFX_DB_USE_DEFAULT_TYPE,(LPCTSTR)"Account"))
  145. {
  146. MessageBox("Open Table SiteData Failed.");
  147. if(p_Record->IsOpen()) p_Record->Close();
  148. if(p_Database->IsOpen()) p_Database->Close();
  149. delete p_Record;
  150. delete p_Database;
  151. return FALSE;
  152. }
  153. CString str;
  154. if(!p_Record->IsBOF())
  155. {
  156. m_listMoney.DeleteAllItems();
  157. while(!p_Record->IsEOF())
  158. {
  159. int i = m_listMoney.InsertItem(0,p_Record->m_Type);
  160. str.Format("%d",p_Record->m_Sum);
  161. m_listMoney.SetItemText(i,1,str);
  162. m_listMoney.SetItemText(i,2,p_Record->m_Date.Format("%Y-%b-%d"));
  163. m_listMoney.SetItemText(i,3,p_Record->m_Comments);
  164. p_Record->MoveNext();
  165. }
  166. m_listMoney.UpdateWindow();
  167. }
  168. //
  169. if(p_Record->IsOpen()) p_Record->Close();
  170. if(p_Database->IsOpen()) p_Database->Close();
  171. delete p_Record;
  172. delete p_Database;
  173. return TRUE;
  174. }
  175. BOOL CMoneyViewDlg::QueryFromDb()
  176. {
  177. p_Database = new CDatabase;
  178. p_Database->SetLoginTimeout(5);
  179. BOOL p_Status = FALSE;
  180. try
  181. {
  182. p_Status = p_Database->Open("Assistant");
  183. if(p_Status)
  184. TRACE("nDB opened successfullyn");
  185. else
  186. TRACE("nOpen DSN failed.n");
  187. }
  188. catch(CMemoryException* pEx)
  189. {
  190. pEx->ReportError();
  191. }
  192. catch(CDBException* pDBEx)
  193. {
  194. pDBEx->ReportError();
  195. TRACE("RetCOde:%d strError:[%d] strState: [%d]n",
  196. pDBEx->m_nRetCode,
  197. pDBEx->m_strError,
  198. pDBEx->m_strStateNativeOrigin);
  199. }
  200. if(!p_Status)
  201. {
  202. MessageBox("Open DSN Failed.");
  203. if(p_Database->IsOpen()) p_Database->Close();
  204. if(p_Database != NULL) delete p_Database;
  205. return FALSE;
  206. }
  207. p_Record = new CMoneyRecord(p_Database);
  208. p_Record->m_strFilter = m_strFilter;
  209. if(!p_Record->Open(AFX_DB_USE_DEFAULT_TYPE,(LPCTSTR)"Account"))
  210. {
  211. MessageBox("Open Table SiteData Failed.");
  212. if(p_Record->IsOpen()) p_Record->Close();
  213. if(p_Database->IsOpen()) p_Database->Close();
  214. delete p_Record;
  215. delete p_Database;
  216. return FALSE;
  217. }
  218. m_listMoney.DeleteAllItems();
  219. CString str;
  220. if(!p_Record->IsBOF())
  221. {
  222. while(!p_Record->IsEOF())
  223. {
  224. int i = m_listMoney.InsertItem(0,p_Record->m_Type);
  225. str.Format("%d",p_Record->m_Sum);
  226. m_listMoney.SetItemText(i,1,str);
  227. m_listMoney.SetItemText(i,2,p_Record->m_Date.Format("%Y-%b-%d"));
  228. m_listMoney.SetItemText(i,3,p_Record->m_Comments);
  229. p_Record->MoveNext();
  230. }
  231. m_listMoney.UpdateWindow();
  232. }
  233. //
  234. if(p_Record->IsOpen()) p_Record->Close();
  235. if(p_Database->IsOpen()) p_Database->Close();
  236. delete p_Record;
  237. delete p_Database;
  238. return TRUE;
  239. }