// IpspCETd.cpp: implementation of the CIpspCETd class. // ////////////////////////////////////////////////////////////////////// #include "geomative.h" #include "IpspCETd.h" #include "TdChannel.h" #include "opexec2drsptestsetdlg.h" #include "excel.h" #include "DispCERSPGrapDlg.h" #include "disptdrecsplinesgrapdlg.h" #include "IpspCETdRecord.h" #include "OperTxtFile.h" #ifdef _DEBUG #undef THIS_FILE static char THIS_FILE[]=__FILE__; #define new DEBUG_NEW #endif using namespace excel9; extern int g_iLanguage; extern BOOL GetSubStringInHeadAndTail(const CString& szSource, CString& szSub, const CString& szHead, const CString& szTail); extern void SplitterString(CStringArray &szArray,const CString& szSource, const CString& szSplitter); extern CString GetGrCodeText(int iCode); extern int g_UIOffset; extern int g_iUILanguage; ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// extern HHOOK hHook; extern LRESULT __stdcall CBTHookProc(long nCode, WPARAM wParam, LPARAM lParam); extern void get_fit_equation(double x[],double y[],int n,double a[],int m,double dt[]); extern void get_integral_area(double x1, double x2, double a[],int m,double &dRes); extern bool get_hl_by_bisection(double dLeft, double dRight, double dCoffient[], double dAverage,double dVdata,int m, double &dRes); extern CString GetExcelHeaderIndex(char chIndex, int index); CIpspCETd::CIpspCETd(DWORD dwID, _ConnectionPtr& pConnection):CTestingData(dwID, pConnection) { } CIpspCETd::~CIpspCETd() { ClearTdChaList(); } BOOL CIpspCETd::SaveData() { return TRUE; } BOOL CIpspCETd::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; 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->LoadIpspCETdData()) { this->m_tdChaList.AddTail((void*)pTdChannel); } pRecCh->MoveNext(); } pRecCh->Close(); return TRUE; } void CIpspCETd::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->Clear2DSptRecList(); delete pTdChannel; iTdChannelIndex++; } this->m_tdChaList.RemoveAll(); } BOOL CIpspCETd::SaveCERSPSetInfo(COpExec2DRSPTestSetDlg* pOpExec2DRSPTestSetDlg, CLinkList& m_medLinkList) { _RecordsetPtr pRecTdChaList = NULL; CString szSql = _T(""); CString szLbText = _T(""); CString szPro = _T(""); CString szPrCN = _T(""); CString szTzName = _T(""); CString szTzCN = _T(""); DWORD dwMedHandle = (DWORD)VAL_ZERO; int iChNum = (int)VAL_ZERO; int iSptIndex = (int)VAL_ZERO; POSITION posSpt; CTime tCT; CString szEdCon = _T(""); DWORD dwSptHandle = (DWORD)VAL_ZERO; DWORD dwSptID = (DWORD)VAL_ZERO; tCT = CTime::GetCurrentTime(); this->m_szTdName = pOpExec2DRSPTestSetDlg->m_szName; this->m_szTdCN = _T("VESR")+tCT.FormatGmt(_T("%Y%m%d"))+tCT.FormatGmt(_T("%H%M%S")); this->m_szTLocation = pOpExec2DRSPTestSetDlg->m_szLocation; this->m_dwID = (DWORD)VAL_ZERO; this->m_pDevice = (CDevice*)pOpExec2DRSPTestSetDlg->m_cbDESN.GetItemData(pOpExec2DRSPTestSetDlg->m_cbDESN.GetCurSel()); posSpt = pOpExec2DRSPTestSetDlg->m_opCESptSelDlg.m_ceSptList.GetFirstSelectedItemPosition(); iSptIndex = pOpExec2DRSPTestSetDlg->m_opCESptSelDlg.m_ceSptList.GetNextSelectedItem(posSpt); dwSptHandle = pOpExec2DRSPTestSetDlg->m_opCESptSelDlg.m_ceSptList.GetItemData(iSptIndex); dwSptID = this->m_handleProcessor.GetIDFromHandle(dwSptHandle); this->m_dwSCID = dwSptID; this->m_szSCCN = pOpExec2DRSPTestSetDlg->m_opCESptSelDlg.m_ceSptList.GetItemText(iSptIndex, 0); this->m_szSName = pOpExec2DRSPTestSetDlg->m_opCESptSelDlg.m_ceSptList.GetItemText(iSptIndex, 1); this->m_iSType = (int)VAL_ZERO; this->m_iTType = (int)VAL_ZERO; this->m_iEAmount = atoi(pOpExec2DRSPTestSetDlg->m_opCESptSelDlg.m_ceSptList.GetItemText(iSptIndex, 2)); this->m_iCHAmount = atoi(pOpExec2DRSPTestSetDlg->m_opCESptSelDlg.m_ceSptList.GetItemText(iSptIndex, 3)); this->m_iTPAmount = atoi(pOpExec2DRSPTestSetDlg->m_opCESptSelDlg.m_ceSptList.GetItemText(iSptIndex, 4)); szPro.Empty(); pOpExec2DRSPTestSetDlg->m_cbPrName.GetLBText(pOpExec2DRSPTestSetDlg->m_cbPrName.GetCurSel(), szPro); szPrCN.Empty(); GetSubStringInHeadAndTail(szPro, szPrCN, _T("("), _T(")")); this->m_szPrCN = szPrCN; szTzName.Empty(); pOpExec2DRSPTestSetDlg->m_cbTzName.GetLBText(pOpExec2DRSPTestSetDlg->m_cbTzName.GetCurSel(), szTzName); this->m_szTzName = szTzName; szTzCN.Empty(); GetSubStringInHeadAndTail(szTzName, szTzCN, _T("("), _T(")")); this->m_szTzCN = szTzCN; this->m_dwTzID = pOpExec2DRSPTestSetDlg->m_cbTzName.GetItemData(pOpExec2DRSPTestSetDlg->m_cbTzName.GetCurSel()); this->m_iCLayout = pOpExec2DRSPTestSetDlg->m_cbCLayout.GetCurSel(); szEdCon.Empty(); pOpExec2DRSPTestSetDlg->m_edESpace.GetWindowText(szEdCon); this->m_fESpace = (float)atof(szEdCon.GetBuffer(0)); this->m_szEDistance = pOpExec2DRSPTestSetDlg->m_szEDistance; this->m_iCRtime = (int)VAL_ZERO; this->m_iRDirection = (int)VAL_ZERO; this->m_iIFrequency = pOpExec2DRSPTestSetDlg->m_iIFrequency; this->m_iSAFrequency = pOpExec2DRSPTestSetDlg->m_iSAFrequency; this->m_iTRFrequency = pOpExec2DRSPTestSetDlg->m_iTRFrenquency; this->m_fTRPeriod = pOpExec2DRSPTestSetDlg->m_fTRPeriod; this->m_iTMode = pOpExec2DRSPTestSetDlg->m_iTestMode; //在这里默认为0,因为暂时只实现了这一种的方式0+0-的方式 this->m_iTRWave = pOpExec2DRSPTestSetDlg->m_iTRWave; szEdCon.Empty(); pOpExec2DRSPTestSetDlg->m_edHeight.GetWindowText(szEdCon); this->m_fHeight = (float)atof(szEdCon.GetBuffer(0)); szEdCon.Empty(); pOpExec2DRSPTestSetDlg->m_edHumidity.GetWindowText(szEdCon); this->m_fHumidity = (float)atof(szEdCon.GetBuffer(0)); szEdCon.Empty(); pOpExec2DRSPTestSetDlg->m_edTemperature.GetWindowText(szEdCon); this->m_fTemperature = (float)atof(szEdCon.GetBuffer(0)); this->m_iWDIR = pOpExec2DRSPTestSetDlg->m_cbWDIR.GetCurSel(); this->m_iWeather = pOpExec2DRSPTestSetDlg->m_cbWeather.GetCurSel(); this->m_iN = (int)VAL_ONE; this->m_szCDate = tCT.FormatGmt(_T("%Y-%m-%d")); this->m_szCTime = tCT.FormatGmt(_T("%H:%M:%S")); this->m_szTDate = tCT.FormatGmt(_T("%Y-%m-%d")); this->m_szTTime = tCT.FormatGmt(_T("%H:%M:%S")); this->m_iRCamount = (int)VAL_ZERO; this->m_iRDirection = (int)VAL_ZERO; this->m_iCRtime = (int)VAL_ZERO; this->m_szOP = pOpExec2DRSPTestSetDlg->m_szOP; this->m_szPM = pOpExec2DRSPTestSetDlg->m_szPM; this->m_szQA = pOpExec2DRSPTestSetDlg->m_szQA; this->m_tdChaList.RemoveAll(); pRecTdChaList.CreateInstance(_uuidof(Recordset)); szSql.Empty(); szSql.Format(_T("select CHnumber,AR from channel where SCID = %u order by CHnumber"), this->m_dwSCID); pRecTdChaList->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText); while ((short)VAL_ZERO == pRecTdChaList->adoEOF) { iChNum = pRecTdChaList->GetCollect(_T("CHnumber")).iVal; CTdChannel* pTdChannel = new CTdChannel(this->m_dwSCID, iChNum, m_pConnection); dwMedHandle = m_handleProcessor.GenerateHandle(pRecTdChaList->GetCollect(_T("AR")).iVal, PZ_STYLE_MED_DEF); pTdChannel->m_pMedium = m_medLinkList.Find(dwMedHandle); pTdChannel->m_iEAmount = this->m_iEAmount; this->m_tdChaList.AddTail((void*)pTdChannel); pRecTdChaList->MoveNext(); } pRecTdChaList->Close(); return TRUE; } BOOL CIpspCETd::SaveHeadInfoToFile(CString& szFilePath, CString& szFileName) { CMarkup* pXML = new CMarkup; CTdChannel* pTdChannel = NULL; POSITION pos; CString szCon = _T(""); CString szFile = _T(""); pXML->SetDoc("\r\n"); pXML->AddElem("measure"); pXML->AddChildElem(_T("measure_name"), this->m_szTdName); pXML->AddChildElem(_T("measure_location"), this->m_szTLocation); pXML->AddChildElem(_T("measure_script_id"), this->m_szSCCN); pXML->AddChildElem(_T("measure_script_name"), this->m_szSName); pXML->AddChildElem(_T("measure_script_type"), 0); pXML->AddChildElem(_T("pole_count"), this->m_iEAmount); pXML->AddChildElem(_T("channel_count"), this->m_iCHAmount); pXML->AddChildElem(_T("point_count"), this->m_iTPAmount); pXML->AddChildElem(_T("measure_type"), 0); pXML->AddChildElem(_T("measure_mode"), this->m_iTMode); pXML->AddChildElem(_T("medium_set")); pXML->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); pXML->AddChildElem(_T("medium"), szCon); } } pXML->OutOfElem(); pXML->AddChildElem(_T("pole_distance"), this->m_szEDistance); szCon.Empty(); szCon.Format(_T("%.2f"), this->m_fESpace); pXML->AddChildElem(_T("pole_gap"), szCon); pXML->AddChildElem(_T("rect"), _T("")); pXML->AddChildElem(_T("rect_loc"), _T("")); pXML->AddChildElem(_T("wires_layout"), this->m_iCLayout); pXML->AddChildElem(_T("rolling_times"), 0); pXML->AddChildElem(_T("rolling_direction"), 0); pXML->AddChildElem(_T("rolling_step"), _T("")); pXML->AddChildElem(_T("iterations"), 1); pXML->AddChildElem(_T("emit_source"), _T("")); pXML->AddChildElem(_T("wave_shape"), this->m_iTRWave); pXML->AddChildElem(_T("period"), this->m_iTRFrequency); pXML->AddChildElem(_T("industrial_frequency"), this->m_iIFrequency); pXML->AddChildElem(_T("sample_rate"), this->m_iSAFrequency); pXML->AddChildElem(_T("sample_interval"), _T("")); pXML->AddChildElem(_T("v_gain"), _T("")); pXML->AddChildElem(_T("i_gain"), _T("")); szCon.Empty(); szCon.Format(_T("%.2f"), this->m_fTemperature); pXML->AddChildElem(_T("temperature"), szCon); szCon.Empty(); szCon.Format(_T("%.2f"), this->m_fHeight); pXML->AddChildElem(_T("height"), szCon); szCon.Empty(); szCon.Format(_T("%.2f"), this->m_fHumidity); pXML->AddChildElem(_T("humidity"), szCon); pXML->AddChildElem(_T("weather"), this->m_iWeather); pXML->AddChildElem(_T("wind_direction"), this->m_iWDIR); pXML->AddChildElem(_T("create_date"), this->m_szCDate); pXML->AddChildElem(_T("create_time"), this->m_szCTime); pXML->AddChildElem(_T("test_date"), this->m_szTDate); pXML->AddChildElem(_T("test_time"), this->m_szTTime); pXML->AddChildElem(_T("PM"), this->m_szPM); pXML->AddChildElem(_T("OP"), this->m_szOP); pXML->AddChildElem(_T("QA"), this->m_szQA); pXML->AddChildElem(_T("apparent_chargeability")); //m0 pXML->IntoElem(); pXML->AddChildElem(_T("m0")); pXML->AddChildElem(_T("m1")); pXML->AddChildElem(_T("m2")); pXML->AddChildElem(_T("m3")); pXML->AddChildElem(_T("m4")); pXML->AddChildElem(_T("m5")); pXML->AddChildElem(_T("m6")); pXML->AddChildElem(_T("m7")); pXML->AddChildElem(_T("m8")); pXML->AddChildElem(_T("m9")); pXML->OutOfElem(); //m9 szFilePath.Empty(); szFilePath.GetBufferSetLength(2048); ::GetCurrentDirectory(2048, szFilePath.GetBuffer(szFilePath.GetLength())); szFilePath.ReleaseBuffer(); szFileName.Empty(); szFileName = this->m_szTdCN+_T(".xml"); szFile.Empty(); szFile = szFilePath + _T("\\") + szFileName; DeleteFile(szFile); pXML->Save(szFile); delete pXML; return TRUE; } bool CIpspCETd::ShowConList(CListCtrl &tdConList) { _RecordsetPtr pRecConList = NULL; _RecordsetPtr pRecTd = NULL; CString szSql = _T(""); CString szValue = _T(""); int iIndex = (int)VAL_ZERO; double dPeriod = 0; pRecConList.CreateInstance(_uuidof(Recordset)); pRecTd.CreateInstance(_uuidof(Recordset)); if (VAL_ZERO != tdConList.GetItemCount()) { tdConList.DeleteAllItems(); } try { szSql.Empty(); szSql.Format(_T("select TRfrequency 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()) { CString strInfo = _T(""); if (LANG_ZHCN == g_iUILanguage) { strInfo.Format(_T("td表没有该数据id(%d)"), m_dwID); AfxMessageBox(strInfo.GetBuffer(0)); } else { strInfo.Format(_T("There is no id(%d) data in td"), m_dwID); MessageBoxEx(NULL, strInfo, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); } return false; } int nTmp = (int)pRecTd->GetCollect(_T("TRfrequency")).iVal; dPeriod = GetCycle(nTmp); szSql.Empty(); szSql.Format(_T("select TSN,a,b,x,y,N,K,I,V,R0,SP,bUse from td1dcon 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()); pRecTd->Close(); pRecConList->Close(); return false; } 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("a"))); tdConList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("b"))); tdConList.SetItemText(iIndex, 2, (LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("x"))); tdConList.SetItemText(iIndex, 3, (LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("y"))); 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); strDBVal.Empty(); strDBVal.Format(_T("%f"),(float)pRecConList->GetCollect(_T("V")).fltVal); tdConList.SetItemText(iIndex, 7, strDBVal); strDBVal.Empty(); strDBVal.Format(_T("%f"), (float)pRecConList->GetCollect(_T("R0")).fltVal); tdConList.SetItemText(iIndex, 8, strDBVal); // tdConList.SetItemText(iIndex, 8, (LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("R0"))); strDBVal.Empty(); strDBVal.Format(_T("%f"), (float)pRecConList->GetCollect(_T("SP")).fltVal); tdConList.SetItemText(iIndex, 9, strDBVal); tdConList.SetItemData(iIndex, (int)pRecConList->GetCollect(_T("TSN")).lVal); // int nHLTime = 0; // if (dPeriod > 0) // { // nHLTime = GetFitEquationInfo(pRecConList->GetCollect(_T("TSN")).lVal,dPeriod); // } // // CString strHL =_T(""); // strHL.Format("%d", nHLTime); // tdConList.SetItemText(iIndex, 10,strHL.GetBuffer(0)); iIndex++; } pRecConList->MoveNext(); } pRecTd->Close(); pRecConList->Close(); return true; } bool CIpspCETd::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(); } try { szSql.Empty(); szSql.Format(_T("select Ecode,Format(Mdate,'YYYY-MM-DD') as Mdate,Format(Mtime,'HH:MM:SS') as Mtime, OMvalue, ") _T(" StatusCode from gr where TDID = %u order by Val(Ecode) desc"), m_dwID); pRecGrList->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText); int iOMVal = -1, iOMVal1 = -1; CString strOMVal; CString strMdate, strMtime; CString strStatus; CString strElectrode = _T(""); while ((short)VAL_ZERO == pRecGrList->adoEOF) { strElectrode.Empty(); strElectrode = (LPCTSTR)(_bstr_t)pRecGrList->GetCollect(_T("Ecode")); strElectrode.TrimLeft(); strElectrode.TrimRight(); if (_T("-1") == strElectrode) { strElectrode = _T("AB"); } else if (_T("-2") == strElectrode) { strElectrode = _T("MN"); } else { int iElectrode = atoi(strElectrode); if (iElectrode < -2) { strElectrode.Empty(); strElectrode.Format(_T("MN%d"),abs(iElectrode)-2); } else { //CString strErr = _T(""); //if (LANG_ZHCN == g_iUILanguage) //{ // strErr.Format(_T("没有期望的电极编号(%s)."), strElectrode); // AfxMessageBox(strErr); //} //else //{ // strErr.Format(_T("Unexpected electrode id(%s)."), strElectrode); // MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); //} // //pRecGrList->Close(); //return false; strElectrode.Empty(); strElectrode.Format(_T("%d"), abs(iElectrode)); } } tdGrList.InsertItem(iIndex, strElectrode); strOMVal.Empty(); strMdate.Empty(); strMtime.Empty(); strStatus.Empty(); iOMVal = (int)pRecGrList->GetCollect(_T("OMvalue")).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); } tdGrList.SetItemText(iIndex, 1, strOMVal); tdGrList.SetItemText(iIndex, 2, strStatus); tdGrList.SetItemText(iIndex, 3, strMdate); tdGrList.SetItemText(iIndex, 4, strMtime); iIndex++; pRecGrList->MoveNext(); } } catch(_com_error e) { hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL); AfxMessageBox((LPCTSTR)e.Description()); pRecGrList->Close(); return false; } pRecGrList->Close(); return true; } /* bool CIpspCETd::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 CIpspCETd::SaveTdToExcelFile(CString f_szFileName) { if (PathFileExists(f_szFileName)) { if (0 == DeleteFile(f_szFileName)) return FALSE; } _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 CIpspCETd::SaveTdToCsvFile(CString f_szFileName) { if (PathFileExists(f_szFileName)) { if (0 == DeleteFile(f_szFileName)) return FALSE; } FILE* pCsvFile; pCsvFile = fopen(f_szFileName, "w+"); if (NULL == pCsvFile) { CString str = _T(""); if (LANG_ZHCN == g_iUILanguage) { str.Format(_T("无法构建csv应用程序!错误码 %d"), GetLastError()); AfxMessageBox(str); } else { str.Format(_T("Can't build csv application!,err = %d"), GetLastError()); MessageBoxEx(NULL, str, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); } return FALSE; } this->SaveTdHeadToCsvFile(pCsvFile); this->SaveTdConToCsvFile(pCsvFile); this->SaveTdGRToCsvFile(pCsvFile); fclose(pCsvFile); return TRUE; } BOOL CIpspCETd::DisplayGraph() { return TRUE; } BOOL CIpspCETd::DisplayTPSplinesGraph(int iTSN) { /* CDispTdRecSplinesGrapDlg* pDispTdRecSplinesGrapDlg = new CDispTdRecSplinesGrapDlg(); pDispTdRecSplinesGrapDlg->DoModal(); delete pDispTdRecSplinesGrapDlg; */ ((CTdChannel*)this->m_tdChaList.GetAt(this->m_tdChaList.FindIndex(0)))->GetTdRecord(iTSN)->DisplayRawDataSplines(); return TRUE; } BOOL CIpspCETd::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((pRecTd->GetCollect(_T("Edistance")).vt == VT_NULL)?_T(""):(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 CIpspCETd::SaveTdConToExcelFile(_Worksheet* const pComSheet) { Range comRange; excel9::Font comFont; Range comCols; _RecordsetPtr pRecConList = NULL; _RecordsetPtr pRecTdAttr = NULL; CString szSql = _T(""); CString szRow = _T(""); CString strText = _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"))); 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"))); 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("x"))); 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("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("R0"))); comFont = comRange.GetFont(); comFont.SetBold(COleVariant((short)TRUE)); szRow.Empty(); szRow.Format(_T("J%d"), iIndex); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); comRange.SetValue2(COleVariant(_T("SP"))); comFont = comRange.GetFont(); comFont.SetBold(COleVariant((short)TRUE)); char chRDStart = 'K'; pRecConList.CreateInstance(_uuidof(Recordset)); pRecTdAttr.CreateInstance(_uuidof(Recordset)); bool bAddIpIndex = false; int iTWCnt = 0; CString strTW = _T(""); try { szSql.Empty(); szSql.Format(_T("select max(TWCNT) as MAX_TWCNT from td_spc_attr where TCHID in (select ID from tdchannel where TDID = %u order by TCHID)"),m_dwID); pRecTdAttr->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText); szSql.Empty(); if ((long)VAL_ZERO != pRecTdAttr->GetRecordCount()) { //在Excel中先加入Thl,D,r bAddIpIndex = true; szRow.Empty(); szRow.Format(_T("K%d"), iIndex); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); comRange.SetValue2(COleVariant(_T("Thl"))); 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("D"))); comFont = comRange.GetFont(); comFont.SetBold(COleVariant((short)TRUE)); szRow.Empty(); szRow.Format(_T("M%d"), iIndex); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); comRange.SetValue2(COleVariant(_T("r"))); comFont = comRange.GetFont(); comFont.SetBold(COleVariant((short)TRUE)); char chCol = 'N'; iTWCnt = pRecTdAttr->GetCollect(_T("MAX_TWCNT")).lVal; CString strField = _T("tb.THL as THL, tb.D as D, tb.r as r, tb.TWCNT as TWCNT"); int i = 0; for (i = 0; i < iTWCnt; i++) { //在excel中加入时窗列 strTW.Empty(); szRow.Empty(); strTW.Format(_T("η%d"),i); szRow = GetExcelHeaderIndex(chCol+i, iIndex); // AfxMessageBox(szRow); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); comRange.SetValue2(COleVariant(strTW)); comFont = comRange.GetFont(); comFont.SetBold(COleVariant((short)TRUE)); strTW.Empty(); strTW.Format(_T(",tb.TW%dIndex as TW%dIndex"),i, i); strField += strTW; } //在这里由于M和η的列数相等 chCol = chCol + iTWCnt; for (i = 0; i < iTWCnt; i++) { //在excel中加入M时窗列 strTW.Empty(); szRow.Empty(); strTW.Format(_T("M%d"),i); szRow = GetExcelHeaderIndex(chCol + i, iIndex); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); comRange.SetValue2(COleVariant(strTW)); comFont = comRange.GetFont(); comFont.SetBold(COleVariant((short)TRUE)); } chRDStart = chCol + i; szSql.Format(_T("select ta.a as a, ta.b as b, ta.x as x, ta.y as y, ta.N as N, ta.K as K, ta.I as I, ta.V as V, ta.R0 as R0, ta.SP as SP, ") _T("ta.bUse as bUse,ta.R0_LC as R0_LC, ta.M0_LC as M0_LC, %s from td1dcon ta, td_spc_attr tb where ta.TCHID in (select ID from tdchannel where TDID = %u order by ta.TCHID) ") _T("and ta.TCHID = tb.TCHID and ta.TSN = tb.TSN order by ta.TSN"),strField, m_dwID); } else szSql.Format(_T("select a,b,x,y,N,K,I,V,R0,SP,bUse,R0_LC,M0_LC from td1dcon where TCHID in (select ID from tdchannel where TDID = %u order by TCHID) order by TSN"), m_dwID); pRecTdAttr->Close(); 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()); } //计算离差的位置信息 for (int k = 0; k < 2; k++) { char chRDIndex = chRDStart + k; szRow.Empty(); szRow = GetExcelHeaderIndex(chRDIndex, iIndex); CString strRD = (k != 0) ? _T("M0_RD") : _T("R0_RD"); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); comRange.SetValue2(COleVariant(strRD)); comFont = comRange.GetFont(); comFont.SetBold(COleVariant((short)TRUE)); } bool bIsErrShow = false; while ((short)0 == pRecConList->adoEOF) { if (pRecConList->GetCollect(_T("bUse")).boolVal != 0)//0为access数据库中的false { iIndex++; szRow.Empty(); szRow.Format(_T("A%d"), iIndex); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("a")))); // comCols = comRange.GetEntireColumn(); // comCols.AutoFit(); szRow.Empty(); szRow.Format(_T("B%d"), iIndex); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("b")))); // comCols = comRange.GetEntireColumn(); // comCols.AutoFit(); szRow.Empty(); szRow.Format(_T("C%d"), iIndex); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("x")))); // comCols = comRange.GetEntireColumn(); // comCols.AutoFit(); szRow.Empty(); szRow.Format(_T("D%d"), iIndex); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); comRange.SetValue2(COleVariant((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("y")))); // 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(); szRow.Empty(); szRow.Format(_T("I%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("J%d"), iIndex); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); strText.Empty(); strText.Format(_T("%f"), pRecConList->GetCollect(_T("SP")).fltVal); comRange.SetValue2(COleVariant(strText)); if (bAddIpIndex) { szRow.Empty(); szRow.Format(_T("K%d"), iIndex); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); strText.Empty(); strText.Format(_T("%f"), pRecConList->GetCollect(_T("THL")).fltVal); comRange.SetValue2(COleVariant(strText)); szRow.Empty(); szRow.Format(_T("L%d"), iIndex); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); strText.Empty(); strText.Format(_T("%f"), pRecConList->GetCollect(_T("D")).fltVal); comRange.SetValue2(COleVariant(strText)); szRow.Empty(); szRow.Format(_T("M%d"), iIndex); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); strText.Empty(); strText.Format(_T("%f"), pRecConList->GetCollect(_T("r")).fltVal); comRange.SetValue2(COleVariant(strText)); char chCol = 'N'; CStringArray strIndexArr; CString strMVal = _T(""); int nSigTWTCnt = pRecConList->GetCollect(_T("TWCNT")).lVal; char chTestFlag; for (int iTWIndex= 0; iTWIndex < nSigTWTCnt; iTWIndex++) { //在excel中加入时窗列 strIndexArr.RemoveAll(); strText.Empty(); strMVal.Empty(); strTW.Empty(); strTW.Format(_T("TW%dIndex"),iTWIndex); strText = (LPCTSTR)(_bstr_t)pRecConList->GetCollect(_variant_t(strTW)); SplitterString(strIndexArr, strText, _T(";")); if (strIndexArr.GetSize() < 4) { if (!bIsErrShow) { bIsErrShow = true; if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("解析时窗索引错误!")); else MessageBoxEx(NULL, _T("Parser time window index error!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); } strText = _T(""); } else { strText = strIndexArr.GetAt(0); strMVal = strIndexArr.GetAt(2); strText.TrimLeft(); strText.TrimRight(); strMVal.TrimLeft(); strMVal.TrimRight(); } //写入ETA值 szRow.Empty(); szRow = GetExcelHeaderIndex(chCol+iTWIndex, iIndex); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); comRange.SetValue2(COleVariant(strText)); //写入M值 szRow.Empty(); szRow = GetExcelHeaderIndex(chCol+nSigTWTCnt+iTWIndex, iIndex); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); comRange.SetValue2(COleVariant(strMVal)); } } //计算离差的位置信息 CString strRDVal; for (int k = 0; k < 2; k++) { char chRDIndex = chRDStart + k; szRow.Empty(); szRow = GetExcelHeaderIndex(chRDIndex, iIndex); CString strRDIndex = (k != 0) ? _T("M0_LC") : _T("R0_LC"); strRDVal.Empty(); strRDVal.Format(_T("%f%%"),pRecConList->GetCollect(_variant_t(strRDIndex)).fltVal); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); comRange.SetValue2(COleVariant(strRDVal)); } comCols = comRange.GetEntireColumn(); comCols.AutoFit(); } pRecConList->MoveNext(); } pRecConList->Close(); return TRUE; } BOOL CIpspCETd::SaveTdToResCEFile(CString f_szFileName) { long lRet = VAL_ZERO; int iListIndex = (int)VAL_ZERO; CString szSql = _T(""); CString szCaption = _T(""); UINT uExecCode = (UINT)APP_SUCCESS; CString szFilePath = _T(""); CString szFileName = _T(""); CString szFile = _T(""); CStringArray saRecord; CString szTdName = _T(""); CString szTdCN = _T(""); CString szDESN = _T(""); CString szEDistance = _T(""); 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 szDistance = _T(""); CString szElevation = _T(""); //时窗所需参数--------------------------- int nTRwave = 0;//测试模式(发射波形) int nTcycle = 0;//发射周期 int nSample = 0;//采样频率 int nInteration = 0;//迭代次数 int nindustrial = 0;//工业频率 CString M0;//时窗值 CString szWidth = _T("");//时窗起始时间 + 时窗宽度 //-------------------- CStringArray szOrgArray; //保存原始数据 DWORD dwChID = (DWORD)VAL_ZERO; double dPeriod = 0; _RecordsetPtr pRecTd = NULL; _RecordsetPtr pRecCh = NULL; _RecordsetPtr pRecTdCon = NULL; _RecordsetPtr pRecTdTW = NULL; pRecTd.CreateInstance(_uuidof(Recordset)); pRecCh.CreateInstance(_uuidof(Recordset)); pRecTdCon.CreateInstance(_uuidof(Recordset)); pRecTdTW.CreateInstance(_uuidof(Recordset)); szSql.Empty(); szSql.Format(_T("select TDname,TdCN,DESN,Ttype,Edistance,TPamount,TRwave,TRfrequency,SAfrequency,N,Ifrequency 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 = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TDname")); // szTdCN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdCN")); szDESN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("DESN")); szTType = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Ttype")); szEDistance = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Edistance")); // szTPAmount = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TPamount")); //时窗需要--------------- nTRwave = pRecTd->GetCollect(_T("TRwave")).iVal; nTcycle = pRecTd->GetCollect(_T("TRfrequency")).iVal; nSample = pRecTd->GetCollect(_T("SAfrequency")).iVal; nInteration = pRecTd->GetCollect(_T("N")).iVal; nindustrial = pRecTd->GetCollect(_T("Ifrequency")).iVal; //---------------------------------- if (nTcycle < 0) { CString strInfo = _T(""); if (LANG_ZHCN == g_iUILanguage) { strInfo.Format(_T("获取频率信息错误 %d"), nTcycle); AfxMessageBox(strInfo.GetBuffer(0)); } else { strInfo.Format(_T("Get TRfrequency info Error, nVal = %d"), nTcycle); MessageBoxEx(NULL, _T("Export FileName is empty!!!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); } pRecTd->Close(); return false; } dPeriod = GetCycle(nTcycle); } 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; int iAR = pRecCh->GetCollect(_T("AR")).iVal; if (17 != iAR) { if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("只支持4极装置导出成DAT文件!")); else MessageBoxEx(NULL, _T("Only support export 4P-VES data to dat."), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); pRecCh->Close(); return false; } szAr = (LPCTSTR)(_bstr_t)pRecCh->GetCollect(_T("AR")); } pRecCh->Close(); CSaveInRes* pSaveInRes = NULL; pSaveInRes = new CSaveInRes; 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); //-----取出时窗-------------------------------------------------------- int nFirstTW = 0, nFirstTWWideth = 0; CIpspCETdRecord *pIPCetTdRec = new CIpspCETdRecord(dwChID, this->m_pConnection); szSql.Empty(); szSql.Format(_T("select M0ST,M0TW from ac where TDID = %u"), this->m_dwID); pRecTdTW->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText); if ((long)VAL_ZERO != pRecTdTW->GetRecordCount()) { nFirstTW = (int)pRecTdTW->GetCollect("M0ST").iVal; nFirstTWWideth = (int)pRecTdTW->GetCollect("M0TW").iVal; } pRecTdTW->Close(); szWidth.Format("%d,%d", nFirstTW , nFirstTWWideth); //--------------------------------------------------------------------------- double dVData = 0, dintegralArea=0; double dXDataArray[50],dYDataArray[50], dCoefficient[50], dtInfo[50]; szSql.Empty(); // szSql.Format(_T("select a,b,R0,bUse,TSN from td1dcon where TCHID = %u and bUse <> 0"), dwChID); szSql.Format(_T("select ta.a as a, ta.b as b, ta.R0 as R0, ta.bUse as bUse, ta.TSN as TSN, tb.TW0Index as TW0Index ") _T("from td1dcon ta, td_spc_attr tb where ta.TCHID = %u and ta.bUse <> 0 and ta.TCHID = tb.TCHID ") _T("and ta.TSN = tb.TSN order by ta.TSN"), dwChID); pRecTdCon->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText); ////////////////////////////////////////////////////////////////////////// saRecord.RemoveAll(); saRecord.Add(szTdName); //文件名 saRecord.Add("Schlumberger"); //装置名称 szTPAmount.Empty(); szTPAmount.Format(_T("%d"), pRecTdCon->GetRecordCount()); saRecord.Add(szTPAmount); saRecord.Add(szWidth); //时窗宽度 saRecord.Add("No"); pSaveInRes->AddFileHeader(IP, atoi(szAr.GetBuffer(0)), &saRecord);//创建文件头 pSaveInRes->InitCEFileHeader(&saRecord); ////////////////////////////////////////////////////////////////////////// while ((short)VAL_ZERO == pRecTdCon->adoEOF) { if (pRecTdCon->GetCollect(_T("bUse")).boolVal != 0)//0为access数据库中的false { szR0.Empty(); float fR0 = (float)pRecTdCon->GetCollect(_T("R0")).fltVal; szR0.Format(_T("%f"),fR0); szA.Empty(); szA = (LPCTSTR)(_bstr_t)pRecTdCon->GetCollect(_T("a")); szB.Empty(); szB = (LPCTSTR)(_bstr_t)pRecTdCon->GetCollect(_T("b")); M0.Empty(); M0 = pRecTdCon->GetCollect(_T("TW0Index")).vt == VT_NULL ? _T(""):(LPCTSTR)(_bstr_t)pRecTdCon->GetCollect(_T("TW0Index")); if (!M0.IsEmpty()) { float fM0Val = atof(M0); M0.Empty(); M0.Format(_T("%.4f"),fabs(fM0Val)); } else { M0 = _T("0.0000"); } //由于M0从下微机取,在这里已经不需要进行计算了 /* //取出每一条原始数据并计算时窗----------------- pIPCetTdRec->m_iTsn = (int)pRecTdCon->GetCollect(_T("TSN")).lVal; pIPCetTdRec->LoadOrgData(); ////////////////////////////////////////////////////////////////////////// //计算视电阻率M //取出原始数据进行计算 int nDataNum = atoi(pIPCetTdRec->m_saVRawData.GetAt(3).GetBuffer(0)); double dSplit = dPeriod / (nDataNum-1); nDataNum = nDataNum/4; memset(dXDataArray, 0, sizeof(dXDataArray)); memset(dYDataArray, 0, sizeof(dYDataArray)); memset(dCoefficient, 0, sizeof(dCoefficient)); memset(dtInfo, 0, sizeof(dtInfo)); double dXAverage = 0; int nIndex= 0; for (; nIndex < nDataNum; nIndex++) { dXDataArray[nIndex] = nIndex * dSplit; //以放电的第一个点的位置为基准进行多项式的计算 dXAverage += dXDataArray[nIndex]; dYDataArray[nIndex] = atof(pIPCetTdRec->m_saVRawData.GetAt(4 + nDataNum + nIndex)); } dXAverage = dXAverage / nDataNum; get_fit_equation(dXDataArray, dYDataArray, nDataNum, dCoefficient, nDataNum-1, dtInfo); dVData = 0; for (nIndex = 0; nIndex < 3; nIndex++) { dVData += atof(pIPCetTdRec->m_saVRawData.GetAt(3+nDataNum-nIndex)); } dVData = dVData/3; //获取采样时窗 get_integral_area(nFirstTW-dXAverage, nFirstTW+nFirstTWWideth-dXAverage, dCoefficient, nDataNum-1, dintegralArea); */ saRecord.RemoveAll(); saRecord.Add(szA); saRecord.Add(szB); saRecord.Add(szR0); saRecord.Add(M0); pSaveInRes->AddDateToFile(&saRecord); } pRecTdCon->MoveNext(); } pRecTdCon->Close(); saRecord.RemoveAll(); saRecord.Add("NO"); pSaveInRes->AddCEModel(&saRecord); pSaveInRes->CloseFile(); if (pSaveInRes) { delete pSaveInRes; pSaveInRes = NULL; } if (pIPCetTdRec) { delete pIPCetTdRec; pIPCetTdRec = NULL; } // return TRUE; } BOOL CIpspCETd::SaveTdHeadToCsvFile(FILE* pFile) { _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; CStringArray arrHead; if ((long)0 != pRecTd->GetRecordCount()) { strRowTitle.Empty(); if (LANG_ZHCN == g_iUILanguage) strRowTitle = _T("测试任务名称"); else strRowTitle = _T("Test data name"); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_DESN + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_SNAME + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_STYPE + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_TTYPE + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_ARRAY_TYPE + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_EAMOUNT + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_TPAMOUNT + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_CHAMOUNT + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_N + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_TRWAVE + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_TRFREQUENCY + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_IFREQUENCY + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_CLAYOUT + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_EDISTANCE + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_WEATHER + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_WDIR + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_TEMPERATURE + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_HEIGHT + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_HUMIDITY + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_CDATE + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_CTIME + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_TDATE + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_TTIME + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_OP + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); strRowTitle.Empty(); strRowTitle.LoadString(IDS_DB_TD_QA + g_UIOffset); arrHead.Add(strRowTitle + _T(',')); ///////////////////////////////////////////////////// int i = 0; arrHead[i++] += ((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TDname"))); arrHead[i++] += (((pRecTd->GetCollect(_T("DESN")).vt == VT_NULL) ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("DESN")))); arrHead[i++] += ((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()) { arrHead[i++] += (((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()) { arrHead[i++] += (((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()) { } 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()) { arrHead[i++] += (((LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("MEname")))); } pRecCm->Close(); ////////////////////////////////////////////////////////////////////////// arrHead[i++] += (((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Eamount")))); arrHead[i++] += (((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TPamount")))); arrHead[i++] += (((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("CHamount")))); arrHead[i++] += (((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()) { arrHead[i++] += (((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()) { arrHead[i++] += (((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()) { arrHead[i++] += (((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()) { arrHead[i++] += (((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()) { arrHead[i++] += (((LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")))); } pRecCm->Close(); arrHead[i++] += (((pRecTd->GetCollect(_T("Edistance")).vt == VT_NULL) ? _T("") : (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()) { arrHead[i++] += (((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()) { arrHead[i++] += (((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); } arrHead[i++] += ((strTmp)); arrHead[i++] += (((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); } arrHead[i++] += ((strTmp)); arrHead[i++] += (((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Cdate")))); arrHead[i++] += (((LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Ctime")))); arrHead[i++] += (((pRecTd->GetCollect(_T("Tdate")).vt == VT_NULL) ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Tdate")))); arrHead[i++] += (((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()) { } pRecCm->Close(); arrHead[i++] += (((pRecTd->GetCollect(_T("OP")).vt == VT_NULL) ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("OP")))); arrHead[i++] += (((pRecTd->GetCollect(_T("QA")).vt == VT_NULL) ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("QA")))); } pRecTd->Close(); for (int j = 0; j < arrHead.GetCount(); j++) { arrHead[j] += "\n"; fwrite(arrHead[j], 1, arrHead[j].GetLength(), pFile); } fflush(pFile); return TRUE; } BOOL CIpspCETd::SaveTdConToCsvFile(FILE* pFile) { _RecordsetPtr pRecConList = NULL; _RecordsetPtr pRecTdAttr = NULL; CString szSql = _T(""); CString szRow = _T(""); CString strText = _T(""); int iIndex = (int)0; iIndex = 1; szRow.Empty(); szRow += ((_T("a"))); szRow += ','; szRow += ((_T("b"))); szRow += ','; szRow += ((_T("x"))); szRow += ','; szRow += ((_T("y"))); szRow += ','; szRow += ((_T("Stacking"))); szRow += ','; szRow += ((_T("K"))); szRow += ','; szRow += ((_T("I(mA)"))); szRow += ','; szRow += ((_T("V(mV)"))); szRow += ','; szRow += ((_T("R0"))); szRow += ','; szRow += ((_T("SP"))); szRow += ','; pRecConList.CreateInstance(_uuidof(Recordset)); pRecTdAttr.CreateInstance(_uuidof(Recordset)); bool bAddIpIndex = false; int iTWCnt = 0; CString strTW = _T(""); try { szSql.Empty(); szSql.Format(_T("select max(TWCNT) as MAX_TWCNT from td_spc_attr where TCHID in (select ID from tdchannel where TDID = %u order by TCHID)"), m_dwID); pRecTdAttr->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText); szSql.Empty(); if ((long)VAL_ZERO != pRecTdAttr->GetRecordCount()) { //在Excel中先加入Thl,D,r bAddIpIndex = true; szRow += ((_T("Thl"))); szRow += ','; szRow += ((_T("D"))); szRow += ','; szRow += ((_T("r"))); szRow += ','; iTWCnt = pRecTdAttr->GetCollect(_T("MAX_TWCNT")).lVal; CString strField = _T("tb.THL as THL, tb.D as D, tb.r as r, tb.TWCNT as TWCNT"); int i = 0; for (i = 0; i < iTWCnt; i++) { //在excel中加入时窗列 strTW.Empty(); strTW.Format(_T("η%d"), i); szRow += strTW; szRow += ','; strTW.Empty(); strTW.Format(_T(",tb.TW%dIndex as TW%dIndex"), i, i); strField += strTW; } //在这里由于M和η的列数相等 for (i = 0; i < iTWCnt; i++) { //在excel中加入M时窗列 strTW.Empty(); strTW.Format(_T("M%d"), i); szRow += strTW; szRow += ','; } szSql.Format(_T("select ta.a as a, ta.b as b, ta.x as x, ta.y as y, ta.N as N, ta.K as K, ta.I as I, ta.V as V, ta.R0 as R0, ta.SP as SP, ") _T("ta.bUse as bUse,ta.R0_LC as R0_LC, ta.M0_LC as M0_LC, %s from td1dcon ta, td_spc_attr tb where ta.TCHID in (select ID from tdchannel where TDID = %u order by ta.TCHID) ") _T("and ta.TCHID = tb.TCHID and ta.TSN = tb.TSN order by ta.TSN"), strField, m_dwID); } else szSql.Format(_T("select a,b,x,y,N,K,I,V,R0,SP,bUse,R0_LC,M0_LC from td1dcon where TCHID in (select ID from tdchannel where TDID = %u order by TCHID) order by TSN"), m_dwID); pRecTdAttr->Close(); 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()); } //计算离差的位置信息 for (int k = 0; k < 2; k++) { CString strRD = (k != 0) ? _T("M0_RD") : _T("R0_RD"); szRow += strRD; szRow += ','; } szRow += "\n"; fwrite(szRow, 1, szRow.GetLength(), pFile); fflush(pFile); bool bIsErrShow = false; while ((short)0 == pRecConList->adoEOF) { if (pRecConList->GetCollect(_T("bUse")).boolVal != 0)//0为access数据库中的false { iIndex++; szRow.Empty(); szRow += (((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("a")))); szRow += ','; szRow += (((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("b")))); szRow += ','; szRow += (((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("x")))); szRow += ','; szRow += (((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("y")))); szRow += ','; szRow += (((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("N")))); szRow += ','; strText.Empty(); strText.Format(_T("%f"), pRecConList->GetCollect(_T("K")).fltVal); szRow += strText; szRow += ','; strText.Empty(); strText.Format(_T("%f"), pRecConList->GetCollect(_T("I")).fltVal); szRow += strText; szRow += ','; strText.Empty(); strText.Format(_T("%f"), pRecConList->GetCollect(_T("V")).fltVal); szRow += strText; szRow += ','; strText.Empty(); strText.Format(_T("%f"), pRecConList->GetCollect(_T("R0")).fltVal); szRow += strText; szRow += ','; strText.Empty(); strText.Format(_T("%f"), pRecConList->GetCollect(_T("SP")).fltVal); szRow += strText; szRow += ','; if (bAddIpIndex) { strText.Empty(); strText.Format(_T("%f"), pRecConList->GetCollect(_T("THL")).fltVal); szRow += strText; szRow += ','; strText.Empty(); strText.Format(_T("%f"), pRecConList->GetCollect(_T("D")).fltVal); szRow += strText; szRow += ','; strText.Empty(); strText.Format(_T("%f"), pRecConList->GetCollect(_T("r")).fltVal); szRow += strText; szRow += ','; CStringArray strIndexArr; CString strMVal = _T(""); int nSigTWTCnt = pRecConList->GetCollect(_T("TWCNT")).lVal; char chTestFlag; for (int iTWIndex = 0; iTWIndex < nSigTWTCnt; iTWIndex++) { //在excel中加入时窗列 strIndexArr.RemoveAll(); strText.Empty(); strMVal.Empty(); strTW.Empty(); strTW.Format(_T("TW%dIndex"), iTWIndex); strText = (LPCTSTR)(_bstr_t)pRecConList->GetCollect(_variant_t(strTW)); SplitterString(strIndexArr, strText, _T(";")); if (strIndexArr.GetSize() < 4) { if (!bIsErrShow) { bIsErrShow = true; if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("解析时窗索引错误!")); else MessageBoxEx(NULL, _T("Parser time window index error!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); } strText = _T(""); } else { strText = strIndexArr.GetAt(0); strMVal = strIndexArr.GetAt(2); strText.TrimLeft(); strText.TrimRight(); strMVal.TrimLeft(); strMVal.TrimRight(); } //写入ETA值 szRow += strText; szRow += ','; //写入M值 szRow += strMVal; szRow += ','; } } //计算离差的位置信息 CString strRDVal; for (int k = 0; k < 2; k++) { CString strRDIndex = (k != 0) ? _T("M0_LC") : _T("R0_LC"); strRDVal.Empty(); strRDVal.Format(_T("%f%%"), pRecConList->GetCollect(_variant_t(strRDIndex)).fltVal); szRow += strRDVal; szRow += ','; } szRow += "\n"; fwrite(szRow, 1, szRow.GetLength(), pFile); } pRecConList->MoveNext(); } pRecConList->Close(); fflush(pFile); return TRUE; } BOOL CIpspCETd::SaveTdGRToCsvFile(FILE* pFile) { _RecordsetPtr pRecGrList = NULL; CString szSql = _T(""); CString szRow = _T(""); int iIndex = (int)0; iIndex = 1; szRow.Empty(); szRow += ((_T("Electrode ID"))); szRow += ','; szRow += ((_T("Test date"))); szRow += ','; szRow += ((_T("Test time"))); szRow += ','; szRow += ((_T("P1 Rg(Ω)"))); szRow += ','; szRow += ((_T("Status"))); szRow += "\n"; fwrite(szRow, 1, szRow.GetLength(), pFile); fflush(pFile); 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) desc"), m_dwID); pRecGrList->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText); int iOMVal = -1, iOMVal1 = -1; CString strOMVal; CString strMdate, strMtime; CString strStatus; while ((short)0 == pRecGrList->adoEOF) { iIndex++; szRow.Empty(); szRow.Format(_T("A%d"), iIndex); CString strElectrode = (LPCTSTR)(_bstr_t)pRecGrList->GetCollect(_T("Ecode")); strElectrode.TrimLeft(); strElectrode.TrimRight(); if (_T("-1") == strElectrode) { strElectrode = _T("AB"); } else if (_T("-2") == strElectrode) { strElectrode = _T("MN"); } else { int iElectrode = atoi(strElectrode); if (iElectrode < -2) { strElectrode.Empty(); strElectrode.Format(_T("MN%d"), abs(iElectrode) - 2); } else { //CString strErr = _T(""); //if (LANG_ZHCN == g_iUILanguage) //{ // strErr.Format(_T("没有期望的电极编号(%s)."), strElectrode); // AfxMessageBox(strErr); //} //else //{ // strErr.Format(_T("Unexpected electrode id(%s)."), strElectrode); // MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); //} //pRecGrList->Close(); //return false; strElectrode.Empty(); strElectrode.Format(_T("%d"), abs(iElectrode)); } } szRow += strElectrode; szRow += ','; strOMVal.Empty(); strMdate.Empty(); strMtime.Empty(); strStatus.Empty(); iOMVal = (int)pRecGrList->GetCollect(_T("OMvalue")).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); } szRow += strMdate; szRow += ','; szRow += strMtime; szRow += ','; szRow += strOMVal; szRow += ','; szRow += strStatus; szRow += "\n"; fwrite(szRow, 1, szRow.GetLength(), pFile); pRecGrList->MoveNext(); } fflush(pFile); pRecGrList->Close(); return TRUE; } BOOL CIpspCETd::ShowTimeWindow(CListCtrl &tdConList, int iTsn) { tdConList.DeleteAllItems(); CreateWindowsTime(); //时窗所需参数--------------------------- int nTRwave = 0;//测试模式(发射波形) int nTcycle = 0;//发射周期 int nSample = 0;//采样频率 int nInteration = 0;//迭代次数 int nindustrial = 0;//工业频率 CString M0;//时窗值 //-------------------- DWORD dwChID = 0; CString szSql = _T(""); CString szMST = _T(""); CString szMTW = _T(""); CString szVrawdata = _T(""); CStringArray szOrgArray; //保存原始数据 _RecordsetPtr pRecTdTW = NULL; _RecordsetPtr pRecRawData = NULL; _RecordsetPtr pRecTd = NULL; _RecordsetPtr pRecCh = NULL; pRecTdTW.CreateInstance(_uuidof(Recordset)); pRecRawData.CreateInstance(_uuidof(Recordset)); pRecTd.CreateInstance(_uuidof(Recordset)); pRecCh.CreateInstance(_uuidof(Recordset)); szSql.Empty(); szSql.Format(_T("select TRwave,TRfrequency,SAfrequency,N,Ifrequency 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()) { //时窗需要--------------- nTRwave = pRecTd->GetCollect(_T("TRwave")).iVal; nTcycle = pRecTd->GetCollect(_T("TRfrequency")).iVal; nSample = pRecTd->GetCollect(_T("SAfrequency")).iVal; nInteration = pRecTd->GetCollect(_T("N")).iVal; nindustrial = pRecTd->GetCollect(_T("Ifrequency")).iVal; //---------------------------------- } pRecTd->Close(); _WinTimeList _WinList; memset(&_WinList, 0, sizeof(_WinTimeList)); szSql.Empty(); szSql.Format(_T("select M0ST,M0TW,M1ST,M1TW,M2ST,M2TW,M3ST,M3TW,M4ST,M4TW,M5ST,M5TW,M6ST,M6TW,M7ST,M7TW,M8ST,M8TW,M9ST,M9TW from ac where TDID = %u"), this->m_dwID); pRecTdTW->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText); int nTmpWTStart=0, nTmpWTWidth = 0; for (int n = 0; n < 10; n++) { szMST.Format("M%dST", n); szMTW.Format("M%dTW", n); nTmpWTStart = (int)pRecTdTW->GetCollect(szMST.GetBuffer(0)).iVal; nTmpWTWidth = (int)pRecTdTW->GetCollect(szMTW.GetBuffer(0)).iVal; if (0 == nTmpWTWidth) { break; } _WinList.timeWinList[n].wintime_StartTime = nTmpWTStart; _WinList.timeWinList[n].wintime_width = nTmpWTWidth; _WinList.ListLength++; } pRecTdTW->Close(); m_waveCount->windowList[0] = _WinList; szSql.Empty(); szSql.Format(_T("select ID 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; } pRecCh->Close(); szSql.Empty(); szSql.Format(_T("select Vrawdata from td1dcon where TCHID = %u and TSN = %d"), dwChID, iTsn); pRecRawData->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText); if (0 != pRecRawData->GetRecordCount()) { szVrawdata.Empty(); szVrawdata = (LPCTSTR)(_bstr_t)pRecRawData->GetCollect(_T("Vrawdata")); pRecRawData->Close(); } GetORGCStringToArray(szVrawdata,&szOrgArray); try { //this->CalculateTimeWindows(_WinList,&szOrgArray, nTRwave,nTcycle,nSample,nInteration,nindustrial); this->CalculateTWInfo(&szOrgArray, nTcycle); } catch (...) { return FALSE; } CString szStart = _T(""); CString szWidth = _T(""); CString szV2 = _T(""); CString szETA = _T(""); CString szM = _T(""); CString szIndex = _T(""); int iIndex = 0; for (iIndex = 0; iIndex < this->m_waveCount->windowList[0].ListLength;iIndex++) { szIndex.Format("M%d", iIndex); szStart.Format("%d", this->m_waveCount->windowList[0].timeWinList[iIndex].wintime_StartTime); szWidth.Format("%d", this->m_waveCount->windowList[0].timeWinList[iIndex].wintime_width); szV2.Format("%.3f", (fabs(m_waveCount->windowList[0].timeWinList[iIndex].wintime_V2)+fabs(m_waveCount->windowList[1].timeWinList[iIndex].wintime_V2))/2); szETA.Format("%.3f",(fabs(m_waveCount->windowList[0].timeWinList[iIndex].wintime_ETA)+fabs(m_waveCount->windowList[1].timeWinList[iIndex].wintime_ETA))/2); szM.Format("%.3f", (fabs(m_waveCount->windowList[0].timeWinList[iIndex].wintime_M)+fabs(m_waveCount->windowList[1].timeWinList[iIndex].wintime_M))/2); tdConList.InsertItem(iIndex, szIndex); tdConList.SetItemText(iIndex, 1, szStart); tdConList.SetItemText(iIndex, 2, szWidth); tdConList.SetItemText(iIndex, 3, szV2); tdConList.SetItemText(iIndex, 4, szETA); tdConList.SetItemText(iIndex, 5, szM); //填充第二次放电 szV2.Empty(); szETA.Empty(); szM.Empty(); szV2.Format("%.3f", this->m_waveCount->windowList[0].timeWinList[iIndex].wintime_V2); szETA.Format("%.3f",this->m_waveCount->windowList[0].timeWinList[iIndex].wintime_ETA); szM.Format("%.3f", this->m_waveCount->windowList[0].timeWinList[iIndex].wintime_M); tdConList.SetItemText(iIndex, 6, szV2); tdConList.SetItemText(iIndex, 7, szETA); tdConList.SetItemText(iIndex, 8, szM); //填充第二次充电 szV2.Empty(); szETA.Empty(); szM.Empty(); szV2.Format("%.3f", this->m_waveCount->windowList[1].timeWinList[iIndex].wintime_V2); szETA.Format("%.3f",this->m_waveCount->windowList[1].timeWinList[iIndex].wintime_ETA); szM.Format("%.3f", this->m_waveCount->windowList[1].timeWinList[iIndex].wintime_M); tdConList.SetItemText(iIndex, 9, szV2); tdConList.SetItemText(iIndex, 10, szETA); tdConList.SetItemText(iIndex, 11, szM); } // int nInsIndex = 0; // for (iIndex = 0; iIndex < this->m_waveCount->windowList[1].ListLength;iIndex++) // { // nInsIndex = iIndex + this->m_waveCount->windowList[0].ListLength; // szIndex.Format("M%d", nInsIndex); // szStart.Format("%d", this->m_waveCount->windowList[1].timeWinList[iIndex].wintime_StartTime); // szWidth.Format("%d", this->m_waveCount->windowList[1].timeWinList[iIndex].wintime_width); // szV2.Format("%.3f", this->m_waveCount->windowList[1].timeWinList[iIndex].wintime_V2); // szETA.Format("%.3f",this->m_waveCount->windowList[1].timeWinList[iIndex].wintime_ETA); // szM.Format("%.3f", this->m_waveCount->windowList[1].timeWinList[iIndex].wintime_M); // // // tdConList.InsertItem(nInsIndex, szIndex); // tdConList.SetItemText(nInsIndex, 1, szStart); // tdConList.SetItemText(nInsIndex, 2, szWidth); // tdConList.SetItemText(nInsIndex, 3, szV2); // tdConList.SetItemText(nInsIndex, 4, szETA); // tdConList.SetItemText(nInsIndex, 5, szM); // } this->FreeWindowsTime(); return TRUE; } int CIpspCETd::GetFitEquationInfo(int nTSN, double nPeriod) { //CIpsp2DTdRecord *pIP2DTdRecord(nTSN, this->m_pConnection); = new CIpsp2DTdRecord(dwChID, this->m_pConnection); CIpspCETdRecord cIPCETdRec(m_dwID, this->m_pConnection); cIPCETdRec.m_iTsn = nTSN; cIPCETdRec.LoadOrgData(); int nDataNum = atoi(cIPCETdRec.m_saVRawData.GetAt(3).GetString());// GetBuffer(0)); double dSplit = nPeriod/(nDataNum-1); nDataNum = nDataNum/4; double dXDataArray[50],dYDataArray[50], dCoefficient1[50],dCoefficient2[50],dtInfo[50]; double dVData = 0, dHalfV1Data = 0, dHalfV2Data =0; double dX1Average = 0,d2XAverage=0; //获取第一次放电的多项式的值 memset(dXDataArray, 0, sizeof(dXDataArray)); memset(dYDataArray, 0, sizeof(dYDataArray)); memset(dCoefficient1, 0, sizeof(dCoefficient1)); memset(dtInfo, 0, sizeof(dtInfo)); dX1Average = 0; int nIndex= 0; for (; nIndex < nDataNum; nIndex++) { dXDataArray[nIndex] = nIndex * dSplit; //以放电的第一个点的位置为基准进行多项式的计算 dX1Average += dXDataArray[nIndex]; dYDataArray[nIndex] = atof(cIPCETdRec.m_saVRawData.GetAt(4 + nDataNum + nIndex)); } dX1Average = dX1Average / nDataNum; dVData = 0; for (nIndex = 0; nIndex < 3; nIndex++) { dVData += atof(cIPCETdRec.m_saVRawData.GetAt(3 + nDataNum - nIndex).GetString());//GetBuffer(0)); } dVData = dVData/3; get_fit_equation(dXDataArray, dYDataArray, nDataNum, dCoefficient1, nDataNum-1, dtInfo); //获取第一次放电的半衰时 double dHL1Time = 0; get_hl_by_bisection(1,nPeriod/4-1,dCoefficient1,dX1Average,dVData/2,nDataNum-1,dHL1Time); //获取第而次放电的多项式的值 memset(dXDataArray, 0, sizeof(dXDataArray)); memset(dYDataArray, 0, sizeof(dYDataArray)); memset(dCoefficient2, 0, sizeof(dCoefficient1)); memset(dtInfo, 0, sizeof(dtInfo)); d2XAverage = 0; //获取采样时窗 for (nIndex= 0; nIndex < nDataNum; nIndex++) { dXDataArray[nIndex] = nIndex * dSplit; //以放电的第一个点的位置为基准进行多项式的计算 d2XAverage += dXDataArray[nIndex]; dYDataArray[nIndex] = atof(cIPCETdRec.m_saVRawData.GetAt(4 + nDataNum*3 + nIndex)); } d2XAverage = d2XAverage/nDataNum; dVData = 0; for (nIndex = 0; nIndex < 3; nIndex++) { dVData += atof(cIPCETdRec.m_saVRawData.GetAt(3 + 3 * nDataNum - nIndex).GetString());//GetBuffer(0)); } dVData = dVData/3; //计算第二段的多项式 double dHL2Time = 0; get_fit_equation(dXDataArray, dYDataArray, nDataNum, dCoefficient2, nDataNum-1, dtInfo); get_hl_by_bisection(1,nPeriod/(4*nDataNum)-1,dCoefficient2,d2XAverage,dVData/2,nDataNum-1,dHL2Time); return (dHL1Time+dHL2Time)/2; } BOOL CIpspCETd::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(); 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) desc"), m_dwID); pRecGrList->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText); int iOMVal = -1, iOMVal1 = -1; CString strOMVal; CString strMdate, strMtime; CString strStatus; while ((short)0 == pRecGrList->adoEOF) { iIndex++; szRow.Empty(); szRow.Format(_T("A%d"), iIndex); CString strElectrode = (LPCTSTR)(_bstr_t)pRecGrList->GetCollect(_T("Ecode")); strElectrode.TrimLeft(); strElectrode.TrimRight(); if (_T("-1") == strElectrode) { strElectrode = _T("AB"); } else if (_T("-2") == strElectrode) { strElectrode = _T("MN"); } else { int iElectrode = atoi(strElectrode); if (iElectrode < -2) { strElectrode.Empty(); strElectrode.Format(_T("MN%d"),abs(iElectrode)-2); } else { //CString strErr = _T(""); //if (LANG_ZHCN == g_iUILanguage) //{ // strErr.Format(_T("没有期望的电极编号(%s)."), strElectrode); // AfxMessageBox(strErr); //} //else //{ // strErr.Format(_T("Unexpected electrode id(%s)."), strElectrode); // MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); //} //pRecGrList->Close(); //return false; strElectrode.Empty(); strElectrode.Format(_T("%d"), abs(iElectrode)); } } comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); comRange.SetValue2(COleVariant(strElectrode)); strOMVal.Empty(); strMdate.Empty(); strMtime.Empty(); strStatus.Empty(); iOMVal = (int)pRecGrList->GetCollect(_T("OMvalue")).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); } szRow.Empty(); szRow.Format(_T("B%d"), iIndex); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); comRange.SetValue2(COleVariant(strMdate)); szRow.Empty(); szRow.Format(_T("C%d"), iIndex); comRange = pComSheet->GetRange(COleVariant(szRow),COleVariant(szRow)); comRange.SetValue2(COleVariant(strMtime)); 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)); pRecGrList->MoveNext(); } pRecGrList->Close(); return TRUE; } BOOL CIpspCETd::ExportIPDataToTxt(CString strFileName) { COperTxtFile operTxtFile; if (!operTxtFile.OpenFileforWrite(strFileName)) { return FALSE; } CString szSql = _T(""); CString strText = _T(""); CStringArray strArrTxt; _RecordsetPtr pRecConList = NULL; _RecordsetPtr pRecTdAttr = NULL; pRecConList.CreateInstance(_uuidof(Recordset)); pRecTdAttr.CreateInstance(_uuidof(Recordset)); strArrTxt.RemoveAll(); strArrTxt.Add(_T("a")); strArrTxt.Add(_T("b")); strArrTxt.Add(_T("x")); strArrTxt.Add(_T("y")); strArrTxt.Add(_T("Stacking")); strArrTxt.Add(_T("K")); strArrTxt.Add(_T("V(mV)")); strArrTxt.Add(_T("I(mA)")); strArrTxt.Add(_T("R0")); strArrTxt.Add(_T("SP")); strArrTxt.Add(_T("R0_RD")); strArrTxt.Add(_T("M0_RD")); bool bAddIpIndex = false; int iTWCnt = 0; CString strTW = _T(""); try { szSql.Empty(); szSql.Format(_T("select max(TWCNT) as MAX_TWCNT from td_spc_attr where TCHID in (select ID from tdchannel where TDID = %u order by TCHID)"),m_dwID); pRecTdAttr->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText); szSql.Empty(); if ((long)VAL_ZERO != pRecTdAttr->GetRecordCount()) { //在Excel中先加入Thl,D,r bAddIpIndex = true; strArrTxt.Add(_T("Thl")); strArrTxt.Add(_T("D")); strArrTxt.Add(_T("r")); iTWCnt = pRecTdAttr->GetCollect(_T("MAX_TWCNT")).lVal; CString strField = _T("tb.THL as THL, tb.D as D, tb.r as r, tb.TWCNT as TWCNT"); int i = 0; for (i = 0; i < iTWCnt; i++) { //在excel中加入时窗列 strTW.Empty(); strTW.Format(_T("η%d"),i); strArrTxt.Add(strTW); strTW.Empty(); strTW.Format(_T(",tb.TW%dIndex as TW%dIndex"),i, i); strField += strTW; } for (i = 0; i < iTWCnt; i++) { //在excel中加入时窗列 strTW.Empty(); strTW.Format(_T("M%d"),i); strArrTxt.Add(strTW); } szSql.Format(_T("select ta.a as a, ta.b as b, ta.x as x, ta.y as y, ta.N as N, ta.K as K, ta.I as I, ta.V as V, ta.R0 as R0, ta.SP as SP, ") _T("ta.bUse as bUse,ta.R0_LC as R0_LC, ta.M0_LC as M0_LC, %s from td1dcon ta, td_spc_attr tb where ta.TCHID in (select ID from tdchannel where TDID = %u order by ta.TCHID) ") _T("and ta.TCHID = tb.TCHID and ta.TSN = tb.TSN order by ta.TSN"),strField, m_dwID); } else szSql.Format(_T("select a,b,x,y,N,K,I,V,R0,SP,bUse,R0_LC,M0_LC from td1dcon where TCHID in (select ID from tdchannel where TDID = %u order by TCHID) order by TSN"), m_dwID); pRecTdAttr->Close(); 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; } bool bIsErrShow = false; while ((short)0 == pRecConList->adoEOF) { if (pRecConList->GetCollect(_T("bUse")).boolVal != 0)//0为access数据库中的false { strArrTxt.RemoveAll(); strArrTxt.Add((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("a"))); strArrTxt.Add((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("b"))); strArrTxt.Add((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("x"))); strArrTxt.Add((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("y"))); 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); 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); strText.Empty(); strText.Format(_T("%f%%"),pRecConList->GetCollect(_T("M0_LC")).fltVal); strArrTxt.Add(strText); if (bAddIpIndex) { strArrTxt.Add((LPCTSTR)(_bstr_t)pRecConList->GetCollect(_T("THL"))); strText.Empty(); strText.Format(_T("%f"),pRecConList->GetCollect(_T("D")).fltVal); strArrTxt.Add(strText); strText.Empty(); strText.Format(_T("%f"),pRecConList->GetCollect(_T("r")).fltVal); strArrTxt.Add(strText); CStringArray strIndexArr; CStringArray strArrMVal; strArrMVal.RemoveAll(); CString strMVal = _T(""); int nSigTWTCnt = pRecConList->GetCollect(_T("TWCNT")).lVal; int iTWIndex= 0; for (iTWIndex= 0; iTWIndex < nSigTWTCnt; iTWIndex++) { //在excel中加入时窗列 strIndexArr.RemoveAll(); strText.Empty(); strMVal.Empty(); strTW.Empty(); strTW.Format(_T("TW%dIndex"),iTWIndex); strText = (LPCTSTR)(_bstr_t)pRecConList->GetCollect(_variant_t(strTW)); SplitterString(strIndexArr, strText, _T(";")); if (strIndexArr.GetSize() < 4) { if (!bIsErrShow) { bIsErrShow = true; if (LANG_ZHCN == g_iUILanguage) AfxMessageBox(_T("解析时窗索引错误")); else MessageBoxEx(NULL, _T("Parser time window index error!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US)); } strText = _T("error"); strMVal = _T("error"); } else { strText = strIndexArr.GetAt(0); strMVal = strIndexArr.GetAt(2); strText.TrimLeft(); strText.TrimRight(); strMVal.TrimLeft(); strMVal.TrimRight(); } strArrTxt.Add(strText); strArrMVal.Add(strMVal); } for (iTWIndex= 0; iTWIndex < strArrMVal.GetSize(); iTWIndex++) { strArrTxt.Add(strArrMVal.GetAt(iTWIndex)); } } if (!operTxtFile.WriteFileContent(strArrTxt)) { operTxtFile.CloseFile(); return FALSE; } } pRecConList->MoveNext(); } pRecConList->Close(); operTxtFile.CloseFile(); return TRUE; }