// 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 #include #include 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& 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("\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::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& 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); } }