📄 jhhbdoc.cpp
字号:
// Written by JHCC, 1997
// JHHBDoc.cpp : implementation of the CJHHBDoc class
// NOTE:Server Version !!! 1997.11.26 Update,Don't cover by client Version!!!
#include "stdafx.h"
#include "JHHB.h"
#include "JHHBDoc.h"
#include "MainFrm.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CJHHBDoc
IMPLEMENT_DYNCREATE(CJHHBDoc, CDocument)
BEGIN_MESSAGE_MAP(CJHHBDoc, CDocument)
//{{AFX_MSG_MAP(CJHHBDoc)
ON_COMMAND(ID_DATA_HISTORY, OnDataHistory)
ON_UPDATE_COMMAND_UI(ID_DATA_REQUESTSEND, OnUpdateDataRequestsend)
ON_COMMAND(ID_DATA_REQUESTSEND, OnDataRequestsend)
ON_COMMAND(ID_COMM_SETTINGS, OnCommSettings)
ON_COMMAND(ID_STATION_SETUP, OnStationSetup)
ON_COMMAND(ID_DATA_PRINT_D, OnDataPrintD)
ON_COMMAND(ID_DATA_PRINT_M, OnDataPrintM)
ON_COMMAND(ID_DATA_RELAY_REAL, OnDataRelayReal)
ON_UPDATE_COMMAND_UI(ID_DATA_RELAY_REAL, OnUpdateDataRelayReal)
ON_COMMAND(ID_DATA_PRINT_YEAR, OnDataPrintYear)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CJHHBDoc construction/destruction
CJHHBDoc::CJHHBDoc()
{
CString strCtrlSection;
strCtrlSection.LoadString(IDS_CTRLSECTION);
CString strDataTypeItem;
strDataTypeItem.LoadString(IDS_DATATYPEITEM);
CString strDataType;
strDataType = ::AfxGetApp()->GetProfileString(strCtrlSection, strDataTypeItem);
CString strODBC;
strODBC.LoadString(IDS_ODBC);
if (strDataType == strODBC)
m_bUseDao = FALSE; // use ODBC
else
m_bUseDao = TRUE;
m_pDB = NULL;
m_pDaoHBRecSet = NULL;
m_pDaoHBDateDataSet = NULL;
m_pDaoStationInfoSet = NULL;
m_pHBRecSet = NULL;
m_pHBDateDataSet = NULL;
m_pStationInfoSet = NULL;
m_pSpeedQueryArray = NULL;
m_nSpeedQueryArrayUnit = 0;
m_nCurQuerySetPos = 0;
CTime t = CTime::GetCurrentTime();
(t.GetYear(), t.GetMonth(), t.GetDay(), 0, 0, 0);
m_curSpyTime = COleDateTime(t.GetYear(), t.GetMonth(), t.GetDay(), 0, 0, 0);
m_nCurStation =0;//2001年6月1日
*((WORD*)m_pReadCommBuf) = (WORD)0;
m_nReceiveCount = 0;
m_nTotalReceive = 0;
m_nReceiveModemCount = 0;
m_pstrHead=NULL;
m_pComm = NULL;
// m_pModem = NULL;
m_pdlgReal = NULL;
InitDocument();
}
CJHHBDoc::~CJHHBDoc()
{
::KillTimer(NULL, m_nWorkTimerID);
if (m_pComm)
{
delete m_pComm;
m_pComm = NULL;
}
for (int n = 0; n < m_ctrlInfoArray.GetSize(); ++ n)
{
delete m_ctrlInfoArray[n];
}
m_ctrlInfoArray.RemoveAll();
// DAO
if (m_pDB != NULL)
{
if (m_pDB->IsOpen())
m_pDB->Close();
delete m_pDB;
m_pDB = NULL;
}
if (m_pDaoHBRecSet)
{
if (m_pDaoHBRecSet->IsOpen())
m_pDaoHBRecSet->Close();
if (m_pDaoHBDateDataSet->IsOpen())
m_pDaoHBDateDataSet->Close();
if (m_pDaoStationInfoSet->IsOpen())
m_pDaoStationInfoSet->Close();
if (m_pDaoAddDataSet->IsOpen())
m_pDaoAddDataSet->Close();
if (m_pDaoShareDataSet->IsOpen())
m_pDaoShareDataSet->Close();
delete m_pDaoHBRecSet;
delete m_pDaoHBDateDataSet;
delete m_pDaoStationInfoSet;
delete m_pDaoAddDataSet;
delete m_pDaoShareDataSet;
m_pDaoHBRecSet = NULL;
m_pDaoHBDateDataSet = NULL;
m_pDaoStationInfoSet = NULL;
m_pDaoAddDataSet = NULL;
}
// ODBC
if (m_pHBRecSet)
{
if (m_pHBRecSet->IsOpen())
m_pHBRecSet->Close();
if (m_pHBDateDataSet->IsOpen())
m_pHBDateDataSet->Close();
if (m_pStationInfoSet->IsOpen())
m_pStationInfoSet->Close();
if (m_pAddDataSet->IsOpen())
m_pAddDataSet->Close();
delete m_pHBRecSet;
delete m_pHBDateDataSet;
delete m_pStationInfoSet;
delete m_pAddDataSet;
m_pHBRecSet = NULL;
m_pHBDateDataSet = NULL;
m_pStationInfoSet = NULL;
m_pAddDataSet = NULL;
}
if (m_pSpeedQueryArray != NULL)
{
delete m_pSpeedQueryArray;
m_pSpeedQueryArray = NULL;
}
}
void CJHHBDoc::RefreshData(COleDateTime& time)
{
CJHHBDoc* pJHHBDoc = (CJHHBDoc*)((CMainFrame*)::AfxGetApp()->m_pMainWnd)->GetActiveDocument();//2001年6月1日增
int n;//2001年6月1日增
if (m_nCurStation>(pJHHBDoc->m_ctrlInfoArray.GetSize()-1))
n=m_nCurStation-1;
else
n=m_nCurStation;//2001年6月1日增
if (m_bUseDao) // DAO
{
try
{
m_pDaoHBDateDataSet->GenParam(time);
m_pDaoHBDateDataSet->Requery();
m_pDaoHBRecSet->GenParam(time,
m_ctrlInfoArray[n]->GetAbsCurSel(m_ctrlInfoArray)+1);//2001年6月1日改,原n处为m_nCurStation
m_pDaoHBRecSet->Requery();
}
catch (CDaoException* e)
{
DisplayDaoException(e);
e->Delete();
return;
}
}
else
{
try
{
m_pHBDateDataSet->GenParam(time);
m_pHBDateDataSet->Requery();
m_pHBRecSet->GenParam(time,
m_ctrlInfoArray[n]->GetAbsCurSel(m_ctrlInfoArray)+1);//2001年6月1日改,原n处为m_nCurStation
m_pHBRecSet->Requery();
}
catch (CDBException* e)
{
e->Delete();
return;
}
}
}
BOOL CJHHBDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument())
return FALSE;
// TODO: add reinitialization code here
// (SDI documents will reuse this document)
return TRUE;
}
#include "DataListView.h"
CDataListView* CJHHBDoc::GetDataListView(void)
{
POSITION pos = GetFirstViewPosition();
while (pos != NULL)
{
CView* pView = GetNextView(pos);
if (pView->IsKindOf(RUNTIME_CLASS(CDataListView)) == TRUE)
return (CDataListView*)pView;
}
return FALSE;
}
#include "JHHBView.h"
CJHHBView* CJHHBDoc::GetJHHBView(void)
{
POSITION pos = GetFirstViewPosition();
while (pos != NULL)
{
CView* pView = GetNextView(pos);
if (pView->IsKindOf(RUNTIME_CLASS(CJHHBView)) == TRUE)
return (CJHHBView*)pView;
}
return FALSE;
}
#include "RowView.h"
#include "LogView.h"
CLogView* CJHHBDoc::GetLogView(void)
{
POSITION pos = GetFirstViewPosition();
while (pos != NULL)
{
CView* pView = GetNextView(pos);
if (pView->IsKindOf(RUNTIME_CLASS(CLogView)) == TRUE)
return (CLogView*)pView;
}
return FALSE;
}
/////////////////////////////////////////////////////////////////////////////
// CJHHBDoc serialization
void CJHHBDoc::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
// TODO: add storing code here
}
else
{
// TODO: add loading code here
}
}
/////////////////////////////////////////////////////////////////////////////
// CJHHBDoc diagnostics
#ifdef _DEBUG
void CJHHBDoc::AssertValid() const
{
CDocument::AssertValid();
}
void CJHHBDoc::Dump(CDumpContext& dc) const
{
CDocument::Dump(dc);
}
#endif //_DEBUG
#include "CommSettingsDlg.h"
BOOL CJHHBDoc::InitDocument(void)
{
CWinApp * App=::AfxGetApp();
/*
// 获取MODEM 工作方式
CString strCtrlSection;
strCtrlSection.LoadString(IDS_MODEMSECTION);
CString strDialTypeSection;
strDialTypeSection.CString::LoadString(IDS_DIALTYPEITEM);
ASSERT(App->GetProfileInt(strCtrlSection, strDialTypeSection, CModemSetupDlg::DIALTYPE_DIAL)
== CModemSetupDlg::DIALTYPE_WAITDIAL);//确定是被叫方式(监测站机)
CString strModemSection;
strModemSection.LoadString(IDS_MODEMSECTION);
CString strTAPILineItem;
strTAPILineItem.CString::LoadString(IDS_TAPILINEITEM);
m_nModemLine = ::AfxGetApp()->GetProfileInt(strModemSection, strTAPILineItem, 0);
*/
CString strCtrlSection=_T("");
strCtrlSection.LoadString(IDS_CTRLSECTION);
CString strRefreshTimeoutItem;
strRefreshTimeoutItem.LoadString(IDS_REFRESHTIMEOUT);
m_nRefreshTimeout = App->GetProfileInt(strCtrlSection, strRefreshTimeoutItem, DEFAULT_REFRESHTIMEOUT);
CString strWaitReplyTimeoutItem;
strWaitReplyTimeoutItem.LoadString(IDS_WAITREPLYTIMEOUT);
m_nWaitReplyTimeout = App->GetProfileInt(strCtrlSection, strWaitReplyTimeoutItem, DEFAULT_WAITREPLYTIMEOUT);
CString strTransDataTimeoutItem;
strTransDataTimeoutItem.LoadString(IDS_TRANSDATATIMEOUT);
m_nTransDataTimeout = App->GetProfileInt(strCtrlSection, strTransDataTimeoutItem, DEFAULT_TRANCEDATATIMEOUT);
if (m_bUseDao) // DAO
{
CDaoDatabase* tmpDB = new CDaoDatabase;
// Attempt to open the new database before replacing our ptr
CString lpszDataPathName;
lpszDataPathName.LoadString(IDS_DATANAME);
try
{
tmpDB->Open(lpszDataPathName);
}
catch (CDaoException* e)
{
DisplayDaoException(e);
delete tmpDB;
e->Delete();
return -1;// FALSE;
}
if (m_pDB)
{
if (m_pDB->IsOpen())
m_pDB->Close();
delete m_pDB;
}
m_pDB = tmpDB;
}
COleDateTime curTime = COleDateTime::GetCurrentTime();
if (m_bUseDao) // DAO
{
m_pDaoHBRecSet = new CDaoHBRecSet(m_pDB);
// m_pDaoHBRecSet->m_strFilter = _T("");
m_pDaoHBRecSet->GenParam(curTime, 1);
try
{
m_pDaoHBRecSet->Open(dbOpenDynaset, _T("Select * From [hbdata]"));
}
catch (CDaoException* e)
{
DisplayDaoException(e);
e->Delete();
return -1;
}
}
else // Use ODBC
{
m_pHBRecSet = new CHBRecSet();
// m_pHBRecSet->m_strFilter = _T("");
m_pHBRecSet->GenParam(curTime, 1);
try
{
m_pHBRecSet->Open();
}
catch (CDBException* e)
{
e->Delete();
return -1;
}
}
if (m_bUseDao) // DAO
{
m_pDaoHBDateDataSet = new CDaoHBDateDataSet(m_pDB);
// m_pDaoHBDateDataSet->m_strFilter = _T("");
m_pDaoHBDateDataSet->GenParam(curTime);
try
{
m_pDaoHBDateDataSet->Open(dbOpenDynaset, _T("Select * From [hbdata]"));
}
catch (CDaoException* e)
{
DisplayDaoException(e);
e->Delete();
return -1;
}
}
else // ODBC
{
m_pHBDateDataSet = new CHBDateDataSet();
// m_pHBDateDataSet->m_strFilter = _T("");
m_pHBDateDataSet->GenParam(curTime);
try
{
m_pHBDateDataSet->Open();
}
catch (CDBException* e)
{
e->Delete();
return -1;
}
}
if (m_bUseDao) // DAO
{
m_pDaoAddDataSet = new CDaoAddHBDataSet(m_pDB);
m_pDaoAddDataSet->m_strFilter = _T("");
try
{
m_pDaoAddDataSet->Open(dbOpenDynaset, _T("Select * From [hbdata]"));
}
catch (CDaoException* e)
{
DisplayDaoException(e);
e->Delete();
return -1;
}
}
else // ODBC
{
m_pAddDataSet = new CAddHBDataSet();
m_pAddDataSet->m_strFilter = _T("");
try
{
m_pAddDataSet->Open();
}
catch (CDBException* e)
{
e->Delete();
return -1;
}
}
if (m_bUseDao) // DAO
{
m_pDaoShareDataSet = new CDaoShareHBDataSet(m_pDB);
m_pDaoShareDataSet->m_strFilter = _T("");
try
{
m_pDaoShareDataSet->Open(dbOpenDynaset, _T("Select * From [HBDATA]"));
}
catch (CDaoException* e)
{
DisplayDaoException(e);
e->Delete();
return -1;
}
}
else // ODBC I do nothing!
{
}
if (m_bUseDao) // DAO
{
m_pDaoStationInfoSet = new CDaoStationInfoSet(m_pDB);
try
{
m_pDaoStationInfoSet->Open();
}
catch (CDaoException* e)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -