SQLServerDataProviderDoc.cpp
上传用户:szled88
上传日期:2015-04-09
资源大小:43957k
文件大小:3k
源码类别:

对话框与窗口

开发平台:

Visual C++

  1. // SQLServerDataProviderDoc.cpp : implementation of the CSQLServerDataProviderDoc class
  2. //
  3. #include "stdafx.h"
  4. #include "SQLServerDataProvider.h"
  5. #include "SQLServerDataProviderDoc.h"
  6. #include "CalendarDataProviderSQL.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CSQLServerDataProviderDoc
  14. IMPLEMENT_DYNCREATE(CSQLServerDataProviderDoc, CDocument)
  15. BEGIN_MESSAGE_MAP(CSQLServerDataProviderDoc, CDocument)
  16. //{{AFX_MSG_MAP(CSQLServerDataProviderDoc)
  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. // CSQLServerDataProviderDoc construction/destruction
  23. CSQLServerDataProviderDoc::CSQLServerDataProviderDoc()
  24. {
  25. m_pSQLDataProvider = NULL;
  26. }
  27. CSQLServerDataProviderDoc::~CSQLServerDataProviderDoc()
  28. {
  29. SafeReleaseSQLDataProvider();
  30. }
  31. void CSQLServerDataProviderDoc::SafeReleaseSQLDataProvider()
  32. {
  33. if (m_pSQLDataProvider)
  34. {
  35. m_pSQLDataProvider->Close();
  36. m_pSQLDataProvider->InternalRelease();
  37. }
  38. m_pSQLDataProvider = NULL;
  39. }
  40. BOOL CSQLServerDataProviderDoc::OnNewDocument()
  41. {
  42. if (!CDocument::OnNewDocument())
  43. return FALSE;
  44. CString strConnectionString = AfxGetApp()->GetProfileString(csOptProfileSection, 
  45. csOptDataSourceSQLsrvProp, _T(""));
  46. SafeReleaseSQLDataProvider();
  47. m_pSQLDataProvider = new CCalendarDataProviderSQL();
  48. if (!m_pSQLDataProvider)
  49. AfxThrowMemoryException();
  50. m_pSQLDataProvider->SetConnectionString(strConnectionString);
  51. if (!m_pSQLDataProvider->Open())
  52. {
  53. if (!strConnectionString.IsEmpty())
  54. {
  55. if (AfxGetMainWnd() && !AfxGetMainWnd()->IsWindowVisible()) 
  56. {
  57. AfxGetMainWnd()->ShowWindow(SW_SHOW);
  58. AfxGetMainWnd()->UpdateWindow();
  59. }
  60. CString strErr = _T("Cannot connect to DataSource: ");
  61. strErr += strConnectionString;
  62. AfxMessageBox(strErr);
  63. }
  64. else if (AfxGetMainWnd()) 
  65. {
  66. AfxGetMainWnd()->PostMessage(WM_COMMAND, ID_FILE_OPEN);
  67. }
  68. UpdateAllViews(NULL, uvfPopulate + uvfDetachDataProvider);
  69. }
  70. else 
  71. {
  72. UpdateAllViews(NULL, uvfPopulate + uvfSetDataProvider);
  73. }
  74. return TRUE;
  75. }
  76. /////////////////////////////////////////////////////////////////////////////
  77. // CSQLServerDataProviderDoc serialization
  78. void CSQLServerDataProviderDoc::Serialize(CArchive& ar)
  79. {
  80. if (ar.IsStoring())
  81. {
  82. // TODO: add storing code here
  83. }
  84. else
  85. {
  86. // TODO: add loading code here
  87. }
  88. }
  89. CXTPCalendarData* CSQLServerDataProviderDoc::GetDataProvider_SQLServer() 
  90. {
  91. return m_pSQLDataProvider;
  92. }
  93. /////////////////////////////////////////////////////////////////////////////
  94. // CSQLServerDataProviderDoc diagnostics
  95. #ifdef _DEBUG
  96. void CSQLServerDataProviderDoc::AssertValid() const
  97. {
  98. CDocument::AssertValid();
  99. }
  100. void CSQLServerDataProviderDoc::Dump(CDumpContext& dc) const
  101. {
  102. CDocument::Dump(dc);
  103. }
  104. #endif //_DEBUG
  105. /////////////////////////////////////////////////////////////////////////////
  106. // CSQLServerDataProviderDoc commands