PAGE2.CPP
上传用户:sanlisteel
上传日期:2008-06-19
资源大小:98k
文件大小:3k
源码类别:

数据库系统

开发平台:

C/C++

  1. // Page2.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "tbvc.h"
  5. #include "Page2.h"
  6. #include "mdbfield.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CPage2 property page
  14. IMPLEMENT_DYNCREATE(CPage2, CPropertyPage)
  15. CPage2::CPage2() : CPropertyPage(CPage2::IDD)
  16. {
  17. m_pSet=NULL;
  18. //{{AFX_DATA_INIT(CPage2)
  19. // NOTE: the ClassWizard will add member initialization here
  20. //}}AFX_DATA_INIT
  21. }
  22. CPage2::~CPage2()
  23. {   
  24. if(m_pSet!=NULL)
  25. {   
  26. m_pSet->Close();
  27. m_database->Close();
  28. delete m_pSet;
  29. delete m_database;
  30. }
  31. }
  32. void CPage2::DoDataExchange(CDataExchange* pDX)
  33. {
  34. CPropertyPage::DoDataExchange(pDX);
  35. //{{AFX_DATA_MAP(CPage2)
  36. DDX_Control(pDX, IDC_LIST2, m_listctrl);
  37. //}}AFX_DATA_MAP
  38. }
  39. BEGIN_MESSAGE_MAP(CPage2, CPropertyPage)
  40. //{{AFX_MSG_MAP(CPage2)
  41. ON_WM_CTLCOLOR()
  42. //}}AFX_MSG_MAP
  43. END_MESSAGE_MAP()
  44. /////////////////////////////////////////////////////////////////////////////
  45. // CPage2 message handlers
  46. BOOL CPage2::OnInitDialog() 
  47. {
  48. CPropertyPage::OnInitDialog();
  49. m_brush.CreateSolidBrush(RGB(0,170,170));
  50.     try
  51. {
  52.     CString  sDSN="ODBC;DRIVER=Microsoft Access Driver (*.mdb);DSN='';DBQ=telbook.mdb";
  53. m_database = new CDatabase;
  54. if(!m_database->Open(NULL,FALSE,FALSE,sDSN,FALSE))
  55. {      
  56. CDialog::EndDialog(0);
  57. return FALSE;
  58. }
  59. CString strSQL="select * from personlist";
  60. m_pSet = new CRecordset(m_database);
  61. m_pSet->Open(CRecordset::dynaset,strSQL);
  62. m_listctrl.SetBkColor(RGB(0xFF,0xFF,0xFF));
  63. m_listctrl.SetTextBkColor(RGB(0xFF,0xFF,0xFF));
  64. for(int i=0;i<12;i++)
  65. {
  66. m_listctrl.InsertColumn(i,dbFields[i].label,LVCFMT_LEFT,-1,-1);
  67. m_listctrl.SetColumnWidth(i,dbFields[i].len);
  68. }
  69. catch(CDBException* pEx)
  70. {
  71. pEx->ReportError();
  72. }
  73. return TRUE;  
  74.              
  75. }
  76. HBRUSH CPage2::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
  77. {
  78. HBRUSH hbr =(HBRUSH)m_brush;
  79. return hbr;
  80. }
  81. void CPage2::AddDataIntoCtrl()
  82. {
  83. CWaitCursor wc;
  84. CString temp;
  85. char *buf;
  86. int j=0;
  87. if(!m_pSet->Requery()) AfxMessageBox("can not requery");
  88. if(m_pSet->IsBOF() && m_pSet->IsEOF()) return;
  89. //m_pSet->MoveFirst();
  90. while( !m_pSet->IsEOF() )
  91. {
  92. for(int i=0;i<MAX_LEN;i++)
  93. {
  94. m_pSet->GetFieldValue(dbFields[i].name,temp);
  95. buf=temp.GetBuffer(temp.GetLength());      
  96. strcpy(dbFields[i].m_name,buf);
  97. }
  98. m_listctrl.InsertItem(j,(LPCTSTR)dbFields[0].m_name,0);
  99. for(i=1;i<MAX_LEN;i++)
  100. {
  101. m_listctrl.SetItemText(j,i,dbFields[i].m_name);
  102. }
  103. j++;
  104. m_pSet->MoveNext();
  105. }
  106. }
  107. BOOL CPage2::OnSetActive() 
  108. {
  109.     EmptyListCtrl();
  110. AddDataIntoCtrl();
  111. return CPropertyPage::OnSetActive();
  112. }
  113. void CPage2::EmptyListCtrl()
  114. {
  115. m_listctrl.DeleteAllItems();
  116. }