OLEDBMFCMultipleView.cpp
上传用户:benben_wyd
上传日期:2010-02-26
资源大小:1229k
文件大小:3k
源码类别:

书籍源码

开发平台:

Visual C++

  1. // OLEDBMFCMultipleView.cpp : implementation of the COLEDBMFCMultipleView class
  2. //
  3. #include "stdafx.h"
  4. #include "OLEDBMFCMultiple.h"
  5. #include "OLEDBMFCMultipleSet.h"
  6. #include "OLEDBMFCMultipleDoc.h"
  7. #include "OLEDBMFCMultipleView.h"
  8. #ifdef _DEBUG
  9. #define new DEBUG_NEW
  10. #undef THIS_FILE
  11. static char THIS_FILE[] = __FILE__;
  12. #endif
  13. /////////////////////////////////////////////////////////////////////////////
  14. // COLEDBMFCMultipleView
  15. IMPLEMENT_DYNCREATE(COLEDBMFCMultipleView, COleDBRecordView)
  16. BEGIN_MESSAGE_MAP(COLEDBMFCMultipleView, COleDBRecordView)
  17. //{{AFX_MSG_MAP(COLEDBMFCMultipleView)
  18. ON_COMMAND(ID_RECORD_CHANGEROWSET, OnRecordChangerowset)
  19. //}}AFX_MSG_MAP
  20. END_MESSAGE_MAP()
  21. /////////////////////////////////////////////////////////////////////////////
  22. // COLEDBMFCMultipleView construction/destruction
  23. COLEDBMFCMultipleView::COLEDBMFCMultipleView()
  24. : COleDBRecordView(COLEDBMFCMultipleView::IDD)
  25. {
  26. //{{AFX_DATA_INIT(COLEDBMFCMultipleView)
  27. // NOTE: the ClassWizard will add member initialization here
  28. m_pSet = NULL;
  29. //}}AFX_DATA_INIT
  30. }
  31. COLEDBMFCMultipleView::~COLEDBMFCMultipleView()
  32. {
  33. }
  34. void COLEDBMFCMultipleView::DoDataExchange(CDataExchange* pDX)
  35. {
  36. COleDBRecordView::DoDataExchange(pDX);
  37. //{{AFX_DATA_MAP(COLEDBMFCMultipleView)
  38. // NOTE: the ClassWizard will add DDX and DDV calls here
  39. //}}AFX_DATA_MAP
  40. DDX_Text(pDX, IDC_COLUMN1, m_pSet->m_Rows.column1, 62);
  41. DDX_Text(pDX, IDC_COLUMN2, m_pSet->m_Rows.column2, 51);
  42. DDX_Text(pDX, IDC_STATIC1, m_pSet->m_columnName1, 17);
  43. DDX_Text(pDX, IDC_STATIC2, m_pSet->m_columnName2, 17);
  44. }
  45. BOOL COLEDBMFCMultipleView::PreCreateWindow(CREATESTRUCT& cs)
  46. {
  47. return COleDBRecordView::PreCreateWindow(cs);
  48. }
  49. void COLEDBMFCMultipleView::OnInitialUpdate()
  50. {
  51. m_pSet = &GetDocument()->m_oLEDBMFCMultipleSet;
  52. {
  53. CWaitCursor wait;
  54. HRESULT hr = m_pSet->Open();
  55. if (hr != S_OK)
  56. {
  57. AfxMessageBox(_T("Record set failed to open."), MB_OK);
  58. m_bOnFirstRecord = TRUE;
  59. m_bOnLastRecord = TRUE;
  60. }
  61. }
  62. COleDBRecordView::OnInitialUpdate();
  63. }
  64. /////////////////////////////////////////////////////////////////////////////
  65. // COLEDBMFCMultipleView diagnostics
  66. #ifdef _DEBUG
  67. void COLEDBMFCMultipleView::AssertValid() const
  68. {
  69. COleDBRecordView::AssertValid();
  70. }
  71. void COLEDBMFCMultipleView::Dump(CDumpContext& dc) const
  72. {
  73. COleDBRecordView::Dump(dc);
  74. }
  75. COLEDBMFCMultipleDoc* COLEDBMFCMultipleView::GetDocument() // non-debug version is inline
  76. {
  77. ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(COLEDBMFCMultipleDoc)));
  78. return (COLEDBMFCMultipleDoc*)m_pDocument;
  79. }
  80. #endif //_DEBUG
  81. /////////////////////////////////////////////////////////////////////////////
  82. // COLEDBMFCMultipleView database support
  83. CRowset* COLEDBMFCMultipleView::OnGetRowset()
  84. {
  85. return m_pSet;
  86. }
  87. /////////////////////////////////////////////////////////////////////////////
  88. // COLEDBMFCMultipleView message handlers
  89. void COLEDBMFCMultipleView::OnRecordChangerowset() 
  90. {
  91.     UpdateData(TRUE);    // Update from Window
  92.     m_pSet->Close();     // Close the last rowset
  93.     m_pSet->Open();      // Toggle to the new rowset
  94.     UpdateData(FALSE);   // Update to Window
  95. }