SampleReportDoc.cpp
上传用户:jimmy1212
上传日期:2020-11-02
资源大小:40k
文件大小:4k
源码类别:

Static控件

开发平台:

Visual C++

  1. // SampleReportDoc.cpp : implementation of the CSampleReportDoc class
  2. //
  3. #include "stdafx.h"
  4. #include "SampleReport.h"
  5. #include "SampleReportDoc.h"
  6. #include "EmpList.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CSampleReportDoc
  14. IMPLEMENT_DYNCREATE(CSampleReportDoc, CDocument)
  15. BEGIN_MESSAGE_MAP(CSampleReportDoc, CDocument)
  16. //{{AFX_MSG_MAP(CSampleReportDoc)
  17. // NOTE - the ClassWizard will add and remove mapping macros here.
  18. //    DO NOT EDIT what you see in these blocks of generated code!
  19. //}}AFX_MSG_MAP
  20. END_MESSAGE_MAP()
  21. /////////////////////////////////////////////////////////////////////////////
  22. // CSampleReportDoc construction/destruction
  23. // static data 
  24. static CEasyReport::CColInfo s_Cols[] = {
  25. {"DeptartmentnName", 32, CEasyReport::CColInfo::eLeft},
  26. {"EmployeenName", 25, CEasyReport::CColInfo::eLeft },
  27. {"nSalary", 15, CEasyReport::CColInfo::eRight}
  28. };
  29. static CEasyReport::CColInfo s_SummaryCols[] = {
  30. {"Nonof Emp.", 10, CEasyReport::CColInfo::eRight},
  31. {"nTot Sal.", 15, CEasyReport::CColInfo::eRight },
  32. {"nMax Sal.", 15, CEasyReport::CColInfo::eRight}
  33. };
  34. CSampleReportDoc::CSampleReportDoc()
  35. {
  36. // TODO: add one-time construction code here
  37. }
  38. CSampleReportDoc::~CSampleReportDoc()
  39. {
  40. }
  41. BOOL CSampleReportDoc::OnNewDocument()
  42. {
  43. if (!CDocument::OnNewDocument())
  44. return FALSE;
  45. // TODO: add reinitialization code here
  46. // (SDI documents will reuse this document)
  47. long aCurDept;
  48. int aCount;
  49. double aTotSalary, aMaxSalary;
  50. CEmpList aList;
  51. CString aTemp;
  52. try
  53. {
  54. aList.Open();
  55. }
  56. catch(CDaoException *ex)
  57. {
  58. AfxMessageBox(ex->m_pErrorInfo->m_strDescription);
  59. throw ex;
  60. }
  61. aList.MoveFirst();
  62. m_Report.SetReportTitle("Employees Salaries, by Department");
  63. m_Report.Start();
  64. // print a long paragraph
  65. m_Report.AtTab(0,
  66. "Hello World ! This is a simple long paragraph "
  67. "which needs to be Word-wrapped. Basically, if "
  68. "we set the data colums to 0, the report goes into "
  69. "a paragraph mode. In this mode, long paragraphs of "
  70. "text can be inserted and the text will be wrapped "
  71. "between the left and the right margins. You can insert "
  72. "a paragraph of text anywhere on the report. Comming soon "
  73. "bullet and numbered paragraph styles !");
  74. m_Report.NextRow();
  75. while(!aList.IsEOF())
  76. {
  77. // Initalize all totals etc at the start of a group
  78. aCurDept = aList.m_DeptID;
  79. aTotSalary = aMaxSalary = 0;
  80. aCount = 0;
  81. //m_Report.SetDataCols(NULL);
  82. //m_Report.AtTab(0,aTemp);
  83. // Set up a tabular section for the main section
  84. m_Report.SetDataCols(s_Cols,3);
  85. m_Report.AtTab(0,aList.m_DeptName);
  86. do
  87. {
  88. aTotSalary += aList.m_Salary;
  89. if( aList.m_Salary > aMaxSalary)
  90. aMaxSalary = aList.m_Salary;
  91. aTemp.Format("%s,%s",(LPCSTR)aList.m_LastName,(LPCSTR)aList.m_FirstName);
  92. m_Report.AtTab(1,aTemp);
  93. aTemp.Format("%5.2lf",aList.m_Salary);
  94. m_Report.AtTab(2,aTemp);
  95. m_Report.NextRow();
  96. aList.MoveNext();
  97. ++aCount;
  98. }
  99. while( !aList.IsEOF() && aList.m_DeptID == aCurDept);
  100. // write a summary for this department
  101. m_Report.SetDataCols(s_SummaryCols,3);
  102. aTemp.Format("%3d",aCount);
  103. m_Report.AtTab(0,aTemp );
  104. aTemp.Format("%5.2lf",aTotSalary);
  105. m_Report.AtTab(1,aTemp);
  106. aTemp.Format("%5.2lf",aMaxSalary);
  107. m_Report.AtTab(2,aTemp);
  108. m_Report.SetDataCols(NULL);
  109. m_Report.NextRow();
  110. m_Report.NextRow(); // insert a blank row between two groups
  111. }
  112. m_Report.End(); // close report
  113. aList.Close(); // close database
  114. m_Report.GotoPage(0);
  115. return TRUE;
  116. }
  117. /////////////////////////////////////////////////////////////////////////////
  118. // CSampleReportDoc serialization
  119. void CSampleReportDoc::Serialize(CArchive& ar)
  120. {
  121. if (ar.IsStoring())
  122. {
  123. // TODO: add storing code here
  124. }
  125. else
  126. {
  127. // TODO: add loading code here
  128. }
  129. }
  130. /////////////////////////////////////////////////////////////////////////////
  131. // CSampleReportDoc diagnostics
  132. #ifdef _DEBUG
  133. void CSampleReportDoc::AssertValid() const
  134. {
  135. CDocument::AssertValid();
  136. }
  137. void CSampleReportDoc::Dump(CDumpContext& dc) const
  138. {
  139. CDocument::Dump(dc);
  140. }
  141. #endif //_DEBUG
  142. /////////////////////////////////////////////////////////////////////////////
  143. // CSampleReportDoc commands