|
#include "StdAfx.h"
#include "CQuery.h"
// ----------------------------------------------------------------------------
// 생성자
// ----------------------------------------------------------------------------
CQuery::CQuery(void)
{
// DataBase Access용 객체 생성, 연결
m_pDb = new CDB();
if ( m_pDb->connectStatus() != TRUE )
{
AfxMessageBox("DB Connection fault"); //메시지 출력!!(y)
}
}
// ----------------------------------------------------------------------------
// 소멸자
// ----------------------------------------------------------------------------
CQuery::~CQuery(void)
{
delete m_pDb;
}
// ----------------------------------------------------------------------------
// DB에서 값을 읽어와.. Chart FX component를 이용하여 Graph를 그린다.
// ----------------------------------------------------------------------------
bool CQuery::dispChartFX()
{
CString m_csQuery;
m_csQuery.Format("select * from [Fe_Mn].[dbo].[FM_PLC1]");
m_pDb->executeSelect(m_csQuery);
if( m_pDb->getRecordCount() > 0 )
{
while(!m_pDb->isEOF())
{
m_pDb->moveNext();
}// while End
m_pDb->closeRecord();
}
return true;
}
// ----------------------------------------------------------------------------
// Tag Name으로 Tag Type를 DB에서 가져온다.
// ----------------------------------------------------------------------------
int CQuery::getTagInfo(CString csTagName)
{
int m_iRtn = 0;
CString m_csQuery;
char m_csType[20];
memset(m_csType, NULL, sizeof(m_csType));
m_csQuery.Format("select Type, Comment from [Fe_Mn].[dbo].[FM_TAGINFO] where TagName = '%s'", csTagName);
m_pDb->executeSelect(m_csQuery);
if( m_pDb->getRecordCount() > 0 )
{
m_pDb->getFieldValue("Type" , m_csType , sizeof(m_csType));
if (strncmp(m_csType,"Memory Discrete" ,15 ) == 0) m_iRtn = MEMDISC;
else if (strncmp(m_csType,"I/O Discrete" ,12 ) == 0) m_iRtn = IODISC;
else if (strncmp(m_csType,"Memory Int" ,10 ) == 0) m_iRtn = MEMINT;
else if (strncmp(m_csType,"I/O Int" ,7 ) == 0) m_iRtn = IOINT;
else if (strncmp(m_csType,"Memory Real" ,11 ) == 0) m_iRtn = MEMREAL;
else if (strncmp(m_csType,"I/O Real" ,8 ) == 0) m_iRtn = IOREAL;
else if (strncmp(m_csType,"Memory Message" ,14 ) == 0) m_iRtn = MEMMSG;
else if (strncmp(m_csType,"I/O Message" ,11 ) == 0) m_iRtn = IOMSG;
}
m_pDb->closeRecord();
return m_iRtn;
}
// ----------------------------------------------------------------------------
// Tag Name으로 Tag Info를 DB에서 가져온다.
// ----------------------------------------------------------------------------
void CQuery::getTagInfo_DB(CString csTagName, sTAGINFO &sTag)
{
CString m_csQuery;
m_csQuery.Format("select * from [Fe_Mn].[dbo].[FM_TAGINFO] where TagName = '%s'", csTagName);
m_pDb->executeSelect(m_csQuery);
if (m_pDb->getRecordCount() > 0)
{
m_pDb->getFieldValue("GroupName", sTag.sTAGINFO_GET.Group, sizeof(sTag.sTAGINFO_GET.Group));
m_pDb->getFieldValue("Type", sTag.sTAGINFO_GET.Type, sizeof(sTag.sTAGINFO_GET.Type));
m_pDb->getFieldValue("Comment", sTag.sTAGINFO_GET.Comment, sizeof(sTag.sTAGINFO_GET.Comment));
m_pDb->getFieldValue("Logged", sTag.sTAGINFO_GET.Logged, sizeof(sTag.sTAGINFO_GET.Logged));
m_pDb->getFieldValue("EventLogged", sTag.sTAGINFO_GET.EventLogged, sizeof(sTag.sTAGINFO_GET.EventLogged));
sTag.sTAGINFO_GET.EventLoggingPriority = m_pDb->getFieldInt("EventLoggingPriority");
m_pDb->getFieldValue("RetentiveValue", sTag.sTAGINFO_GET.RetentiveValue, sizeof(sTag.sTAGINFO_GET.RetentiveValue));
m_pDb->getFieldValue("InitialDisc", sTag.sTAGINFO_GET.InitialDisc, sizeof(sTag.sTAGINFO_GET.InitialDisc));
m_pDb->getFieldValue("OffMsg", sTag.sTAGINFO_GET.OffMsg, sizeof(sTag.sTAGINFO_GET.OffMsg));
m_pDb->getFieldValue("OnMsg", sTag.sTAGINFO_GET.OnMsg, sizeof(sTag.sTAGINFO_GET.OnMsg));
m_pDb->getFieldValue("AlarmState", sTag.sTAGINFO_GET.AlarmState, sizeof(sTag.sTAGINFO_GET.AlarmState));
sTag.sTAGINFO_GET.AlarmPri = m_pDb->getFieldInt("AlarmPri");
m_pDb->getFieldValue("AlarmComment" , sTag.sTAGINFO_GET.AlarmComment, sizeof(sTag.sTAGINFO_GET.AlarmComment));
sTag.sTAGINFO_GET.AlarmAckModel = m_pDb->getFieldInt("AlarmAckModel");
sTag.sTAGINFO_GET.DSCAlarmDisable = m_pDb->getFieldInt("DSCAlarmDisable");
m_pDb->getFieldValue("DSCAlarmInhibitor",sTag.sTAGINFO_GET.DSCAlarmInhibitor,sizeof(sTag.sTAGINFO_GET.DSCAlarmInhibitor));
m_pDb->getFieldValue("SymbolicName", sTag.sTAGINFO_GET.SymbolicName, sizeof(sTag.sTAGINFO_GET.SymbolicName));
m_pDb->getFieldValue("DConversion", sTag.sTAGINFO_GET.DConversion, sizeof(sTag.sTAGINFO_GET.DConversion));
m_pDb->getFieldValue("AccessName", sTag.sTAGINFO_GET.AccessName, sizeof(sTag.sTAGINFO_GET.AccessName));
m_pDb->getFieldValue("ItemUseTagname", sTag.sTAGINFO_GET.ItemUseTagname, sizeof
.............
............
질문 내용: DB ACCESS 에서 생성자쪽에서 연결시에 connectStatus() 이 가상함수 virtual bool connectStatus() = 0; 로 지정 되어 있습니다.. 이럴 경우 db access 소스를 어떻게 생성하면 되나요??
|