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

3183 lines
110 KiB
C++

// Rsp3DTd.cpp: implementation of the CRsp3DTd class.
//
//////////////////////////////////////////////////////////////////////
#include "geomative.h"
#include "Rsp3DTd.h"
//
#include "Markup.h"
#include "TdChannel.h"
#include "optgddlg.h"
#include "SaveInRes.h"
#include "excel.h"
#include "OperTxtFile.h"
#include "InputElectrodeNumDlg.h"
#include "scriptor.h"
#include "OperUrfFile.h"
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
//
using namespace excel9;
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
extern int g_iLanguage;
extern BOOL GetSubStringInHeadAndTail(const CString& szSource, CString& szSub, const CString& szHead, const CString& szTail);
extern CString GetGrCodeText(int iCode);
extern int g_UIOffset;
extern int g_iUILanguage;
extern CGeoMativeApp theApp;
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
extern HHOOK hHook;
extern LRESULT __stdcall CBTHookProc(long nCode, WPARAM wParam, LPARAM lParam);
extern void SplitterString(CStringArray &szArray,const CString& szSource, const CString& szSplitter);
CRsp3DTd::CRsp3DTd(DWORD dwID, _ConnectionPtr& pConnection):CTestingData(dwID, pConnection)
{
}
CRsp3DTd::~CRsp3DTd()
{
ClearTdChaList();
}
/*
bool CRsp3DTd::ShowDetailInfo(CListCtrl &tdDetailList)
{
_RecordsetPtr pRecTd = NULL;
_RecordsetPtr pRecTdHead = NULL;
_RecordsetPtr pRecDev = NULL;
_RecordsetPtr pRecPara = NULL;
_RecordsetPtr pRecCm = NULL;
CString szSql;
CString szLabel;
int iRowIndex = (int)VAL_ZERO;
while (tdDetailList.GetItemCount() != iRowIndex)
{
tdDetailList.SetItemText(iRowIndex, 1, _T(""));
iRowIndex++;
}
pRecTd.CreateInstance(_uuidof(Recordset));
pRecTdHead.CreateInstance(_uuidof(Recordset));
pRecDev.CreateInstance(_uuidof(Recordset));
pRecPara.CreateInstance(_uuidof(Recordset));
pRecCm.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select ID,TDname,Tlocation,DESN,SCCN,Sname,Stype,Ttype,Tmode,Eamount,TPamount,CHamount,N,TRwave,TRfrequency,Ifrequency,SAfrequency,Clayout,Espace,Edistance,weather,WDIR,"
"temperature,height,humidity,Format(Cdate,'YYYY-MM-DD') as Cdate,Format(Ctime,'HH:MM:SS') as Ctime,Format(Tdate,'YYYY-MM-DD') as Tdate,Format(Ttime,'HH:MM:SS') as Ttime,"
"Rdirection,CRtime,IIf(IsNull(PM),'',PM) as PM,IIf(IsNull(OP),'',OP) as OP,IIf(IsNull(QA),'',QA) as QA from td where ID = %u"), m_dwID);
pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTd->GetRecordCount())
{
tdDetailList.SetItemText(0, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TDname")));
// tdDetailList.SetItemText(1, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Tlocation")));
tdDetailList.SetItemText(1, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("DESN")));
// tdDetailList.SetItemText(2, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("SCCN")));
tdDetailList.SetItemText(2, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Sname")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Stype' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("Stype")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Stype")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdDetailList.SetItemText(3, 1, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Ttype' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("Ttype")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Ttype")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdDetailList.SetItemText(4, 1, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Tmode' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("Tmode")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Tmode")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
// tdDetailList.SetItemText(6, 1, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdDetailList.SetItemText(5, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Eamount")));
tdDetailList.SetItemText(6, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TPamount")));
tdDetailList.SetItemText(7, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("CHamount")));
tdDetailList.SetItemText(8, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("N")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'TRwave' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("TRwave")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TRwave")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdDetailList.SetItemText(9, 1, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
if ((0 == pRecTd->GetCollect(_T("Ttype")).iVal) || (1 == pRecTd->GetCollect(_T("Ttype")).iVal))
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Trfrequency' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("Trfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Trfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdDetailList.SetItemText(10, 1, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
}
else if (2 == pRecTd->GetCollect(_T("Ttype")).iVal)
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Trfrequencyself' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("Trfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Trfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdDetailList.SetItemText(10, 1, pRecCm->GetCollect(_T("Clabel")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
}
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Ifrequency' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("Ifrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Ifrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdDetailList.SetItemText(11, 1, pRecCm->GetCollect(_T("Clabel")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
if (0 == pRecTd->GetCollect(_T("Ifrequency")).iVal)
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'SAfrequency50' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("SAfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("SAfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdDetailList.SetItemText(12, 1, pRecCm->GetCollect(_T("Clabel")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
}
else if (1 == pRecTd->GetCollect(_T("Ifrequency")).iVal)
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'SAfrequency60' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("SAfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("SAfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdDetailList.SetItemText(12, 1, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
}
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Clayout' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("Clayout")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Clayout")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdDetailList.SetItemText(13, 1, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
// tdDetailList.SetItemText(16, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Espace")));
tdDetailList.SetItemText(14, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Edistance")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'weather' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("weather")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("weather")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdDetailList.SetItemText(15, 1, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'WDIR' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("WDIR")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("WDIR")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdDetailList.SetItemText(16, 1, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
CString szDefault = _T("");
szDefault = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("temperature"));
if (szDefault == "-9999")//若为该值则不显示东西
{
szDefault = "";
}
tdDetailList.SetItemText(17, 1, szDefault);
tdDetailList.SetItemText(18, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("height")));
szDefault = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("humidity"));
if (szDefault == "-9999")//若为该值则不显示东西
{
szDefault = "";
}
tdDetailList.SetItemText(19, 1, szDefault);
tdDetailList.SetItemText(20, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Cdate")));
tdDetailList.SetItemText(21, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Ctime")));
tdDetailList.SetItemText(22, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Tdate")));
tdDetailList.SetItemText(23, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Ttime")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Rdirection' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("Rdirection")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Rdirection")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
// tdDetailList.SetItemText(27, 1, pRecCm->GetCollect(_T("Clabel")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
// tdDetailList.SetItemText(28, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("CRtime")));
tdDetailList.SetItemText(24, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("PM")));
tdDetailList.SetItemText(25, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("OP")));
tdDetailList.SetItemText(26, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("QA")));
}
pRecTd->Close();
return true;
}*/
bool CRsp3DTd::ShowConList(CListCtrl &tdConList)
{
_RecordsetPtr pRecConList = NULL;
CString szSql;
int iIndex = (int)VAL_ZERO;
pRecConList.CreateInstance(_uuidof(Recordset));
if (VAL_ZERO != tdConList.GetItemCount())
{
tdConList.DeleteAllItems();
}
szSql.Empty();
szSql.Format(_T("select top %d TSN,C1,C2,P1,P2,N,K,I,V,R0,SP,bUse from td3dcon where TCHID in (select ID from tdchannel where TDID = %u order by TCHID) order by TSN"), ONE_PAGE_DATA_NUMBER, m_dwID);
try
{
pRecConList->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
}
catch (_com_error e)
{
hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
AfxMessageBox((LPCTSTR)e.Description());
}
float fV = 0, fI = 0, fR = 0;
CString strDBVal = _T("");
while ((short)VAL_ZERO == pRecConList->adoEOF)
{
if (pRecConList->GetCollect(_T("bUse")).boolVal != 0)//0为access数据库中的false
{
tdConList.InsertItem(iIndex, (LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("C1")));
tdConList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("C2")));
tdConList.SetItemText(iIndex, 2, (LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("P1")));
tdConList.SetItemText(iIndex, 3, (LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("P2")));
tdConList.SetItemText(iIndex, 4, (LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("N")));
strDBVal.Empty();
strDBVal.Format(_T("%f"),(float)pRecConList->GetCollect(_T("K")).fltVal);
tdConList.SetItemText(iIndex, 5, strDBVal);
strDBVal.Empty();
strDBVal.Format(_T("%f"),(float)pRecConList->GetCollect(_T("I")).fltVal);
tdConList.SetItemText(iIndex, 6, strDBVal);
fI = (float)pRecConList->GetCollect(_T("I")).fltVal;
strDBVal.Empty();
strDBVal.Format(_T("%f"),(float)pRecConList->GetCollect(_T("V")).fltVal);
tdConList.SetItemText(iIndex, 7, strDBVal);
fV = (float)pRecConList->GetCollect(_T("V")).fltVal;
//添加R
fR = (0 == fI) ? 0 : fV/fI;
strDBVal.Empty();
strDBVal.Format(_T("%f"),fR);
tdConList.SetItemText(iIndex, 8, strDBVal);
strDBVal.Empty();
strDBVal.Format(_T("%f"),(float)pRecConList->GetCollect(_T("R0")).fltVal);
tdConList.SetItemText(iIndex, 9, strDBVal);
strDBVal.Empty();
strDBVal.Format(_T("%f"),(float)pRecConList->GetCollect(_T("SP")).fltVal);
tdConList.SetItemText(iIndex, 10, strDBVal);
tdConList.SetItemData(iIndex, (int)pRecConList->GetCollect(_T("TSN")).lVal);
iIndex++;
}
pRecConList->MoveNext();
}
pRecConList->Close();
return true;
}
bool CRsp3DTd::ShowGrList(CListCtrl &tdGrList)
{
_RecordsetPtr pRecGrList = NULL;
CString szSql = _T("");
CString szLabel = _T("");
int iIndex = (int)VAL_ZERO;
pRecGrList.CreateInstance(_uuidof(Recordset));
if ((int)VAL_ZERO != tdGrList.GetItemCount())
{
tdGrList.DeleteAllItems();
}
szSql.Empty();
szSql.Format(_T("select Ecode,Format(Mdate,'YYYY-MM-DD') as Mdate,Format(Mtime,'HH:MM:SS') as Mtime,OMvalue, OM1value,")
_T(" StatusCode, StatusCode1 from gr where TDID = %u order by Val(Ecode)"), m_dwID);
pRecGrList->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
int iOMVal = -1, iOMVal1 = -1;
CString strOMVal, strOMVal1;
CString strMdate, strMtime;
CString strStatus, strStatus1;
while ((short)VAL_ZERO == pRecGrList->adoEOF)
{
tdGrList.InsertItem(iIndex, (LPCTSTR)(_bstr_t)pRecGrList->GetCollect(_T("Ecode")));
strOMVal.Empty();
strOMVal1.Empty();
strMdate.Empty();
strMtime.Empty();
strStatus.Empty();
strStatus1.Empty();
iOMVal = (int)pRecGrList->GetCollect(_T("OMvalue")).lVal;
iOMVal1 = (int)pRecGrList->GetCollect(_T("OM1value")).lVal;
if (-1 != iOMVal)
{
strOMVal.Format(_T("%d"),iOMVal);
strMdate = (LPCTSTR)(_bstr_t)pRecGrList->GetCollect(_T("Mdate"));
strMtime = (LPCTSTR)(_bstr_t)pRecGrList->GetCollect(_T("Mtime"));
strStatus = GetGrCodeText((int)pRecGrList->GetCollect(_T("StatusCode")).lVal);
}
if (-1 != iOMVal1)
{
strOMVal1.Format(_T("%d"),iOMVal1);
strStatus1 = GetGrCodeText((int)pRecGrList->GetCollect(_T("StatusCode1")).lVal);
}
tdGrList.SetItemText(iIndex, 1, strOMVal);
tdGrList.SetItemText(iIndex, 2, strStatus);
tdGrList.SetItemText(iIndex, 3, strOMVal1);
tdGrList.SetItemText(iIndex, 4, strStatus1);
tdGrList.SetItemText(iIndex, 5, strMdate);
tdGrList.SetItemText(iIndex, 6, strMtime);
iIndex++;
pRecGrList->MoveNext();
}
pRecGrList->Close();
return true;
}
BOOL CRsp3DTd::Save3DRSPSetInfo(COpExec2DRSPTestSetDlg* const pOpExec2DRSPTestSetDlg, CLinkList<CMedium*>& m_medLinkList)
{
// hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
// AfxMessageBox("CRsp3DTd::Save3DRSPSetInfo");
return 0;
}
BOOL CRsp3DTd::SaveHeadInfoToFile(CString& szFilePath, CString& szFileName)
{
CMarkup xml;
CTdChannel* pTdChannel = NULL;
POSITION pos;
CString szCon = _T("");
CString szFile = _T("");
xml.SetDoc("<?xml version=\"1.0\" encoding=\"ansi\"?>\n");
xml.AddElem("measure");
xml.AddChildElem(_T("measure_name"), this->m_szTdName);
xml.AddChildElem(_T("measure_location"), this->m_szTLocation);
xml.AddChildElem(_T("measure_script_id"), this->m_szSCCN);
xml.AddChildElem(_T("measure_script_name"), this->m_szSName);
xml.AddChildElem(_T("measure_script_type"), 1);
xml.AddChildElem(_T("measure_type"), 0);
xml.AddChildElem(_T("measure_mode"), this->m_iTMode);
xml.AddChildElem(_T("medium_set"));
xml.IntoElem();
pos = this->m_tdChaList.GetHeadPosition();
while (pos != NULL)
{
pTdChannel = (CTdChannel*)m_tdChaList.GetNext(pos);
if(pTdChannel != NULL)
{
szCon.Empty();
szCon.Format(_T("%d:%d"), pTdChannel->m_iChNum, pTdChannel->m_pMedium->m_iAR);
xml.AddChildElem(_T("medium"), szCon);
}
}
xml.OutOfElem();
xml.AddChildElem(_T("pole_count"), this->m_iEAmount);
xml.AddChildElem(_T("pole_distance"), this->m_szEDistance);
szCon.Empty();
szCon.Format(_T("%.2f"), this->m_fESpace);
xml.AddChildElem(_T("pole_gap"), szCon);
xml.AddChildElem(_T("rect"), _T(""));
xml.AddChildElem(_T("rect_loc"), _T(""));
xml.AddChildElem(_T("wires_layout"), this->m_iCLayout);
xml.AddChildElem(_T("point_count"), this->m_iTPAmount);
xml.AddChildElem(_T("rolling_times"), 0);
xml.AddChildElem(_T("rolling_direction"), 0);
xml.AddChildElem(_T("rolling_step"), _T(""));
xml.AddChildElem(_T("channel_count"), this->m_iCHAmount);
xml.AddChildElem(_T("iterations"), 1);
xml.AddChildElem(_T("emit_source"), _T(""));
xml.AddChildElem(_T("wave_shape"), this->m_iTRWave);
xml.AddChildElem(_T("period"), this->m_iTRFrequency);
xml.AddChildElem(_T("industrial_frequency"), this->m_iIFrequency);
xml.AddChildElem(_T("sample_rate"), this->m_iSAFrequency);
xml.AddChildElem(_T("sample_interval"), _T(""));
xml.AddChildElem(_T("v_gain"), _T(""));
xml.AddChildElem(_T("i_gain"), _T(""));
szCon.Empty();
szCon.Format(_T("%.2f"), this->m_fTemperature);
xml.AddChildElem(_T("temperature"), szCon);
szCon.Empty();
szCon.Format(_T("%.2f"), this->m_fHeight);
xml.AddChildElem(_T("height"), szCon);
szCon.Empty();
szCon.Format(_T("%.2f"), this->m_fHumidity);
xml.AddChildElem(_T("humidity"), szCon);
xml.AddChildElem(_T("weather"), this->m_iWeather);
xml.AddChildElem(_T("wind_direction"), this->m_iWDIR);
xml.AddChildElem(_T("create_date"), this->m_szCDate);
xml.AddChildElem(_T("create_time"), this->m_szCTime);
xml.AddChildElem(_T("test_date"), this->m_szTDate);
xml.AddChildElem(_T("test_time"), this->m_szTTime);
xml.AddChildElem(_T("PM"), this->m_szPM);
xml.AddChildElem(_T("OP"), this->m_szOP);
xml.AddChildElem(_T("QA"), this->m_szQA);
xml.AddChildElem(_T("apparent_chargeability"));
//m0
xml.IntoElem();
xml.AddChildElem(_T("m0"));
xml.AddChildElem(_T("m1"));
xml.AddChildElem(_T("m2"));
xml.AddChildElem(_T("m3"));
xml.AddChildElem(_T("m4"));
xml.AddChildElem(_T("m5"));
xml.AddChildElem(_T("m6"));
xml.AddChildElem(_T("m7"));
xml.AddChildElem(_T("m8"));
xml.AddChildElem(_T("m9"));
xml.OutOfElem();
//m9
szFilePath.Empty();
szFilePath.GetBufferSetLength(2048);
::GetCurrentDirectory(2048, szFilePath.GetBuffer(szFilePath.GetLength()));
szFilePath.ReleaseBuffer();
szFilePath = szFilePath + "\\CACHE\\projects\\";
szFilePath += this->m_szPrCN + "\\" + this->m_szTzCN + "\\";
szFileName.Empty();
szFileName = this->m_szTdCN + _T(".xml");
szFile.Empty();
szFile = szFilePath + szFileName;
DeleteFile(szFile);
xml.Save(szFile);
return TRUE;
}
BOOL CRsp3DTd::SaveTdHeadToExcelFile(_Worksheet* const pComSheet)
{
Range comRange;
excel9::Font comFont;
Range comCols;
_RecordsetPtr pRecTd = NULL;
_RecordsetPtr pRecTdHead = NULL;
_RecordsetPtr pRecDev = NULL;
_RecordsetPtr pRecPara = NULL;
_RecordsetPtr pRecCm = NULL;
CString szSql;
CString szLabel;
int iRowIndex = (int)0;
pRecTd.CreateInstance(_uuidof(Recordset));
pRecTdHead.CreateInstance(_uuidof(Recordset));
pRecDev.CreateInstance(_uuidof(Recordset));
pRecPara.CreateInstance(_uuidof(Recordset));
pRecCm.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select ID,TDname,Tlocation,DESN,SCCN,Sname,Stype,Ttype,Tmode,Eamount,TPamount,CHamount,N,TRwave,TRfrequency,Ifrequency,SAfrequency,Clayout,Espace,Edistance,weather,WDIR,"
"temperature,height,humidity,Format(Cdate,'YYYY-MM-DD') as Cdate,Format(Ctime,'HH:MM:SS') as Ctime,Format(Tdate,'YYYY-MM-DD') as Tdate,Format(Ttime,'HH:MM:SS') as Ttime,"
"Rdirection,CRtime,IIf(IsNull(PM),'',PM) as PM,IIf(IsNull(OP),'',OP) as OP,IIf(IsNull(QA),'',QA) as QA from td where ID = %u"), m_dwID);
pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
CString strRowTitle;
if ((long)0 != pRecTd->GetRecordCount())
{
comRange = pComSheet->GetRange(COleVariant(_T("A1")),COleVariant(_T("A1")));
if (LANG_ZHCN == g_iUILanguage)
comRange.SetValue2(COleVariant(_T("测试任务名称")));
else
comRange.SetValue2(COleVariant(_T("Test data name")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
// comRange = pComSheet->GetRange(COleVariant(_T("A2")),COleVariant(_T("A2")));
// comRange.SetValue2(COleVariant(_T("Zone location")));
// comFont = comRange.GetFont();
// comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_DESN+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A2")),COleVariant(_T("A2")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
// comRange = pComSheet->GetRange(COleVariant(_T("A4")),COleVariant(_T("A4")));
// comRange.SetValue2(COleVariant(_T("Script ID")));
// comFont = comRange.GetFont();
// comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_SNAME+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A3")),COleVariant(_T("A3")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_STYPE+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A4")),COleVariant(_T("A4")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_TTYPE+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A5")),COleVariant(_T("A5")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_ARRAY_TYPE+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A6")),COleVariant(_T("A6")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
// comRange = pComSheet->GetRange(COleVariant(_T("A8")),COleVariant(_T("A8")));
// comRange.SetValue2(COleVariant(_T("Test mode")));
//
// comFont = comRange.GetFont();
// comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_EAMOUNT+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A7")),COleVariant(_T("A7")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_TPAMOUNT+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A8")),COleVariant(_T("A8")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_CHAMOUNT+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A9")),COleVariant(_T("A9")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_N+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A10")),COleVariant(_T("A10")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_TRWAVE+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A11")),COleVariant(_T("A11")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_TRFREQUENCY+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A12")),COleVariant(_T("A12")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_IFREQUENCY+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A13")),COleVariant(_T("A13")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
// comRange = pComSheet->GetRange(COleVariant(_T("A14")),COleVariant(_T("A14")));
// comRange.SetValue2(COleVariant(_T("Sample rate")));
//
// comFont = comRange.GetFont();
// comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_CLAYOUT+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A14")),COleVariant(_T("A14")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
// comRange = pComSheet->GetRange(COleVariant(_T("A18")),COleVariant(_T("A18")));
// comRange.SetValue2(COleVariant(_T("Electrode step")));
//
// comFont = comRange.GetFont();
// comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_EDISTANCE+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A15")),COleVariant(_T("A15")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_WEATHER+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A16")),COleVariant(_T("A16")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_WDIR+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A17")),COleVariant(_T("A17")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_TEMPERATURE+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A18")),COleVariant(_T("A18")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_HEIGHT+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A19")),COleVariant(_T("A19")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_HUMIDITY+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A20")),COleVariant(_T("A20")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_CDATE+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A21")),COleVariant(_T("A21")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_CTIME+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A22")),COleVariant(_T("A22")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_TDATE+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A23")),COleVariant(_T("A23")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_TTIME+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A24")),COleVariant(_T("A24")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
// comRange = pComSheet->GetRange(COleVariant(_T("A29")),COleVariant(_T("A29")));
// comRange.SetValue2(COleVariant(_T("Rolling direction")));
//
// comFont = comRange.GetFont();
// comFont.SetBold(COleVariant((short)TRUE));
// comRange = pComSheet->GetRange(COleVariant(_T("A30")),COleVariant(_T("A30")));
// comRange.SetValue2(COleVariant(_T("Rolling times")));
//
// comFont = comRange.GetFont();
// comFont.SetBold(COleVariant((short)TRUE));
// comRange = pComSheet->GetRange(COleVariant(_T("A26")),COleVariant(_T("A26")));
// comRange.SetValue2(COleVariant(_T("Project manager")));
// comFont = comRange.GetFont();
// comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_OP+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A25")),COleVariant(_T("A25")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
strRowTitle.Empty();
strRowTitle.LoadString(IDS_DB_TD_QA+g_UIOffset);
comRange = pComSheet->GetRange(COleVariant(_T("A26")),COleVariant(_T("A26")));
comRange.SetValue2(COleVariant(strRowTitle));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
comCols = comRange.GetEntireColumn();
comCols.AutoFit();
comRange = pComSheet->GetRange(COleVariant(_T("B1")),COleVariant(_T("B1")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TDname"))));
// comRange = pComSheet->GetRange(COleVariant(_T("B2")),COleVariant(_T("B2")));
// comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Tlocation"))));
comRange = pComSheet->GetRange(COleVariant(_T("B2")),COleVariant(_T("B2")));
comRange.SetValue2(COleVariant((pRecTd->GetCollect(_T("DESN")).vt == VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("DESN"))));
// comRange = pComSheet->GetRange(COleVariant(_T("B4")),COleVariant(_T("B4")));
// comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("SCCN"))));
comRange = pComSheet->GetRange(COleVariant(_T("B3")),COleVariant(_T("B3")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Sname"))));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Stype' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("Stype")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Stype")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)0 != pRecCm->GetRecordCount())
{
comRange = pComSheet->GetRange(COleVariant(_T("B4")),COleVariant(_T("B4")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel"))));
}
pRecCm->Close();
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Ttype' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("Ttype")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Ttype")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)0 != pRecCm->GetRecordCount())
{
comRange = pComSheet->GetRange(COleVariant(_T("B5")),COleVariant(_T("B5")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel"))));
}
pRecCm->Close();
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Tmode' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("Tmode")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Tmode")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)0 != pRecCm->GetRecordCount())
{
// comRange = pComSheet->GetRange(COleVariant(_T("B8")),COleVariant(_T("B8")));
// comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel"))));
}
pRecCm->Close();
///////////////////////////////////加入装置类型////////////////////////////
szSql.Empty();
szSql.Format(_T("select MEname from medium where LANG = %d and AR in (select AR from tdchannel where TDID = %d)"),
g_iLanguage, m_dwID);
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
comRange = pComSheet->GetRange(COleVariant(_T("B6")),COleVariant(_T("B6")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("MEname"))));
}
pRecCm->Close();
//////////////////////////////////////////////////////////////////////////
comRange = pComSheet->GetRange(COleVariant(_T("B7")),COleVariant(_T("B7")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Eamount"))));
comRange = pComSheet->GetRange(COleVariant(_T("B8")),COleVariant(_T("B8")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TPamount"))));
comRange = pComSheet->GetRange(COleVariant(_T("B9")),COleVariant(_T("B9")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("CHamount"))));
comRange = pComSheet->GetRange(COleVariant(_T("B10")),COleVariant(_T("B10")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("N"))));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'TRwave' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("TRwave")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TRwave")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)0 != pRecCm->GetRecordCount())
{
comRange = pComSheet->GetRange(COleVariant(_T("B11")),COleVariant(_T("B11")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel"))));
}
pRecCm->Close();
if ((0 == pRecTd->GetCollect(_T("Ttype")).iVal) || (1 == pRecTd->GetCollect(_T("Ttype")).iVal))
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Trfrequency' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("Trfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Trfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)0 != pRecCm->GetRecordCount())
{
comRange = pComSheet->GetRange(COleVariant(_T("B12")),COleVariant(_T("B12")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel"))));
}
pRecCm->Close();
}
else if (2 == pRecTd->GetCollect(_T("Ttype")).iVal)
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Trfrequencyself' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("Trfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Trfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)0 != pRecCm->GetRecordCount())
{
comRange = pComSheet->GetRange(COleVariant(_T("B12")),COleVariant(_T("B12")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel"))));
}
pRecCm->Close();
}
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Ifrequency' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("Ifrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Ifrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)0 != pRecCm->GetRecordCount())
{
comRange = pComSheet->GetRange(COleVariant(_T("B13")),COleVariant(_T("B13")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel"))));
}
pRecCm->Close();
// if (0 == pRecTd->GetCollect(_T("Ifrequency")).iVal)
// {
// szSql.Empty();
// szSql.Format(_T("select Clabel from cm where Cname = 'SAfrequency50' and Lang = %d and Cvalue = %s"),
// g_iLanguage, pRecTd->GetCollect(_T("SAfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("SAfrequency")));
// pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
// if ((long)0 != pRecCm->GetRecordCount())
// {
// comRange = pComSheet->GetRange(COleVariant(_T("B14")),COleVariant(_T("B14")));
// comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel"))));
// }
// pRecCm->Close();
// }
// else if (1 == pRecTd->GetCollect(_T("Ifrequency")).iVal)
// {
// szSql.Empty();
// szSql.Format(_T("select Clabel from cm where Cname = 'SAfrequency60' and Lang = %d and Cvalue = %s"),
// g_iLanguage, pRecTd->GetCollect(_T("SAfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("SAfrequency")));
// pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
// if ((long)0 != pRecCm->GetRecordCount())
// {
// comRange = pComSheet->GetRange(COleVariant(_T("B14")),COleVariant(_T("B14")));
// comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel"))));
// }
// pRecCm->Close();
// }
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Clayout' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("Clayout")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Clayout")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)0 != pRecCm->GetRecordCount())
{
comRange = pComSheet->GetRange(COleVariant(_T("B14")),COleVariant(_T("B14")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel"))));
}
pRecCm->Close();
// comRange = pComSheet->GetRange(COleVariant(_T("B18")),COleVariant(_T("B18")));
// comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Espace"))));
comRange = pComSheet->GetRange(COleVariant(_T("B15")),COleVariant(_T("B15")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Edistance"))));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'weather' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("weather")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("weather")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)0 != pRecCm->GetRecordCount())
{
comRange = pComSheet->GetRange(COleVariant(_T("B16")),COleVariant(_T("B16")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel"))));
}
pRecCm->Close();
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'WDIR' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("WDIR")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("WDIR")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)0 != pRecCm->GetRecordCount())
{
comRange = pComSheet->GetRange(COleVariant(_T("B17")),COleVariant(_T("B17")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel"))));
}
pRecCm->Close();
CString strTmp = _T("");
float fTmp = (pRecTd->GetCollect(_T("temperature")).vt == VT_NULL) ? -9999:(float)pRecTd->GetCollect(_T("temperature")).fltVal;
if (fTmp > -9000)
{
strTmp.Format(_T("%f"),fTmp);
}
comRange = pComSheet->GetRange(COleVariant(_T("B18")),COleVariant(_T("B18")));
comRange.SetValue2(COleVariant(strTmp));
comRange = pComSheet->GetRange(COleVariant(_T("B19")),COleVariant(_T("B19")));
comRange.SetValue2(COleVariant((pRecTd->GetCollect(_T("height")).vt == VT_NULL) ? _T(""):(LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("height"))));
strTmp.Empty();
fTmp = (pRecTd->GetCollect(_T("humidity")).vt == VT_NULL) ? -9999:(float)pRecTd->GetCollect(_T("humidity")).fltVal;
if (fTmp > -9000)
{
strTmp.Format(_T("%f"),fTmp);
}
comRange = pComSheet->GetRange(COleVariant(_T("B20")),COleVariant(_T("B20")));
comRange.SetValue2(COleVariant(strTmp));
comRange = pComSheet->GetRange(COleVariant(_T("B21")),COleVariant(_T("B21")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Cdate"))));
comRange = pComSheet->GetRange(COleVariant(_T("B22")),COleVariant(_T("B22")));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Ctime"))));
comRange = pComSheet->GetRange(COleVariant(_T("B23")),COleVariant(_T("B23")));
comRange.SetValue2(COleVariant((pRecTd->GetCollect(_T("Tdate")).vt == VT_NULL) ? _T(""):(LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Tdate"))));
comRange = pComSheet->GetRange(COleVariant(_T("B24")),COleVariant(_T("B24")));
comRange.SetValue2(COleVariant((pRecTd->GetCollect(_T("Ttime")).vt == VT_NULL) ? _T(""):(LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Ttime"))));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Rdirection' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTd->GetCollect(_T("Rdirection")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Rdirection")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)0 != pRecCm->GetRecordCount())
{
// comRange = pComSheet->GetRange(COleVariant(_T("B29")),COleVariant(_T("B29")));
// comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel"))));
}
pRecCm->Close();
// comRange = pComSheet->GetRange(COleVariant(_T("B30")),COleVariant(_T("B30")));
// comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("CRtime"))));
// comRange = pComSheet->GetRange(COleVariant(_T("B26")),COleVariant(_T("B26")));
// comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("PM"))));
comRange = pComSheet->GetRange(COleVariant(_T("B25")),COleVariant(_T("B25")));
comRange.SetValue2(COleVariant((pRecTd->GetCollect(_T("OP")).vt == VT_NULL) ? _T(""):(LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("OP"))));
comRange = pComSheet->GetRange(COleVariant(_T("B26")),COleVariant(_T("B26")));
comRange.SetValue2(COleVariant((pRecTd->GetCollect(_T("QA")).vt == VT_NULL) ? _T(""):(LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("QA"))));
comCols = comRange.GetEntireColumn();
comCols.AutoFit();
}
pRecTd->Close();
return TRUE;
}
BOOL CRsp3DTd::SaveTdConToExcelFile(_Worksheet* const pComSheet)
{
Range comRange;
excel9::Font comFont;
Range comCols;
_RecordsetPtr pRecConList = NULL;
_RecordsetPtr pRecTd = NULL;
pRecConList.CreateInstance(_uuidof(Recordset));
pRecTd.CreateInstance(_uuidof(Recordset));
CString szSql = _T("");
CString szRow = _T("");
int iIndex = (int)0;
iIndex = 1;
szRow.Empty();
szRow.Format(_T("A%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("A(x,y)")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
szRow.Empty();
szRow.Format(_T("B%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("B(x,y)")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
szRow.Empty();
szRow.Format(_T("C%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("M(x,y)")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
szRow.Empty();
szRow.Format(_T("D%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("N(x,y)")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
szRow.Empty();
szRow.Format(_T("E%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("Stacking")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
szRow.Empty();
szRow.Format(_T("F%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("K")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
szRow.Empty();
szRow.Format(_T("G%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("I(mA)")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
szRow.Empty();
szRow.Format(_T("H%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("V(mV)")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
szRow.Empty();
szRow.Format(_T("I%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("R(Ohm)")));
szRow.Empty();
szRow.Format(_T("J%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("R0")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
szRow.Empty();
szRow.Format(_T("K%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("SP")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
szRow.Empty();
szRow.Format(_T("L%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("R0_RD")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
_rect rectPole;
int iAR = 0;
int iXStep = 1,iYStep = 1;
int iRollDirection = 0;
float fABDistance = 0;
float fXPoleDistance = 0, fYPoleDistance = 0;
CString strPoleDistance = _T("");
try
{
CString szEspace = _T(""), szRect = _T("");
CString strErr = _T("");
szSql.Empty();
szSql.Format(_T("select a.Espace as Espace,a.Edistance as Edistance,a.rect as rect, a.Rdirection as Rdirection, b.AR as AR from td a, tdchannel b where a.ID = %u and a.ID = b.TDID and b.CHnumber = 1"), m_dwID);
pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO == pRecTd->GetRecordCount())
{
if (LANG_ZHCN == g_iUILanguage)
{
strErr.Format(_T("在数据库不能找到任务(%d)"), m_dwID);
AfxMessageBox(strErr);
}
else
{
strErr.Format(_T("Can not found task(%d) in Database"), m_dwID);
MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
pRecTd->Close();
return FALSE;
}
//获取步长间隔,装置类型以及矩阵的大小
szEspace = pRecTd->GetCollect(_T("Espace")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Espace"));
szRect = pRecTd->GetCollect(_T("rect")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("rect"));
iAR = pRecTd->GetCollect(_T("AR")).lVal;
iRollDirection = pRecTd->GetCollect(_T("Rdirection")).lVal;
strPoleDistance = pRecTd->GetCollect(_T("Edistance")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Edistance"));
pRecTd->Close();
//取出X Y方向的步长
int nId = szEspace.Find(',');
iXStep = atoi(szEspace.Left(nId));
fABDistance = atof(szEspace.Left(nId));
iYStep = atoi(szEspace.Right(szEspace.GetLength() - nId - 1));
CStringArray strArrRect;
strArrRect.RemoveAll();
SplitterString(strArrRect, szRect, _T(','));
if (4 != strArrRect.GetSize())
{
if (LANG_ZHCN == g_iUILanguage)
{
strErr.Format(_T("任务(%d)解析电极矩形信息错误"), m_dwID);
AfxMessageBox(strErr);
}
else
{
strErr.Format(_T("Parser pole rect information error in task(%d)"), m_dwID);
MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return FALSE;
}
rectPole.x0 = atoi(strArrRect.GetAt(0));
rectPole.y0 = atoi(strArrRect.GetAt(1));
rectPole.x1 = atoi(strArrRect.GetAt(2));
rectPole.y1 = atoi(strArrRect.GetAt(3));
//在中梯扫面中需要获取电极间距
if (AR_MID_GARDIENT_SCAN == iAR)
{
strArrRect.RemoveAll();
SplitterString(strArrRect, strPoleDistance, _T(","));
if (2 != strArrRect.GetSize())
{
if (LANG_ZHCN == g_iUILanguage)
{
strErr.Format(_T("任务(%d)解析电极间距信息错误"), m_dwID);
AfxMessageBox(strErr);
}
else
{
strErr.Format(_T("Parser pole distance information error in task(%d)"), m_dwID);
MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return FALSE;
}
fXPoleDistance = atof(strArrRect.GetAt(0));
fYPoleDistance = atof(strArrRect.GetAt(1));
iXStep = iYStep = 1;
}
szSql.Empty();
szSql.Format(_T("select C1,C2,P1,P2,N,K,I,V,R0,SP,bUse,R0_LC,M0_LC from td3dcon where TCHID in (select ID from tdchannel where TDID = %u order by TCHID) order by TSN"), m_dwID);
pRecConList->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
}
catch (_com_error e)
{
hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
AfxMessageBox((LPCTSTR)e.Description());
}
float fV = 0, fI = 0, fR = 0;
CString strText = _T("");
CStringArray strArrPolePos;
CString strPos;
//电极数组的位置依次分别为A,B,M,N
int iPoleIndex[4];
_pos posPole[4];
while ((short)0 == pRecConList->adoEOF)
{
if (pRecConList->GetCollect(_T("bUse")).boolVal != 0)//0为access数据库中的false
{
iIndex++;
iPoleIndex[0] = atoi((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("C1")));
iPoleIndex[1] = atoi((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("C2")));
iPoleIndex[2] = atoi((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("P1")));
iPoleIndex[3] = atoi((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("P2")));
strArrPolePos.RemoveAll();
for (int i = 0; i < 4; i++)
{
strPos.Empty();
//added by lsq 20161216
//根据祝工意见,只有中梯扫面装置在保存TXT的时候,保存的是物理信息位置坐标
//其他装置都还是保存逻辑位置坐标
if (EN_3D_SPT_MID_GARDIENT == iAR)
{
float fXPos = 0, fYPos = 0;
if (i < 2)
{
fXPos = i*fABDistance;
fYPos = 0;
}
else
{
pole_to_pos(&rectPole, 1, iXStep, iYStep, &(posPole[i]), iPoleIndex[i]);
float fXAxisOffset = (fABDistance - (rectPole.x1 - rectPole.x0)*fXPoleDistance)/2;
float fYAxisOffset = (rectPole.y1 - rectPole.y0) * fYPoleDistance/2;
fXPos = fXAxisOffset+(float)(posPole[i].x * fXPoleDistance);
fYPos = (float)(posPole[i].y * fYPoleDistance)-fYAxisOffset;
}
strPos.Format(_T("%.2f,%.2f"),fXPos, fYPos);
strArrPolePos.Add(strPos);
continue;
}
if (iPoleIndex[i] < 0)
{
strPos = _T("-1,-1");
strArrPolePos.Add(strPos);
continue;
}
//默认起始电极序号为1
if (EN_3D_SPT_POLE_POLE == iAR)
{
pole_to_pos_by_normal_axis(&rectPole, 1, iXStep, iYStep, &(posPole[i]), iPoleIndex[i]);
}
else
{
pole_to_pos(&rectPole, 1, iXStep, iYStep, &(posPole[i]), iPoleIndex[i]);
}
//如果是按照Y轴方向合并,则需要进行逻辑坐标轴的转换
//此时转换之需要颠倒X轴和Y轴的位置就好
if (2 == iRollDirection)
{
int iTmp = posPole[i].x;
posPole[i].x = posPole[i].y;
posPole[i].y = iTmp;
}
strPos.Format(_T("%d,%d"),posPole[i].x, posPole[i].y);
strArrPolePos.Add(strPos);
}
szRow.Empty();
szRow.Format(_T("A%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(strArrPolePos.GetAt(0)));
// comCols = comRange.GetEntireColumn();
// comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("B%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(strArrPolePos.GetAt(1)));
// comCols = comRange.GetEntireColumn();
// comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("C%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(strArrPolePos.GetAt(2)));
// comCols = comRange.GetEntireColumn();
// comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("D%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(strArrPolePos.GetAt(3)));
// comCols = comRange.GetEntireColumn();
// comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("E%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("N"))));
// comCols = comRange.GetEntireColumn();
// comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("F%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
strText.Empty();
strText.Format(_T("%f"),pRecConList->GetCollect(_T("K")).fltVal);
comRange.SetValue2(COleVariant(strText));
// comCols = comRange.GetEntireColumn();
// comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("G%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
strText.Empty();
strText.Format(_T("%f"), pRecConList->GetCollect(_T("I")).fltVal);
comRange.SetValue2(COleVariant(strText));
// comCols = comRange.GetEntireColumn();
// comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("H%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
strText.Empty();
strText.Format(_T("%f"), pRecConList->GetCollect(_T("V")).fltVal);
comRange.SetValue2(COleVariant(strText));
// comCols = comRange.GetEntireColumn();
// comCols.AutoFit();
//添加R
fV = (float)pRecConList->GetCollect(_T("V")).fltVal;
fI = (float)pRecConList->GetCollect(_T("I")).fltVal;
fR = (0 == fI) ? 0 : fV/fI;
strText.Empty();
strText.Format(_T("%f"),fR);
szRow.Empty();
szRow.Format(_T("I%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(strText));
szRow.Empty();
szRow.Format(_T("J%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
strText.Empty();
strText.Format(_T("%f"), pRecConList->GetCollect(_T("R0")).fltVal);
comRange.SetValue2(COleVariant(strText));
// comCols = comRange.GetEntireColumn();
// comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("K%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
strText.Empty();
strText.Format(_T("%f"), pRecConList->GetCollect(_T("SP")).fltVal);
comRange.SetValue2(COleVariant(strText));
szRow.Empty();
szRow.Format(_T("L%d"), iIndex);
strText.Empty();
strText.Format(_T("%f%%"), pRecConList->GetCollect(_T("R0_LC")).fltVal);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(strText));
// comCols = comRange.GetEntireColumn();
// comCols.AutoFit();
}
pRecConList->MoveNext();
}
pRecConList->Close();
return TRUE;
}
BOOL CRsp3DTd::ExportResDataToTxt(CString strFileName)
{
COperTxtFile operTxtFile;
if (!operTxtFile.OpenFileforWrite(strFileName))
{
return FALSE;
}
_RecordsetPtr pRecConList = NULL;
_RecordsetPtr pRecTd = NULL;
pRecConList.CreateInstance(_uuidof(Recordset));
pRecTd.CreateInstance(_uuidof(Recordset));
CString szSql = _T("");
CStringArray strArrTxt;
strArrTxt.RemoveAll();
strArrTxt.Add(_T("A(x,y)"));
strArrTxt.Add(_T("B(x,y)"));
strArrTxt.Add(_T("M(x,y)"));
strArrTxt.Add(_T("N(x,y)"));
strArrTxt.Add(_T("Stacking"));
strArrTxt.Add(_T("K"));
strArrTxt.Add(_T("V(mV)"));
strArrTxt.Add(_T("I(mA)"));
strArrTxt.Add(_T("R(Ohm)"));
strArrTxt.Add(_T("R0"));
strArrTxt.Add(_T("SP"));
strArrTxt.Add(_T("R0_RD"));
_rect rectPole;
int iAR = 0;
int iXStep = 1,iYStep = 1;
int iRollDirection = 0;
float fABDistance = 0;
float fXPoleDistance = 0, fYPoleDistance = 0;
CString strPoleDistance = _T("");
try
{
CString szEspace = _T(""), szRect = _T("");
CString strErr = _T("");
szSql.Empty();
szSql.Format(_T("select a.Espace as Espace,a.Edistance as Edistance,a.rect as rect, a.Rdirection as Rdirection, b.AR as AR from td a, tdchannel b where a.ID = %u and a.ID = b.TDID and b.CHnumber = 1"), m_dwID);
pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO == pRecTd->GetRecordCount())
{
if (LANG_ZHCN == g_iUILanguage)
{
strErr.Format(_T("在数据库不能找到任务(%d)"), m_dwID);
AfxMessageBox(strErr);
}
else
{
strErr.Format(_T("Can not found task(%d) in Database"), m_dwID);
MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
pRecTd->Close();
return FALSE;
}
//获取步长间隔,装置类型以及矩阵的大小
szEspace = pRecTd->GetCollect(_T("Espace")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Espace"));
szRect = pRecTd->GetCollect(_T("rect")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("rect"));
iAR = pRecTd->GetCollect(_T("AR")).lVal;
iRollDirection = pRecTd->GetCollect(_T("Rdirection")).lVal;
strPoleDistance = pRecTd->GetCollect(_T("Edistance")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Edistance"));
pRecTd->Close();
//取出X Y方向的步长
int nId = szEspace.Find(',');
if (-1 != nId)
{
iXStep = atoi(szEspace.Left(nId));
fABDistance = atof(szEspace.Left(nId));
iYStep = atoi(szEspace.Right(szEspace.GetLength() - nId - 1));
CStringArray strArrRect;
strArrRect.RemoveAll();
SplitterString(strArrRect, szRect, _T(','));
if (4 != strArrRect.GetSize())
{
if (LANG_ZHCN == g_iUILanguage)
{
strErr.Format(_T("任务(%d)解析电极矩形信息错误"), m_dwID);
AfxMessageBox(strErr);
}
else
{
strErr.Format(_T("Parser pole rect information error in task(%d)"), m_dwID);
MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return FALSE;
}
rectPole.x0 = atoi(strArrRect.GetAt(0));
rectPole.y0 = atoi(strArrRect.GetAt(1));
rectPole.x1 = atoi(strArrRect.GetAt(2));
rectPole.y1 = atoi(strArrRect.GetAt(3));
//在中梯扫面中需要获取电极间距
if (AR_MID_GARDIENT_SCAN == iAR)
{
strArrRect.RemoveAll();
SplitterString(strArrRect, strPoleDistance, _T(","));
if (2 != strArrRect.GetSize())
{
if (LANG_ZHCN == g_iUILanguage)
{
strErr.Format(_T("任务(%d)解析电极间距信息错误"), m_dwID);
AfxMessageBox(strErr);
}
else
{
strErr.Format(_T("Parser pole distance information error in task(%d)"), m_dwID);
MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return FALSE;
}
fXPoleDistance = atof(strArrRect.GetAt(0));
fYPoleDistance = atof(strArrRect.GetAt(1));
iXStep = iYStep = 1;
}
}
szSql.Empty();
szSql.Format(_T("select C1,C2,P1,P2,N,K,I,V,R0,SP,bUse,R0_LC,M0_LC from td3dcon where TCHID in (select ID from tdchannel where TDID = %u order by TCHID) order by TSN"), m_dwID);
pRecConList->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
}
catch (_com_error e)
{
hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
AfxMessageBox((LPCTSTR)e.Description());
operTxtFile.CloseFile();
return FALSE;
}
if (!operTxtFile.WriteFileContent(strArrTxt))
{
operTxtFile.CloseFile();
return FALSE;
}
CString strText = _T("");
CString strPos;
//电极数组的位置依次分别为A,B,M,N
int iPoleIndex[4];
_pos posPole[4];
float fV = 0, fI = 0, fR = 0;
while ((short)0 == pRecConList->adoEOF)
{
if (pRecConList->GetCollect(_T("bUse")).boolVal != 0)//0为access数据库中的false
{
strArrTxt.RemoveAll();
if (AR_CROSS_HOLE_GEOMATIVE_AM != iAR)
{
iPoleIndex[0] = atoi((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("C1")));
iPoleIndex[1] = atoi((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("C2")));
iPoleIndex[2] = atoi((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("P1")));
iPoleIndex[3] = atoi((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("P2")));
for (int i = 0; i < 4; i++)
{
strPos.Empty();
//added by lsq 20161025
//根据祝工意见,只有中梯扫面装置在保存TXT的时候,保存的是物理信息位置坐标
//其他装置都还是保存逻辑位置坐标
if (EN_3D_SPT_MID_GARDIENT == iAR)
{
float fXPos = 0, fYPos = 0;
if (i < 2)
{
fXPos = i*fABDistance;
fYPos = 0;
}
else
{
pole_to_pos(&rectPole, 1, iXStep, iYStep, &(posPole[i]), iPoleIndex[i]);
float fXAxisOffset = (fABDistance - (rectPole.x1 - rectPole.x0)*fXPoleDistance) / 2;
float fYAxisOffset = (rectPole.y1 - rectPole.y0) * fYPoleDistance / 2;
fXPos = fXAxisOffset + (float)(posPole[i].x * fXPoleDistance);
fYPos = (float)(posPole[i].y * fYPoleDistance) - fYAxisOffset;
}
strPos.Format(_T("%.2f,%.2f"), fXPos, fYPos);
strArrTxt.Add(strPos);
continue;
}
if (iPoleIndex[i] < 0)
{
strPos = _T("-1,-1");
strArrTxt.Add(strPos);
continue;
}
//默认起始电极序号为1
if (EN_3D_SPT_POLE_POLE == iAR)
{
pole_to_pos_by_normal_axis(&rectPole, 1, iXStep, iYStep, &(posPole[i]), iPoleIndex[i]);
}
else
{
pole_to_pos(&rectPole, 1, iXStep, iYStep, &(posPole[i]), iPoleIndex[i]);
}
if (2 == iRollDirection)
{
int iTmp = posPole[i].x;
posPole[i].x = posPole[i].y;
posPole[i].y = iTmp;
}
strPos.Format(_T("%d,%d"), posPole[i].x, posPole[i].y);
strArrTxt.Add(strPos);
}
}
else
{
strArrTxt.Add((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("C1")));
strArrTxt.Add((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("C2")));
strArrTxt.Add((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("P1")));
strArrTxt.Add((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("P2")));
}
// strArrTxt.Add((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("C1")));
// strArrTxt.Add((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("C2")));
// strArrTxt.Add((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("P1")));
// strArrTxt.Add((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("P2")));
strArrTxt.Add((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("N")));
strText.Empty();
strText.Format(_T("%f"),pRecConList->GetCollect(_T("K")).fltVal);
strArrTxt.Add(strText);
strText.Empty();
strText.Format(_T("%f"),pRecConList->GetCollect(_T("V")).fltVal);
strArrTxt.Add(strText);
strText.Empty();
strText.Format(_T("%f"),pRecConList->GetCollect(_T("I")).fltVal);
strArrTxt.Add(strText);
//添加R
fV = (float)pRecConList->GetCollect(_T("V")).fltVal;
fI = (float)pRecConList->GetCollect(_T("I")).fltVal;
fR = (0 == fI) ? 0 : fV/fI;
strText.Empty();
strText.Format(_T("%f"),fR);
strArrTxt.Add(strText);
strText.Empty();
strText.Format(_T("%f"),pRecConList->GetCollect(_T("R0")).fltVal);
strArrTxt.Add(strText);
strText.Empty();
strText.Format(_T("%f"),pRecConList->GetCollect(_T("SP")).fltVal);
strArrTxt.Add(strText);
strText.Empty();
strText.Format(_T("%f%%"),pRecConList->GetCollect(_T("R0_LC")).fltVal);
strArrTxt.Add(strText);
if (!operTxtFile.WriteFileContent(strArrTxt))
{
operTxtFile.CloseFile();
return FALSE;
}
}
pRecConList->MoveNext();
}
pRecConList->Close();
operTxtFile.CloseFile();
return TRUE;
}
BOOL CRsp3DTd::SaveTdGRToExcelFile(_Worksheet* const pComSheet)
{
Range comRange;
excel9::Font comFont;
Range comCols;
_RecordsetPtr pRecGrList = NULL;
CString szSql = _T("");
CString szRow = _T("");
int iIndex = (int)0;
iIndex = 1;
szRow.Empty();
szRow.Format(_T("A%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("Electrode ID")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
comCols = comRange.GetEntireColumn();
comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("B%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("Test date")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
comCols = comRange.GetEntireColumn();
comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("C%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("Test time")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
comCols = comRange.GetEntireColumn();
comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("D%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("P1 Rg(Ω)")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
comCols = comRange.GetEntireColumn();
comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("E%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("Status")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
comCols = comRange.GetEntireColumn();
comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("F%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("P2 Rg(Ω)")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
comCols = comRange.GetEntireColumn();
comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("G%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(_T("Status")));
comFont = comRange.GetFont();
comFont.SetBold(COleVariant((short)TRUE));
comCols = comRange.GetEntireColumn();
comCols.AutoFit();
pRecGrList.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select Ecode,Format(Mdate,'YYYY-MM-DD') as Mdate,Format(Mtime,'HH:MM:SS') as Mtime,OMvalue, OM1value,")
_T(" StatusCode, StatusCode1 from gr where TDID = %u order by Val(Ecode)"), m_dwID);
pRecGrList->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
int iOMVal = -1, iOMVal1 = -1;
CString strOMVal, strOMVal1;
CString strMdate, strMtime;
CString strStatus, strStatus1;
while ((short)0 == pRecGrList->adoEOF)
{
iIndex++;
szRow.Empty();
szRow.Format(_T("A%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecGrList->GetCollect(_T("Ecode"))));
strOMVal.Empty();
strOMVal1.Empty();
strMdate.Empty();
strMtime.Empty();
strStatus.Empty();
strStatus1.Empty();
iOMVal = (int)pRecGrList->GetCollect(_T("OMvalue")).lVal;
iOMVal1 = (int)pRecGrList->GetCollect(_T("OM1value")).lVal;
if (-1 != iOMVal)
{
strOMVal.Format(_T("%d"),iOMVal);
strMdate = (LPCTSTR)(_bstr_t)pRecGrList->GetCollect(_T("Mdate"));
strMtime = (LPCTSTR)(_bstr_t)pRecGrList->GetCollect(_T("Mtime"));
strStatus = GetGrCodeText((int)pRecGrList->GetCollect(_T("StatusCode")).lVal);
}
if (-1 != iOMVal1)
{
strOMVal1.Format(_T("%d"),iOMVal1);
strStatus1 = GetGrCodeText((int)pRecGrList->GetCollect(_T("StatusCode1")).lVal);
}
// comCols = comRange.GetEntireColumn();
// comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("B%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(strMdate));
// comCols = comRange.GetEntireColumn();
// comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("C%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(strMtime));
// comCols = comRange.GetEntireColumn();
// comCols.AutoFit();
szRow.Empty();
szRow.Format(_T("D%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(strOMVal));
szRow.Empty();
szRow.Format(_T("E%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(strStatus));
szRow.Empty();
szRow.Format(_T("F%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(strOMVal1));
szRow.Empty();
szRow.Format(_T("G%d"), iIndex);
comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow));
comRange.SetValue2(COleVariant(strStatus1));
// comCols = comRange.GetEntireColumn();
// comCols.AutoFit();
pRecGrList->MoveNext();
}
pRecGrList->Close();
return TRUE;
}
BOOL CRsp3DTd::ExportDataToUrf(CString strFileName)
{
strFileName.TrimLeft();
COperUrfFile operUrfFile;
if (!operUrfFile.OpenUrfFileForWrite(strFileName))
{
return FALSE;
}
operUrfFile.Write3DUrfHeadInfo();
_RecordsetPtr pRecConList = NULL;
_RecordsetPtr pRecTd = NULL;
pRecConList.CreateInstance(_uuidof(Recordset));
pRecTd.CreateInstance(_uuidof(Recordset));
CString szSql = _T("");
try
{
szSql.Format(_T("select StartElec,EndElec,Eamount,Edistance,AR,SCCN,TDCN,LineDirection,rect from td a, tdchannel b where a.ID = %u and a.ID = b.TDID and b.CHnumber=1"), this->m_dwID);
pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if (pRecTd->GetRecordCount() < 1)
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("查询任务信息失败"));
else
MessageBoxEx(NULL, _T("Query task information failed"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
operUrfFile.CloseFile();
pRecTd->Close();
return FALSE;
}
int iTaskAR = (pRecTd->GetCollect(_T("AR")).vt == VT_NULL) ? 0 : pRecTd->GetCollect(_T("AR")).iVal;
int iStartElec = (pRecTd->GetCollect(_T("StartElec")).vt == VT_NULL) ? 0 : pRecTd->GetCollect(_T("StartElec")).lVal;
int iEndElec = (pRecTd->GetCollect(_T("EndElec")).vt == VT_NULL) ? 0 : pRecTd->GetCollect(_T("EndElec")).lVal;
CString strSCCN = (pRecTd->GetCollect(_T("SCCN")).vt == VT_NULL) ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("SCCN"));
CString strTDCN = (pRecTd->GetCollect(_T("TDCN")).vt == VT_NULL) ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TDCN"));
byte byLineDirection = (pRecTd->GetCollect(_T("LineDirection")).vt == VT_NULL) ? 0 : pRecTd->GetCollect(_T("LineDirection")).bVal;
CString strRect = (pRecTd->GetCollect(_T("rect")).vt == VT_NULL) ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("rect"));
STCorssHoleCfgInfo stCroHoleInfo;
int iLeftHole = 0, iRightHole = 0;
int iExpType = 39;//任务导出类型,默认按照温-斯装置导
if ((AR_CUSTOM_2D_TYPE == iTaskAR) && m_bIsCustomToCrossHole)
{
CString strName = PathFindFileName(strFileName);
CStringArray strArrKey;
strArrKey.RemoveAll();
SplitterString(strArrKey, strName, "_");
if (strArrKey.GetSize() < 2)
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("解析文件名中的孔信息失败"));
else
MessageBoxEx(NULL, _T("Parser the hole information in the file name failed."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return FALSE;
}
iLeftHole = atoi(strArrKey.GetAt(0));
iRightHole = atoi(strArrKey.GetAt(1));
CString strKey = "";
strKey.Format(_T("%d_%d"), iLeftHole, iRightHole);
std::map<CString, STCorssHoleCfgInfo>::iterator iter = theApp.m_mapCrossHole.find(strKey);
if (iter == theApp.m_mapCrossHole.end())
{
CString strErr = "";
strErr.Format(_T("can not found key(%s) when export customer task to urf."), strKey);
pRecTd->Close();
operUrfFile.CloseFile();
return FALSE;
}
stCroHoleInfo = iter->second;
iExpType = AR_CUSTOM_2D_TYPE;
operUrfFile.SetExtParam(stCroHoleInfo.fFirstPoleDep);
}
CString strTxt = (pRecTd->GetCollect(_T("Edistance")).vt == VT_NULL) ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Edistance"));
int iEamount = (pRecTd->GetCollect(_T("Eamount")).vt == VT_NULL) ? 0 : pRecTd->GetCollect(_T("Eamount")).iVal;
pRecTd->Close();
if (AR_CROSS_HOLE_GEOMATIVE != iTaskAR && AR_CROSS_HOLE_GEOMATIVE_AM != iTaskAR)
{
if (strTxt.IsEmpty() || iEamount == 0)
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("查询Eamount或Edistance错误"));
else
MessageBoxEx(NULL, _T("Query Eamount or Edistance error"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
operUrfFile.CloseFile();
return FALSE;
}
}
float fParamVal = (AR_CUSTOM_2D_TYPE == iTaskAR) ? stCroHoleInfo.fHoleSpace : 0;
if (AR_CROSS_HOLE_TYPE == iTaskAR)//quyx 20181010
{
iExpType = 40;
CStringArray strArrKey;
strArrKey.RemoveAll();
SplitterString(strArrKey, strTxt, ",");
if (strArrKey.GetSize() >= 2)
{
fParamVal = atof(strArrKey.GetAt(1));
}
}
//跨孔不需要
float fXEdistance, fYEdistance;
int iXElecCount = 0, iYElecCount = 0;
if (!(AR_CROSS_HOLE_GEOMATIVE == iTaskAR || AR_CROSS_HOLE_GEOMATIVE_AM == iTaskAR))
{
//解析td表中Edistance
CStringArray strArrKey;
strArrKey.RemoveAll();
SplitterString(strArrKey, strTxt, ",");
if (strArrKey.GetSize() >= 2)
{
fXEdistance = atof(strArrKey.GetAt(0));
fYEdistance = atof(strArrKey.GetAt(1));
}
else
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("Edistance格式错误"));
else
MessageBoxEx(NULL, _T("Edistance format error"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return FALSE;
}
//解析td表中rect
strArrKey.RemoveAll();
SplitterString(strArrKey, strRect, ",");
if (strArrKey.GetSize() >= 4)
{
iXElecCount = atoi(strArrKey.GetAt(2));
iYElecCount = atoi(strArrKey.GetAt(3));
}
else
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("rect格式错误"));
else
MessageBoxEx(NULL, _T("Rect format error"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return FALSE;
}
if (iEamount != (iXElecCount + 1)*(iYElecCount + 1))
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("电极总数不对"));
else
MessageBoxEx(NULL, _T("Total number of electrodes is wrong"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return FALSE;
}
}
switch (iTaskAR)
{
case AR_POLE_POLE_AM_3D:
case AR_POLE_DIPOLE_AMN_3D:
case AR_DIPOLE_DIPOLE_MNB_3D:
{
iExpType = iTaskAR;
if (!operUrfFile.WriteUrfPoleInfo_3D(iExpType, byLineDirection, iXElecCount + 1, iYElecCount + 1, fXEdistance, fYEdistance, iStartElec, iEndElec))
{
operUrfFile.CloseFile();
return FALSE;
}
}
break;
case AR_WENNER_ALFA_3D:
case AR_WENNER_BETA_3D:
case AR_SCHLUMBERGER_3D:
case AR_GRADIENT_3D:
case AR_MID_GRADIENT_SCAN_3D:
{
//重新定义三维导出方式
iExpType = AR_SCHLUMBERGER_3D;
if (!operUrfFile.WriteUrfPoleInfo_3D(iExpType, byLineDirection, iXElecCount + 1, iYElecCount + 1, fXEdistance, fYEdistance, iStartElec, iEndElec))
{
operUrfFile.CloseFile();
return FALSE;
}
}
break;
//填埋场为Z序,但是目前不需支持urf格式导出
case AR_LAND_FILL_ONE_3D:
case AR_LAND_FILL_TWO_3D:
break;
case AR_CROSS_HOLE_GEOMATIVE:
case AR_CROSS_HOLE_GEOMATIVE_AM:
{
iExpType = iTaskAR;//Cross-Hole(Geomative)按自己的方式导出
//跨孔的直接传脚本的CN
//三维的任务暂时用二维的导出方式
if (strSCCN.IsEmpty())
{
szSql.Empty();
szSql.Format(_T("select Eamount,Edistance,SCCN,TDCN from td where TDCN='%s'"), strTDCN);
pRecConList->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
while ((short)0 == pRecConList->adoEOF)
{
strSCCN = (pRecConList->GetCollect(_T("SCCN")).vt == VT_NULL) ? _T("") : (LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("SCCN"));
if (!strSCCN.IsEmpty())
{
break;
}
pRecConList->MoveNext();
}
pRecConList->Close();
}
if (strSCCN.IsEmpty() && strTDCN.IsEmpty())
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("没有找到脚本信息和任务ID"));
else
MessageBoxEx(NULL, _T("No script and taskid information was found"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return FALSE;
}
if (!operUrfFile.WriteUrfPoleInfo(iExpType, iEamount, atof(strTxt), fParamVal, iStartElec, iEndElec, strSCCN, strTDCN))
{
operUrfFile.CloseFile();
return FALSE;
}
}
break;
default:
break;
}
if (AR_CROSS_HOLE_TYPE == iTaskAR) { iExpType = 39; }//quyx 20181010
szSql.Empty();
szSql.Format(_T("select C1,C2,P1,P2,N,K,I,V,R0,SP,bUse from td3dcon where TCHID in (select ID from tdchannel where TDID = %u order by TCHID) order by TSN"), m_dwID);
pRecConList->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
float fV = 0, fI = 0, fR = 0;
int iC1 = 0, iC2 = 0, iP1 = 0, iP2 = 0;
int iMidEAmount = iEamount / 2;
int iLFlag, iRFlag;
while ((short)0 == pRecConList->adoEOF)
{
if (pRecConList->GetCollect(_T("bUse")).boolVal != 0)//0为access数据库中的false
{
iC1 = pRecConList->GetCollect(_T("C1")).iVal;
iC2 = pRecConList->GetCollect(_T("C2")).iVal;
iP1 = pRecConList->GetCollect(_T("P1")).iVal;
iP2 = pRecConList->GetCollect(_T("P2")).iVal;
if ((AR_CUSTOM_2D_TYPE == iTaskAR) && m_bIsCustomToCrossHole)
{
if (iLeftHole <= iRightHole)
{
iLFlag = 0;
iRFlag = 1;
}
else
{
iLFlag = 1;
iRFlag = 0;
}
iC1 = CalcuCrossHolePoleID(iC1, iLeftHole, iLFlag, iMidEAmount);
iC2 = CalcuCrossHolePoleID(iC2, iRightHole, iRFlag, iMidEAmount);
iP1 = CalcuCrossHolePoleID(iP1, iLeftHole, iLFlag, iMidEAmount);
iP2 = CalcuCrossHolePoleID(iP2, iRightHole, iRFlag, iMidEAmount);
}
fV = (float)pRecConList->GetCollect(_T("V")).fltVal;
fI = (float)pRecConList->GetCollect(_T("I")).fltVal;
fR = (0 == fI) ? 0 : fV / fI;
strTxt.Empty();
switch (iTaskAR)
{
case AR_DIPOLE_POLE_MNB:
strTxt.Format(_T("%d,%d,%d,%d,%.6f,%.6f\n"), 1, iC2 + 1, iP1 + 1, iP2 + 1, fR, fI);
break;
case AR_POLE_DIPOLE_AMN:
strTxt.Format(_T("%d,%d,%d,%d,%.6f,%.6f\n"), iC1, iEamount + 1, iP1, iP2, fR, fI);
break;
case AR_POLE_POLE_AM:
case AR_CROSS_HOLE_GEOMATIVE_AM:
strTxt.Format(_T("%d,%d,%d,%d,%.6f,%.6f\n"), iC1 + 1, 1, iP1 + 1, iEamount + 2, fR, fI);
break;
default:
strTxt.Format(_T("%d,%d,%d,%d,%.6f,%.6f\n"), iC1, iC2, iP1, iP2, fR, fI);
break;
}
if (!operUrfFile.WriteUrfDataInfo(strTxt))
{
pRecConList->Close();
operUrfFile.CloseFile();
return FALSE;
}
}
pRecConList->MoveNext();
}
return TRUE;
}
catch (_com_error e)
{
hHook = SetWindowsHookEx(WH_CBT, (HOOKPROC)CBTHookProc, AfxGetInstanceHandle(), NULL);
AfxMessageBox((LPCTSTR)e.Description());
operUrfFile.CloseFile();
return FALSE;
}
}
BOOL CRsp3DTd::SaveTdToExcelFile(CString f_szFileName)
{
if (PathFileExists(f_szFileName))
{
if (0 == DeleteFile(f_szFileName))
return FALSE;
}
//首先判断是不是中梯扫面
_RecordsetPtr pRecTd = NULL;
pRecTd.CreateInstance(_uuidof(Recordset));
int iAR = 0;
CString szSql = _T(""), strErr = _T("");
szSql.Empty();
szSql.Format(_T("select AR from tdchannel where TDID = %u and CHnumber = 1"), m_dwID);
pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO == pRecTd->GetRecordCount())
{
if (LANG_ZHCN == g_iUILanguage)
{
strErr.Format(_T("在数据库不能找到任务(%d)"), m_dwID);
AfxMessageBox(strErr);
}
else
{
strErr.Format(_T("Can not found task(%d) in Database"), m_dwID);
MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
pRecTd->Close();
return FALSE;
}
iAR = pRecTd->GetCollect(_T("AR")).iVal;
pRecTd->Close();
// if (AR_MID_GARDIENT_SCAN == iAR)
// {
// if (LANG_ZHCN == g_iUILanguage)
// AfxMessageBox(_T("中梯扫面装置不支持导出成excel文件."));
// else
// AfxMessageBox(_T("Mid-Gardient-Scan medium was not supported to excel files."));
// return TRUE;
// }
_Application* pComApp = new _Application;
Workbooks comBooks;
_Workbook comBook;
Sheets comSheets;
_Worksheet comSheet01;
_Worksheet comSheet02;
_Worksheet comSheet03;
COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);
// CString szCurFilePath = _T("");
// CString szCurFile = _T("");
//
// CFileDialog dlgSaveFile(FALSE, "xlsx", "", OFN_OVERWRITEPROMPT|OFN_HIDEREADONLY|OFN_NOCHANGEDIR, "Excel file(*.xlsx)|*.xlsx||", NULL);
//
// szCurFilePath.Empty();
// szCurFilePath.GetBufferSetLength(256);
// ::GetCurrentDirectory(szCurFilePath.GetLength(), szCurFilePath.GetBuffer(szCurFilePath.GetLength()));
// szCurFilePath.ReleaseBuffer();
//
// dlgSaveFile.m_ofn.lpstrTitle = _T("Save");
// dlgSaveFile.m_ofn.lpstrInitialDir = szCurFilePath;
//
// if (dlgSaveFile.DoModal() == IDOK)
// {
// szCurFile.Empty();
// szCurFile = dlgSaveFile.GetPathName();
// DeleteFile(szCurFile);
if( !pComApp->CreateDispatch(_T("Excel.Application"), NULL) )
{
hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("不能创建excel应用"));
else
MessageBoxEx(NULL, _T("Can't build excel application!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return FALSE;
}
comBooks = pComApp->GetWorkbooks();
comBook = comBooks.Add(covOptional);
comSheets = comBook.GetSheets();
int iSheetCnt = comSheets.GetCount();
int iNeedCreateCnt = 3 - iSheetCnt;
if (iNeedCreateCnt > 0)
{
/////////////////////VC插入sheet页到指定位置////////////////////////////////////////////////
/*
插入sheet的函数用 sheets.Add(Before, After,Count,Type)
Before Variant 类型,可选。指定工作表对象,新建的工作表将置于此工作表之前。
After Variant 类型,可选。指定工作表对象,新建的工作表将置于此工作表之后。
Count Variant 类型,可选。要创建的工作表的数目。默认值为一。
Type Variant 类型,可选。工作表类型。
如果我们默认参数都为vtMissing,则 插入sheet的位置时在当前激活sheet页之前,而且时只插入一个sheet页
sheets.Add(vtMissing, vtMissing,vtMissing,vtMissing)
假如我们要求插入到第二个sheet之后,第三个sheet之前,我们应该按照下面的方法写
sheets.Add(-variant_t(sheets.GetItem(COleVariant((short)2))), -variant_t(sheets.GetItem(COleVariant((short)3))),-variant_t((long)1),vtMissing)
*/
//在这里covOptional可以等同于vtMissing
comSheets.Add(covOptional, _variant_t(comSheets.GetItem(COleVariant((short)iSheetCnt))),_variant_t((long)iNeedCreateCnt), covOptional);
}
comSheet01 = comSheets.GetItem(COleVariant((short)1));
comSheet01.SetName(_T("Head"));
this->SaveTdHeadToExcelFile(&comSheet01);
comSheet02 = comSheets.GetItem(COleVariant((short)2));
comSheet02.SetName(_T("DAT"));
this->SaveTdConToExcelFile(&comSheet02);
comSheet03 = comSheets.GetItem(COleVariant((short)3));
comSheet03.SetName(_T("GR"));
this->SaveTdGRToExcelFile(&comSheet03);
// comApp.SetVisible(TRUE);
// comApp.SetUserControl(TRUE);
comBook.SaveAs(COleVariant(f_szFileName), covOptional, covOptional, covOptional, covOptional, covOptional, 0, covOptional, covOptional, covOptional, covOptional, covOptional);
comSheet01.ReleaseDispatch();
comSheet02.ReleaseDispatch();
comSheet03.ReleaseDispatch();
comSheets.ReleaseDispatch();
comBook.Close(covOptional, COleVariant(""), covOptional);
comBook.ReleaseDispatch();
comBooks.Close();
comBooks.ReleaseDispatch();
pComApp->Quit();
pComApp->ReleaseDispatch();
if (pComApp != NULL)
{
delete pComApp;
pComApp = NULL;
}
// }
// else
// {
// return FALSE;
// }
return TRUE;
}
BOOL CRsp3DTd::SaveTdToCsvFile(CString f_szFileName)
{
_RecordsetPtr pRecTd = NULL;
pRecTd.CreateInstance(_uuidof(Recordset));
int iAR = 0;
CString szSql = _T(""), strErr = _T("");
szSql.Empty();
szSql.Format(_T("select AR from tdchannel where TDID = %d"), m_dwID);
pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO == pRecTd->GetRecordCount())
{
if (LANG_ZHCN == g_iUILanguage)
{
strErr.Format(_T("在数据库不能找到任务(%d)的装置类型"), m_dwID);
AfxMessageBox(strErr);
}
else
{
strErr.Format(_T("Device type for the task (%d) could not be found in the database"), m_dwID);
MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
pRecTd->Close();
return FALSE;
}
iAR = pRecTd->GetCollect(_T("AR")).iVal;
if (iAR != AR_LAND_FILL_ONE && iAR != AR_LAND_FILL_TWO)
{
if (LANG_ZHCN == g_iUILanguage)
{
AfxMessageBox(_T("导出CSV文件只支持填埋场装置"));
}
else
{
MessageBoxEx(NULL, _T("Export CSV files only support landfill devices."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return FALSE;
}
pRecTd->Close();
szSql.Empty();
szSql.Format(_T("select Sname,Eamount,TPamount,MEname from td,medium where ID=%d and AR = %d and LANG=%d"),m_dwID,iAR,g_iUILanguage);
pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO == pRecTd->GetRecordCount())
{
if (LANG_ZHCN == g_iUILanguage)
{
strErr.Format(_T("在数据库不能找到任务(%d)"), m_dwID);
AfxMessageBox(strErr);
}
else
{
strErr.Format(_T("Can not found task(%d) in Database"), m_dwID);
MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
pRecTd->Close();
return FALSE;
}
int iEamout = pRecTd->GetCollect(_T("Eamount")).iVal;
int iPamount = pRecTd->GetCollect(_T("TPamount")).iVal;
CString strMEname = (pRecTd->GetCollect(_T("MEname")).vt == VT_NULL) ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("MEname"));
pRecTd->Close();
CString strDate, strTime;
time_t tt;
tm* pTM;
time(&tt);
pTM = localtime(&tt);
strDate.Format(_T("%4d-%2d-%2d"), pTM->tm_year + 1900, pTM->tm_mon + 1, pTM->tm_mday);
strTime.Format(_T("%2d:%2d:%2d"), pTM->tm_hour, pTM->tm_min, pTM->tm_sec);
ofstream outFile;
outFile.open(f_szFileName, ios::out);
outFile << "ID No." <<','<< 213 << endl;
outFile << "Meas. Date/Time" << ',' << strDate <<' ' << strTime << endl;
outFile << "No. of Electrode" << ',' << iEamout << endl;
outFile << "Electrode Spacing"<<','<< 1 << endl;
outFile << "Electrode Array" << ',' << strMEname << endl;//outFile << "Electrode Array" << ',' << "POLE-POLE" << endl;
outFile << "No. of Data" << ',' << iPamount << endl;
outFile << "Meas. Code" << ',' << "Array No." << ',' << "C1" << ',' << "C2" << ',' << "P1" << ',' << "P2" << ','\
<< "Current[mA]" << ',' << "Potential[mV]" << ',' << "Resistance[ohm]" << ',' << "SP[mV]" << ',' << "CV[V]" << ','\
<< "Stack" << ',' << "SD" << ',' << "Date" << ',' << "Time" << endl;
//数据部分
_RecordsetPtr pRecConList = NULL;
pRecConList.CreateInstance(_uuidof(Recordset));
szSql.Format(_T("select C1,C2,P1,P2,N,K,I,V,R0,SP,bUse,R0_LC,M0_LC from td3dcon where TCHID in (select ID from tdchannel where TDID = %u order by TCHID) order by TSN"), m_dwID);
pRecConList->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
float fV = 0, fI = 0, fR = 0;
CString strText = _T("");
CStringArray strArrPolePos;
CString strPos;
//电极数组的位置依次分别为A,B,M,N
int iPoleIndex[4];
CString strContent;
int iIndex = 0;
int iArrayNo = 1;
while ((short)0 == pRecConList->adoEOF)
{
if (pRecConList->GetCollect(_T("bUse")).boolVal != 0)//0为access数据库中的false
{
if (iIndex != 0 && iIndex % 4 == 0)
{
iArrayNo++;
time(&tt);
pTM = localtime(&tt);
strDate.Format(_T("%4d-%2d-%2d"), pTM->tm_year + 1900, pTM->tm_mon + 1, pTM->tm_mday);
strTime.Format(_T("%2d:%2d:%2d"), pTM->tm_hour, pTM->tm_min, pTM->tm_sec);
}
fV = (float)pRecConList->GetCollect(_T("V")).fltVal;
fI = (float)pRecConList->GetCollect(_T("I")).fltVal;
fR = (0 == fI) ? 0 : fV / fI;
strContent.Format(_T("1,%d,%d,%d,%d,%d,%.2f,%.2f,%.2f,%.2f,47,%d,0,%s,%s"), iArrayNo, atoi((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("C1"))), atoi((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("C2"))),\
atoi((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("P1"))), atoi((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("P2"))),fI,\
fV, fR, pRecConList->GetCollect(_T("SP")).fltVal, (LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("N")),strDate, strTime);
outFile << strContent << endl;
}
iIndex++;
pRecConList->MoveNext();
}
pRecConList->Close();
outFile.close();
return TRUE;
}
BOOL CRsp3DTd::SaveTdToRes3DFile(CString f_szFileName)
{
long lRet = VAL_ZERO;
int iListIndex = (int)VAL_ZERO;
CString szSql = _T("");
CString szCaption = _T("");
UINT uExecCode = (UINT)APP_SUCCESS;
CSaveInRes* pSaveInRes = NULL;
CString szFilePath = _T("");
CString szFileName = _T("");
CString szFile = _T("");
CStringArray saRecord;
CString szTdName = _T("");
CString szTdCN = _T("");
CString szDESN = _T("");
CString szEspace = _T("");
CString szEDistance = _T("");
int nSpaceX = 0;//x方向步长
int nSpaceY = 0;//Y方向步长
CString szAr = _T("");
CString szTPAmount = _T("");
CString szTType = _T("");
CString szA = _T("");
CString szB = _T("");
CString szM = _T("");
CString szN = _T("");
CString szR0 = _T("");
CString x0 = _T("");
CString y0 = _T("");
CString x1 = _T("");
CString y1 = _T("");
CString szSCID = _T("");
CString szXDistance = _T("");
CString szYDistance = _T("");
CString szElevation = _T("");
CString szRect = _T("");
CString szRectLoc = _T("");
DWORD dwChID = (DWORD)VAL_ZERO;
_RecordsetPtr pRecTd = NULL;
_RecordsetPtr pRecCh = NULL;
_RecordsetPtr pRecTdCon = NULL;
pRecTd.CreateInstance(_uuidof(Recordset));
pRecCh.CreateInstance(_uuidof(Recordset));
pRecTdCon.CreateInstance(_uuidof(Recordset));
pSaveInRes = new CSaveInRes;
int iRollDirection = 0;
BYTE byLineDirection = 0;//测线方向
szSql.Empty();
szSql.Format(_T("select TDname,TdCN,DESN,SCID,Ttype,Espace,Edistance,TPamount,rect, Rdirection,rect_loc,LineDirection from td where ID = %u"), this->m_dwID);
pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTd->GetRecordCount())
{
szTdName = pRecTd->GetCollect(_T("TDname")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TDname"));
// szTdCN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdCN"));
szDESN = pRecTd->GetCollect(_T("DESN")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("DESN"));
szSCID = pRecTd->GetCollect(_T("SCID")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("SCID"));
szTType = pRecTd->GetCollect(_T("Ttype")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Ttype"));
szEspace = pRecTd->GetCollect(_T("Espace")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Espace"));
szEDistance = pRecTd->GetCollect(_T("Edistance")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Edistance"));
// szTPAmount = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TPamount"));
szRect = pRecTd->GetCollect(_T("rect")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("rect"));
szRectLoc = pRecTd->GetCollect(_T("rect_loc")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("rect_loc"));
iRollDirection = pRecTd->GetCollect(_T("Rdirection")).lVal;
if (pRecTd->GetCollect(_T("LineDirection")).vt != VT_NULL)
{
byLineDirection = pRecTd->GetCollect(_T("LineDirection")).bVal;
}
}
pRecTd->Close();
szSql.Empty();
szSql.Format(_T("select ID,AR from tdchannel where TDID = %u and CHnumber = 1"), this->m_dwID);
pRecCh->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCh->GetRecordCount())
{
dwChID = pRecCh->GetCollect(_T("ID")).ulVal;
szAr = (LPCTSTR)(_bstr_t)pRecCh->GetCollect(_T("AR"));
}
pRecCh->Close();
int iAR = atoi(szAr.GetBuffer(0));
int nId = 0;
CString szTmp = _T("");
//取出X Y方向的步长
float fABPoleDistance = 0, fAPosX = 0;
nId = szEspace.Find(',');
nSpaceX = atoi(szEspace.Left(nId));
//如果是中梯扫面的话,那么步长的第一个参数将会用来存储AB的距离
fABPoleDistance = atof(szEspace.Left(nId));
fAPosX = atof(szEspace.Right(szEspace.GetLength() - nId - 1));
nSpaceY = atoi(szEspace.Right(szEspace.GetLength() - nId - 1));
//取出X Y方向的电极间距
nId = szEDistance.Find(',');
szXDistance = szEDistance.Left(nId);//X方向电极间距
szYDistance = szEDistance.Right(szEDistance.GetLength() - nId - 1);//Y方向的电极间距
//将rect字段的坐标位置取出来
nId = 0;
szTmp.Empty();
for (int j = 0; j < 4; j++)
{
nId = szRect.Find(',');
if (nId != -1)
{
szTmp = szRect.Left(nId);
szRect = szRect.Right(szRect.GetLength() - nId - 1);
}
else
szTmp = szRect;
switch (j)
{
case 0:
x0 = szTmp;
break;
case 1:
y0 = szTmp;
break;
case 2:
x1 = szTmp;
break;
case 3:
y1 = szTmp;
break;
}
}
//在这里如果是中梯,则需要对网格大小改成AB/X电极间距
float fAPosY = 0, fMinAMStartPosX = 0;
if (AR_MID_GARDIENT_SCAN == iAR)
{
//取出AB和MN测线在X轴上交会的起始点的坐标
//取出X Y方向的步长
int nIdTmp = szRectLoc.Find(',');
fMinAMStartPosX = atof(szRectLoc.Left(nIdTmp));
fAPosY = atof(szRectLoc.Right(szRectLoc.GetLength() - nIdTmp - 1));
pSaveInRes->SetMidGardientInfo(fAPosX, fAPosY, fABPoleDistance, fMinAMStartPosX-fAPosX);
}
//把脚本信息取出来(3D脚本的矩形)
// try
// {
// szSql.Empty();
// int nSCID = atoi(szSCID.GetBuffer(szSCID.GetLength()));
// szSql.Format("select X0, Y0, X1, Y1 from scon where ID = %d", nSCID);
//
// pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
// if ((long)VAL_ZERO != pRecTd->GetRecordCount())
// {
// x0 = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("X0"));
// y0 = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Y0"));
// x1 = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("X1"));
// y1 = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Y1"));
// }
// pRecTd->Close();
// }
// catch(_com_error e)
// {
// //当依赖的脚本不存在时,要手动输入电极数量
// CInputElectrodeNumDlg *pDlg = NULL;
// pDlg = new CInputElectrodeNumDlg();
//
// pDlg->DoModal();
//
// x0.Format("%d", 0);
// y0.Format("%d", 0);
// x1.Format("%d", pDlg->m_x - 1);
// y1.Format("%d", pDlg->m_y - 1);
//
// delete pDlg;
// }
szFilePath.Empty();
szFilePath.GetBufferSetLength(256);
::GetCurrentDirectory(szFilePath.GetLength(), szFilePath.GetBuffer(szFilePath.GetLength()));
szFilePath.ReleaseBuffer();
szFilePath = szFilePath + _T("\\DAT\\");
szFileName = szTdName + _T(".dat");
szFile = szFilePath + szFileName;
pSaveInRes->CreateResFile(f_szFileName);
szSql.Empty();
szSql.Format(_T("select C1,C2,P1,P2,R0,bUse from td3dcon where TCHID = %u and bUse <> 0"), dwChID);
pRecTdCon->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
//////////////////////////////////////////////////////////////////////////
saRecord.RemoveAll();
saRecord.Add(szTdName);
saRecord.Add(x0);
saRecord.Add(y0);
saRecord.Add(x1);
saRecord.Add(y1);
saRecord.Add(szXDistance);
saRecord.Add(szYDistance);
saRecord.Add(szAr);
szTPAmount.Empty();
szTPAmount.Format(_T("%d"),pRecTdCon->GetRecordCount());
saRecord.Add(szTPAmount);
pSaveInRes->AddFileHeader(Res, atoi(szAr.GetBuffer(0)), &saRecord);
pSaveInRes->Init3DFileHeader(&saRecord);
//3D RES文件需要设置电极步长
if (AR_MID_GARDIENT_SCAN == iAR)
{
pSaveInRes->SetPoleStep(1, 1);
}
else
pSaveInRes->SetPoleStep(nSpaceX, nSpaceY);
//////////////////////////////////////////////////////////////////////////
pSaveInRes->Set3DRollDirction(iRollDirection);
pSaveInRes->Set3DTestLineDirection(byLineDirection);
float fR0;
while ((short)VAL_ZERO == pRecTdCon->adoEOF)
{
if (pRecTdCon->GetCollect(_T("bUse")).boolVal != 0)//0为access数据库中的false
{
szR0.Empty();
fR0 = (float)pRecTdCon->GetCollect(_T("R0")).fltVal;
szR0.Format(_T("%f"),fR0);
szA.Empty();
szA = (LPCTSTR)(_bstr_t)pRecTdCon->GetCollect(_T("C1"));
szB.Empty();
szB = (LPCTSTR)(_bstr_t)pRecTdCon->GetCollect(_T("C2"));
szM.Empty();
szM = (LPCTSTR)(_bstr_t)pRecTdCon->GetCollect(_T("P1"));
szN.Empty();
szN = (LPCTSTR)(_bstr_t)pRecTdCon->GetCollect(_T("P2"));
saRecord.RemoveAll();
saRecord.Add(szA);
saRecord.Add(szB);
saRecord.Add(szM);
saRecord.Add(szN);
saRecord.Add(szR0);
pSaveInRes->AddDateToFile(&saRecord);
}
pRecTdCon->MoveNext();
}
pRecTdCon->Close();
//////////////////////////deleted by lsq 20160713////////////////////////////////////////////
//地形文件的添加放到了工具栏中,所以这里就无需再加了
// 此处是添加地型文件
/*
szCaption.Empty();
szCaption.LoadString(IDS_CAPTION_0009);
hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
if (AfxMessageBox( szCaption, MB_YESNO) == IDYES )
{
COpTGD_3D_Dlg* pOpTGDDlg = new COpTGD_3D_Dlg();
int nX0 = 0, nY0 = 0, nX1 = 0,nY1 = 0;
nX0 = atoi(x0.GetBuffer(0));
nY0 = atoi(y0.GetBuffer(0));
nX1 = atoi(x1.GetBuffer(0));
nY1 = atoi(y1.GetBuffer(0));
CRect rect(nX0,nY0, nX1, nY1);
pOpTGDDlg->SetRect(rect);
pOpTGDDlg->Create(IDD_OP_TGD_C_3D, AfxGetMainWnd());
this->InitialTGDDlg(pOpTGDDlg);
pOpTGDDlg->ShowWindow(SW_SHOW);
lRet = pOpTGDDlg->RunModalLoop(MLF_SHOWONIDLE);
CString szTmp = _T("");
CStringArray szArray;
szArray.RemoveAll();
if (RET_OK == lRet)
{
int nLandSig = 0;
nLandSig = pOpTGDDlg->GetLandSign();
pSaveInRes->Set_3D_LandSign(nLandSig);
CStringArray szDataArray;
pOpTGDDlg->GetDataList(&szDataArray);
UpdataTopography(nLandSig, NULL, &szDataArray);
for (int i = 0; i < nY1 + 1; i++)
{
for (int j = 1; j < nX1 + 2; j++) //从第一列开始
{
szTmp = pOpTGDDlg->m_TerrainList.GetItemText(i, j);
szArray.Add(szTmp);
}
pSaveInRes->Add_3D_LandFile(&szArray);
szArray.RemoveAll();
}
}
else
{
// AfxMessageBox("aa");
}
}
*/
pSaveInRes->CloseFile();
return TRUE;
}
void CRsp3DTd::InitialTGDDlg(COpTGD_3D_Dlg* pOpTGDDlg)
{
_RecordsetPtr pRecCM = NULL;
CString szSql = _T("");
int iIndex = (int)VAL_ZERO;
pRecCM.CreateInstance(_uuidof(Recordset));
pOpTGDDlg->m_LandSign.ResetContent();
iIndex = (int)VAL_ZERO;
szSql.Empty();
szSql.Format(_T("select Clabel,Cvalue from cm where Cname = 'Distance type' and Lang = %d order by Cvalue"), g_iLanguage);
pRecCM->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
while ((short)VAL_ZERO == pRecCM->adoEOF)
{
iIndex = pOpTGDDlg->m_LandSign.AddString((LPCTSTR)(_bstr_t)pRecCM->GetCollect(_T("Clabel")));
pOpTGDDlg->m_LandSign.SetItemData(iIndex, (DWORD)pRecCM->GetCollect(_T("Cvalue")).iVal);
pRecCM->MoveNext();
}
pRecCM->Close();
int nStart = 0;
int nDisType = 0;
CString szTmp = _T("");
CStringArray szArray;
if (this->GetTopography(&nDisType, &szArray))
{
pOpTGDDlg->InitData(&szArray);
}
pOpTGDDlg->m_LandSign.SetCurSel(nDisType - 1);
}
void CRsp3DTd::ClearTdChaList()
{
CTdChannel* pTdChannel = NULL;
int iTdChannelIndex = (int)VAL_ZERO;
iTdChannelIndex = (int)VAL_ZERO;
while (iTdChannelIndex < this->m_tdChaList.GetCount())
{
pTdChannel = NULL;
pTdChannel = (CTdChannel *)this->m_tdChaList.GetAt(this->m_tdChaList.FindIndex(iTdChannelIndex));
pTdChannel->Clear3DSptRecList();
delete pTdChannel;
iTdChannelIndex++;
}
this->m_tdChaList.RemoveAll();
}
BOOL CRsp3DTd::SaveData()
{
CTdChannel* pTdChannel = NULL;
_RecordsetPtr pRecTd;
_CommandPtr pCmdIns;
CString szSql = _T("");
int iChIndex = (int)VAL_ZERO;
pRecTd.CreateInstance(_uuidof(Recordset));
pCmdIns.CreateInstance(_uuidof(Command));
pCmdIns->ActiveConnection = m_pConnection;
try
{
m_pConnection->BeginTrans();
//int nPoleStep = atoi(this->m_szEDistance.GetBuffer(0));
float fPoleDistance = (float)atof(this->m_szEDistance.GetBuffer(0));
szSql.Empty();
szSql.Format(_T("insert into td(TDname,TDCN,Tlocation,DEID,DESN,TZID,SCID,SCCN,Sname,Stype,Ttype,Tmode,Eamount,TPamount,CHamount,N,TRwave,TRfrequency,Ifrequency,"
"SAfrequency,Clayout,Espace,Edistance,weather,WDIR,temperature,height,humidity,Cdate,Ctime,Tdate,Ttime,Rdirection,CRtime,PM,OP,QA) "
"values('%s','%s','%s',%u,'%s',%u,%u,'%s','%s',%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%.2f,%.2f,%d,%d,%.2f,%.2f,%.2f,#%s#,#%s#,#%s#,#%s#,%d,%d,'%s','%s','%s')"),
this->m_szTdName,
this->m_szTdCN,
this->m_szTLocation,
this->m_pDevice->m_dwID,
this->m_pDevice->m_szDevSN,
this->m_dwTzID,
this->m_dwSCID,
this->m_szSCCN,
this->m_szSName,
this->m_iSType,
this->m_iTType,
this->m_iTMode,
this->m_iEAmount,
this->m_iTPAmount,
this->m_iCHAmount,
this->m_iN,
this->m_iTRWave,
this->m_iTRFrequency,
this->m_iIFrequency,
this->m_iSAFrequency,
this->m_iCLayout,
this->m_fESpace,
fPoleDistance,
//this->m_szEDistance,
this->m_iWeather,
this->m_iWDIR,
this->m_fTemperature,
this->m_fHeight,
this->m_fHumidity,
this->m_szCDate,
this->m_szCTime,
this->m_szTDate,
this->m_szTTime,
this->m_iRDirection,
this->m_iCRtime,
this->m_szPM,
this->m_szOP,
this->m_szQA);
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
pRecTd->Open(_T("select max(ID) as ID from td"), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTd->GetRecordCount())
{
this->m_dwID = (int)pRecTd->GetCollect(_T("ID")).ulVal;
}
pRecTd->Close();
iChIndex = (int)VAL_ZERO;
while (iChIndex < m_tdChaList.GetCount())
{
pTdChannel = NULL;
pTdChannel = (CTdChannel*)m_tdChaList.GetAt(m_tdChaList.FindIndex(iChIndex));
pTdChannel->SaveRsp2DTdData(m_dwID);
iChIndex++;
}
this->SaveGRDataToDB(m_dwID);
this->SaveOrgDataToDB(m_dwID);
m_pConnection->CommitTrans();
}
catch(_com_error e)
{
m_pConnection->RollbackTrans();
hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
AfxMessageBox(e.Description());
return FALSE;
}
return TRUE;
}
BOOL CRsp3DTd::LoadData(CLinkList<CMedium*>& m_medLinkList)
{
CTdChannel* pTdChannel = NULL;
DWORD dwSCID = (DWORD)VAL_ZERO;
DWORD dwMedHandle = (DWORD)VAL_ZERO;
int iEAmount = (int)VAL_ZERO;
_RecordsetPtr pRecTd;
_RecordsetPtr pRecCh;
_RecordsetPtr pRecTdCon;
CString szSql = _T("");
int iChIndex = (int)VAL_ZERO;
if ((int)VAL_ZERO == m_tdChaList.GetCount())
{
pRecTd.CreateInstance(_uuidof(Recordset));
pRecCh.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select SCID,Eamount from td where ID = %u"), this->m_dwID);
pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTd->GetRecordCount())
{
dwSCID = (DWORD)pRecTd->GetCollect(_T("SCID")).ulVal;
iEAmount = (int)pRecTd->GetCollect(_T("Eamount")).iVal;
}
pRecTd->Close();
szSql.Empty();
szSql.Format(_T("select ID,ChNumber,AR from tdchannel where TDID = %u"), this->m_dwID);
pRecCh->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
while ((short)VAL_ZERO == pRecCh->adoEOF)
{
pTdChannel = new CTdChannel(dwSCID, (int)pRecCh->GetCollect(_T("ChNumber")).iVal, this->m_pConnection);
pTdChannel->m_dwID = (DWORD)pRecCh->GetCollect(_T("ID")).ulVal;
pTdChannel->m_iEAmount = iEAmount;
dwMedHandle = m_handleProcessor.GenerateHandle((int)pRecCh->GetCollect(_T("AR")).iVal, PZ_STYLE_MED_DEF);
pTdChannel->m_pMedium = m_medLinkList.Find(dwMedHandle);
if (TRUE == pTdChannel->LoadRsp3DTdData())
{
this->m_tdChaList.AddTail((void*)pTdChannel);
}
pRecCh->MoveNext();
}
pRecCh->Close();
}
return TRUE;
}
BOOL CRsp3DTd::DisplayGraph()
{
// CDisp2DRSPGrapDlg* pDisp2DRSPGrapDlg = new CDisp2DRSPGrapDlg(this);
// pDisp2DRSPGrapDlg->DoModal();
// delete pDisp2DRSPGrapDlg;
// AfxMessageBox("comming soon!");
return TRUE;
}
BOOL CRsp3DTd::DisplayTPSplinesGraph(int iTSN)
{
((CTdChannel*)this->m_tdChaList.GetAt(this->m_tdChaList.FindIndex(0)))->GetTdRecord(iTSN)->DisplayRawDataSplines();
return TRUE;
}
BOOL CRsp3DTd::GetTopography(int *f_disType, CStringArray *f_array)
{
_RecordsetPtr pRecTd = NULL;
CString szSql = _T("");
CString szTmp = _T("");
pRecTd.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select DType,Altitude from t3dtg where TDID = %u"), this->m_dwID);
pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO == pRecTd->GetRecordCount())
return FALSE;
*f_disType = pRecTd->GetCollect(_T("DType")).iVal;
int nId = 0;
while ((short)VAL_ZERO == pRecTd->adoEOF)
{
szTmp.Format("%d", pRecTd->GetCollect(_T("Altitude")).iVal);
pRecTd->MoveNext();
f_array->Add(szTmp);
}
pRecTd->Close();
return TRUE;
}
void CRsp3DTd::UpdataTopography(int f_disType, int f_start, CStringArray *f_array)
{
f_start = 0;//3D没有起始电极
_CommandPtr pRecTd = NULL;
_RecordsetPtr pRecSelect = NULL;
_CommandPtr pCmdIns = NULL;
CString szSql = _T("");
CString szTmp = _T("");
pCmdIns.CreateInstance(_uuidof(Command));
pCmdIns->ActiveConnection = m_pConnection;
pRecTd.CreateInstance(_uuidof(Command));
pRecTd->ActiveConnection = m_pConnection;
pRecSelect.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format("select * from t3dtg where TDID = %u", this->m_dwID);
pRecSelect->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecSelect->GetRecordCount())
{
szSql.Empty();
szSql.Format("delete from t3dtg where TDID = %u", this->m_dwID);
//把旧数据都删掉
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
}
pRecSelect->Close();
int nData = 0;
for (int n = 0; n < f_array->GetSize(); n++)
{
szTmp = f_array->GetAt(n);
nData = atoi(szTmp.GetBuffer(0));
szSql.Empty();
szSql.Format("insert into t3dtg(TDID,DType,Altitude) values(%u,%d,%d)",
this->m_dwID,
f_disType,
nData
);
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
}
}