Files
coco df489d5640 a
2026-07-03 16:05:30 +08:00

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;
}