325 lines
8.0 KiB
C++
325 lines
8.0 KiB
C++
// TdRecord.cpp: implementation of the CTdRecord class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#include "geomative.h"
|
|
#include "TdRecord.h"
|
|
|
|
#include "disptdrecsplinesgrapdlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[]=__FILE__;
|
|
#define new DEBUG_NEW
|
|
#endif
|
|
|
|
extern void SplitterString(CStringArray &szArray,const CString& szSource, const CString& szSplitter);
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Construction/Destruction
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
CTdRecord::CTdRecord(_ConnectionPtr& pConnection)
|
|
{
|
|
m_pConnection = pConnection;
|
|
|
|
m_fMaxAbsV = 0.0;
|
|
}
|
|
|
|
CTdRecord::~CTdRecord()
|
|
{
|
|
this->m_saVRawData.RemoveAll();
|
|
this->m_saIRawData.RemoveAll();
|
|
}
|
|
|
|
BOOL CTdRecord::LoadCEOrgData()
|
|
{
|
|
float fValue = 0.0;
|
|
CString szValue = _T("");
|
|
|
|
CString szVRawData = _T("");
|
|
CString szIRawData = _T("");
|
|
|
|
CString szSql = _T("");
|
|
_RecordsetPtr pRecRawData = NULL;
|
|
|
|
int iIndex = (int)VAL_ZERO;
|
|
|
|
this->m_saVRawData.RemoveAll();
|
|
this->m_saIRawData.RemoveAll();
|
|
|
|
try
|
|
{
|
|
pRecRawData.CreateInstance(_uuidof(Recordset));
|
|
|
|
szSql.Empty();
|
|
// szSql.Format(_T("select Vrawdata,Irawdata from td1dcon where TCHID = %u and TSN = %d"), this->m_dwChID, this->m_iTsn);
|
|
szSql.Format(_T("select Vrawdata,Irawdata from td1dcon where TSN = %d and TCHID in (select id from tdchannel where tdid = %d)"), this->m_iTsn, this->m_dwChID);
|
|
// szSql.Format(_T("select IIf(IsNull(Vrawdata),'',Vrawdata) as Vrawdata,IIf(IsNull(Irawdata),'',Irawdata) as Irawdata from td1dcon where TCHID = %u and TSN = %d"), this->m_dwChID, this->m_iTsn);
|
|
pRecRawData->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
|
|
if (0 != pRecRawData->GetRecordCount())
|
|
{
|
|
szVRawData.Empty();
|
|
szVRawData = (LPCTSTR)(_bstr_t)pRecRawData->GetCollect(_T("Vrawdata"));
|
|
|
|
SplitterString(m_saVRawData, szVRawData, _T(";"));
|
|
|
|
iIndex = (int)VAL_ZERO;
|
|
while (iIndex < m_saVRawData.GetSize())
|
|
{
|
|
szValue.Empty();
|
|
szValue = m_saVRawData.GetAt(iIndex);
|
|
if (4 == iIndex)
|
|
{
|
|
szValue.TrimLeft(szValue.Left(5));
|
|
}
|
|
szValue.TrimLeft();
|
|
|
|
if (iIndex >= 4)
|
|
{
|
|
fValue = 0.0;
|
|
fValue = this->ConvertVOrgData((float)atof(szValue));
|
|
|
|
if (fabsf(fValue) > this->m_fMaxAbsV)
|
|
{
|
|
this->m_fMaxAbsV = fabsf(fValue);
|
|
}
|
|
|
|
szValue.Empty();
|
|
szValue.Format(_T("%.4f"), fValue);
|
|
}
|
|
|
|
m_saVRawData.SetAt(iIndex, szValue);
|
|
iIndex++;
|
|
}
|
|
|
|
szIRawData.Empty();
|
|
szIRawData = (LPCTSTR)(_bstr_t)pRecRawData->GetCollect(_T("Irawdata"));
|
|
|
|
SplitterString(m_saIRawData, szIRawData, _T(";"));
|
|
iIndex = (int)VAL_ZERO;
|
|
while (iIndex < m_saIRawData.GetSize())
|
|
{
|
|
szValue.Empty();
|
|
szValue = m_saIRawData.GetAt(iIndex);
|
|
if (4 == iIndex)
|
|
{
|
|
szValue.TrimLeft(szValue.Left(5));
|
|
}
|
|
szValue.TrimLeft();
|
|
m_saIRawData.SetAt(iIndex, szValue);
|
|
iIndex++;
|
|
}
|
|
}
|
|
pRecRawData->Close();
|
|
}
|
|
catch (_com_error e)
|
|
{
|
|
// AfxMessageBox(e.Description());
|
|
throw;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
BOOL CTdRecord::Load2DOrgData()
|
|
{
|
|
float fValue = 0.0;
|
|
CString szValue = _T("");
|
|
|
|
CString szVRawData = _T("");
|
|
CString szIRawData = _T("");
|
|
|
|
CString szSql = _T("");
|
|
_RecordsetPtr pRecRawData = NULL;
|
|
|
|
int iIndex = (int)VAL_ZERO;
|
|
|
|
this->m_saVRawData.RemoveAll();
|
|
this->m_saIRawData.RemoveAll();
|
|
|
|
try
|
|
{
|
|
pRecRawData.CreateInstance(_uuidof(Recordset));
|
|
|
|
szSql.Empty();
|
|
szSql.Format(_T("select Vrawdata,Irawdata from td2dcon where TSN = %d and TCHID in (select id from tdchannel where tdid = %d)"), this->m_iTsn, this->m_dwChID);
|
|
// szSql.Format(_T("select IIf(IsNull(Vrawdata),'',Vrawdata) as Vrawdata,IIf(IsNull(Irawdata),'',Irawdata) as Irawdata from td2dcon where TCHID = %u and TSN = %d"), this->m_dwChID, this->m_iTsn);
|
|
|
|
pRecRawData->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
|
|
if (0 != pRecRawData->GetRecordCount())
|
|
{
|
|
szVRawData.Empty();
|
|
szVRawData = (LPCTSTR)(_bstr_t)pRecRawData->GetCollect(_T("Vrawdata"));
|
|
|
|
SplitterString(m_saVRawData, szVRawData, _T(";"));
|
|
iIndex = (int)VAL_ZERO;
|
|
while (iIndex < m_saVRawData.GetSize())
|
|
{
|
|
szValue.Empty();
|
|
szValue = m_saVRawData.GetAt(iIndex);
|
|
if (4 == iIndex)
|
|
{
|
|
szValue.TrimLeft(szValue.Left(5));
|
|
}
|
|
szValue.TrimLeft();
|
|
|
|
if (iIndex >= 4)
|
|
{
|
|
fValue = 0.0;
|
|
fValue = this->ConvertVOrgData((float)atof(szValue));
|
|
|
|
if (fabsf(fValue) > this->m_fMaxAbsV)
|
|
{
|
|
this->m_fMaxAbsV = fabsf(fValue);
|
|
}
|
|
|
|
szValue.Empty();
|
|
szValue.Format(_T("%.4f"), fValue);
|
|
}
|
|
|
|
m_saVRawData.SetAt(iIndex, szValue);
|
|
iIndex++;
|
|
}
|
|
|
|
szIRawData.Empty();
|
|
szIRawData = (LPCTSTR)(_bstr_t)pRecRawData->GetCollect(_T("Irawdata"));
|
|
|
|
SplitterString(m_saIRawData, szIRawData, _T(";"));
|
|
iIndex = (int)VAL_ZERO;
|
|
while (iIndex < m_saIRawData.GetSize())
|
|
{
|
|
szValue.Empty();
|
|
szValue = m_saIRawData.GetAt(iIndex);
|
|
if (4 == iIndex)
|
|
{
|
|
szValue.TrimLeft(szValue.Left(5));
|
|
}
|
|
szValue.TrimLeft();
|
|
m_saIRawData.SetAt(iIndex, szValue);
|
|
iIndex++;
|
|
}
|
|
|
|
}
|
|
pRecRawData->Close();
|
|
}
|
|
catch (_com_error e)
|
|
{
|
|
// AfxMessageBox(e.Description());
|
|
throw;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
float CTdRecord::ConvertVOrgData(float fVOrgData)
|
|
{
|
|
return fVOrgData;
|
|
}
|
|
|
|
void CTdRecord::DisplayRawDataSplines()
|
|
{
|
|
LoadOrgData();
|
|
|
|
if ((int)VAL_ZERO != this->m_saVRawData.GetSize())
|
|
{
|
|
CDispTdRecSplinesGrapDlg* pDispTdRecSplinesGrapDlg = new CDispTdRecSplinesGrapDlg(this->m_saVRawData, this->m_fMaxAbsV);
|
|
pDispTdRecSplinesGrapDlg->DoModal();
|
|
delete pDispTdRecSplinesGrapDlg;
|
|
}
|
|
}
|
|
|
|
BOOL CTdRecord::Load3DOrgData()
|
|
{
|
|
float fValue = 0.0;
|
|
CString szValue = _T("");
|
|
|
|
CString szVRawData = _T("");
|
|
CString szIRawData = _T("");
|
|
|
|
CString szSql = _T("");
|
|
_RecordsetPtr pRecRawData = NULL;
|
|
|
|
int iIndex = (int)VAL_ZERO;
|
|
|
|
this->m_saVRawData.RemoveAll();
|
|
this->m_saIRawData.RemoveAll();
|
|
|
|
try
|
|
{
|
|
pRecRawData.CreateInstance(_uuidof(Recordset));
|
|
|
|
szSql.Empty();
|
|
// szSql.Format(_T("select Vrawdata,Irawdata from td3dcon where TCHID = %u and TSN = %d"), this->m_dwChID, this->m_iTsn);
|
|
szSql.Format(_T("select Vrawdata,Irawdata from td3dcon where TSN = %d and TCHID in (select id from tdchannel where tdid = %d)"), this->m_iTsn, this->m_dwChID);
|
|
// szSql.Format(_T("select IIf(IsNull(Vrawdata),'',Vrawdata) as Vrawdata,IIf(IsNull(Irawdata),'',Irawdata) as Irawdata from td2dcon where TCHID = %u and TSN = %d"), this->m_dwChID, this->m_iTsn);
|
|
|
|
pRecRawData->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
|
|
if (0 != pRecRawData->GetRecordCount())
|
|
{
|
|
szVRawData.Empty();
|
|
szVRawData = (LPCTSTR)(_bstr_t)pRecRawData->GetCollect(_T("Vrawdata"));
|
|
|
|
SplitterString(m_saVRawData, szVRawData, _T(";"));
|
|
iIndex = (int)VAL_ZERO;
|
|
while (iIndex < m_saVRawData.GetSize())
|
|
{
|
|
szValue.Empty();
|
|
szValue = m_saVRawData.GetAt(iIndex);
|
|
if (4 == iIndex)
|
|
{
|
|
szValue.TrimLeft(szValue.Left(5));
|
|
}
|
|
szValue.TrimLeft();
|
|
|
|
if (iIndex >= 4)
|
|
{
|
|
fValue = 0.0;
|
|
fValue = this->ConvertVOrgData((float)atof(szValue));
|
|
|
|
if (fabsf(fValue) > this->m_fMaxAbsV)
|
|
{
|
|
this->m_fMaxAbsV = fabsf(fValue);
|
|
}
|
|
|
|
szValue.Empty();
|
|
szValue.Format(_T("%.4f"), fValue);
|
|
}
|
|
|
|
m_saVRawData.SetAt(iIndex, szValue);
|
|
iIndex++;
|
|
}
|
|
|
|
szIRawData.Empty();
|
|
szIRawData = (LPCTSTR)(_bstr_t)pRecRawData->GetCollect(_T("Irawdata"));
|
|
|
|
SplitterString(m_saIRawData, szIRawData, _T(";"));
|
|
iIndex = (int)VAL_ZERO;
|
|
while (iIndex < m_saIRawData.GetSize())
|
|
{
|
|
szValue.Empty();
|
|
szValue = m_saIRawData.GetAt(iIndex);
|
|
if (4 == iIndex)
|
|
{
|
|
szValue.TrimLeft(szValue.Left(5));
|
|
}
|
|
szValue.TrimLeft();
|
|
m_saIRawData.SetAt(iIndex, szValue);
|
|
iIndex++;
|
|
}
|
|
|
|
}
|
|
pRecRawData->Close();
|
|
}
|
|
catch (_com_error e)
|
|
{
|
|
// AfxMessageBox(e.Description());
|
|
throw;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
float CTdRecord::GetMaxAbsV()
|
|
{
|
|
return m_fMaxAbsV;
|
|
}
|