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

6839 lines
216 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// TdManager.cpp: implementation of the CTdManager class.
//
//////////////////////////////////////////////////////////////////////
#include "geomative.h"
#include "TdManager.h"
#include "Constant.h"
#include "Rsp2DTd.h"
#include "Ipsp2DTd.h"
#include "RspCETd.h"
#include "SP2DTd.h"
#include "SP3DTd.h"
#include "SPCETd.h"
#include "IpspCETd.h"
#include "Ipsp3DTd.h"
#include "Rsp3DTd.h"
#include "optd2dto3ddlg.h"
#include "Res3DDatFile.h"
#include "GD10OperCmd.h"
#include "TaskProgressDlg.h"
#include "FileOperTools.h"
#include "TaskDataOper.h"
#include "DetcGD10Dev.h"
#include <iostream>
#include <string>
using namespace std; // Bringing the std namespace into scope
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
extern CGeoMativeApp theApp;
extern int g_iTransFileMode;
extern int g_iLanguage;
extern int g_iTransMode;
extern void TransDelay(int iTransMode, int iDS0, int iDS1, HWND hWnd = NULL);
extern void SplitterString(CStringArray &szArray,const CString& szSource, const CString& szSplitter);
extern BOOL GetSubStringInHeadAndTail(const CString& szSource, CString& szSub, const CString& szHead, const CString& szTail);
extern CString GetGrCodeText(int iCode);
extern HHOOK hHook;
extern LRESULT __stdcall CBTHookProc(long nCode, WPARAM wParam, LPARAM lParam);
extern int g_iUILanguage;
extern CString OnLineLocalTaskState(BYTE ucTaskStats);
extern CString Tm2GmtStr(time_t t);
extern CString Tm2LocalStr(time_t t);
#define MODULE_NAME _T("CTdManager")
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CTdManager::CTdManager(_ConnectionPtr& pConnection)
{
ASSERT(NULL != pConnection);
m_pConnection = pConnection;
m_tdLinkList.DeleteAll();
m_pFile = fopen("log\\td_time_error.txt", "ab");
m_log = _T("");
}
CTdManager::~CTdManager()
{
int iTdIndex = 0;
iTdIndex++;
while (NULL != m_tdLinkList.Find(iTdIndex))
{
delete m_tdLinkList.Find(iTdIndex);
iTdIndex++;
}
m_tdLinkList.DeleteAll();
}
bool CTdManager::ShowTdListByProject(DWORD dwProHandle, CListCtrl& tdList)
{
_RecordsetPtr pRecTdList = NULL;
_RecordsetPtr pRecTz = NULL;
_RecordsetPtr pRecTdHead = NULL;
_RecordsetPtr pRecDev = NULL;
_RecordsetPtr pRecPara = NULL;
_RecordsetPtr pRecCm = NULL;
CString szSql;
CString szLabel;
DWORD dwTdHandle = (DWORD)VAL_ZERO;
DWORD dwProID = m_handleProcessor.GetIDFromHandle(dwProHandle);
DWORD dwTzID = (DWORD)VAL_ZERO;
// dwTzID = m_handleProcessor.GetIDFromHandle(dwTzHandle);
int iIndex = (int)VAL_ZERO;
tdList.SetExtendedStyle(tdList.GetExtendedStyle() | LVS_EX_CHECKBOXES //复选框
| LVS_EX_FULLROWSELECT //选择后整行高亮
| LVS_EX_HEADERDRAGDROP //报表头可以拖拽
| LVS_EX_ONECLICKACTIVATE //单击激活
| LVS_EX_GRIDLINES //网格线(只适用与report风格的listctrl
| LVS_EX_MULTIWORKAREAS);//多工作区
pRecTdList.CreateInstance(_uuidof(Recordset));
pRecTz.CreateInstance(_uuidof(Recordset));
pRecTdHead.CreateInstance(_uuidof(Recordset));
pRecDev.CreateInstance(_uuidof(Recordset));
pRecPara.CreateInstance(_uuidof(Recordset));
pRecCm.CreateInstance(_uuidof(Recordset));
if ((int)VAL_ZERO != tdList.GetItemCount())
{
tdList.DeleteAllItems();
}
try
{
szSql.Empty();
szSql.Format(_T("select ID from tz where PRID = %d order by ID"), dwProID);
pRecTz->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO == pRecTz->GetRecordCount())
{
CString strErr = _T("");
if (LANG_ZHCN == g_iUILanguage)
{
strErr.Format(_T("项目缺少数据(%d)"), dwProID);
AfxMessageBox(strErr);
}
else
{
strErr.Format(_T("Data missing in project(%d)"), dwProID);
MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return false;
}
dwTzID = pRecTz->GetCollect(_T("ID")).lVal;
pRecTz->Close();
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 TZID = %u"), dwTzID);
pRecTdList->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(), MB_ICONINFORMATION);
}
while ((short)VAL_ZERO == pRecTdList->adoEOF)
{
tdList.InsertItem(iIndex, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("TDname")));
// tdList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Tlocation")));
tdList.SetItemText(iIndex, 1, (pRecTdList->GetCollect(_T("DESN")).vt==VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("DESN")));
tdList.SetItemText(iIndex, 2, (pRecTdList->GetCollect(_T("SCCN")).vt==VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("SCCN")));
tdList.SetItemText(iIndex, 3, (pRecTdList->GetCollect(_T("Sname")).vt==VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Sname")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Stype' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("Stype")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Stype")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 4, (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, pRecTdList->GetCollect(_T("Ttype")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Ttype")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 5, (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, pRecTdList->GetCollect(_T("Tmode")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Tmode")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 6, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdList.SetItemText(iIndex, 7, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Eamount")));
tdList.SetItemText(iIndex, 8, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("TPamount")));
tdList.SetItemText(iIndex, 9, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("CHamount")));
tdList.SetItemText(iIndex, 10, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("N")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'TRwave' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("TRwave")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("TRwave")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 11, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
if ((0 == pRecTdList->GetCollect(_T("Ttype")).iVal) || (1 == pRecTdList->GetCollect(_T("Ttype")).iVal))
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Trfrequency' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("Trfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Trfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 12, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
}
else if (2 == pRecTdList->GetCollect(_T("Ttype")).iVal)
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Trfrequencyself' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("Trfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Trfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 12, 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, pRecTdList->GetCollect(_T("Ifrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Ifrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 13, pRecCm->GetCollect(_T("Clabel")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
if (0 == pRecTdList->GetCollect(_T("Ifrequency")).iVal)
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'SAfrequency50' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("SAfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("SAfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 14, pRecCm->GetCollect(_T("Clabel")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
}
else if (1 == pRecTdList->GetCollect(_T("Ifrequency")).iVal)
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'SAfrequency60' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("SAfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("SAfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 14, (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, pRecTdList->GetCollect(_T("Clayout")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Clayout")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 15, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdList.SetItemText(iIndex, 16, (pRecTdList->GetCollect(_T("Espace")).vt==VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Espace")));
tdList.SetItemText(iIndex, 17, (pRecTdList->GetCollect(_T("Edistance")).vt==VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Edistance")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'weather' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("weather")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("weather")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 18, (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, pRecTdList->GetCollect(_T("WDIR")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("WDIR")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 19, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
CString szDefault = _T("");
szDefault = (pRecTdList->GetCollect(_T("temperature")).vt==VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("temperature"));
if (szDefault == "-9999")//若为该值则不显示东西
{
szDefault = "";
}
tdList.SetItemText(iIndex, 20, szDefault);
tdList.SetItemText(iIndex, 21, (pRecTdList->GetCollect(_T("height")).vt==VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("height")));
szDefault.Empty();
szDefault = (pRecTdList->GetCollect(_T("humidity")).vt==VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("humidity"));
if (szDefault == "-9999")//若为该值则不显示东西
{
szDefault = "";
}
tdList.SetItemText(iIndex, 22, szDefault);
tdList.SetItemText(iIndex, 23, (pRecTdList->GetCollect(_T("Cdate")).vt==VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Cdate")));
tdList.SetItemText(iIndex, 24, (pRecTdList->GetCollect(_T("Ctime")).vt==VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Ctime")));
tdList.SetItemText(iIndex, 25, (pRecTdList->GetCollect(_T("Tdate")).vt==VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Tdate")));
tdList.SetItemText(iIndex, 26, (pRecTdList->GetCollect(_T("Ttime")).vt==VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Ttime")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Rdirection' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("Rdirection")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Rdirection")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 27, pRecCm->GetCollect(_T("Clabel")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdList.SetItemText(iIndex, 28, (pRecTdList->GetCollect(_T("CRtime")).vt==VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("CRtime")));
tdList.SetItemText(iIndex, 29, (pRecTdList->GetCollect(_T("PM")).vt==VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("PM")));
tdList.SetItemText(iIndex, 30, (pRecTdList->GetCollect(_T("OP")).vt==VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("OP")));
tdList.SetItemText(iIndex, 31, (pRecTdList->GetCollect(_T("QA")).vt==VT_NULL)?_T(""):(LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("QA")));
switch (pRecTdList->GetCollect(_T("Ttype")).iVal)
{
case 0:
switch (pRecTdList->GetCollect(_T("Stype")).iVal)
{
case 0:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_CERSP);
break;
case 1:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_2DRSP);
break;
case 2:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_3DRSP);
break;
default:
break;
}
break;
case 1:
switch (pRecTdList->GetCollect(_T("Stype")).iVal)
{
case 0:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_CEIPSP);
break;
case 1:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_2DIPSP);
break;
case 2:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_3DIPSP);
break;
default:
break;
}
break;
case 2:
switch (pRecTdList->GetCollect(_T("Stype")).iVal)
{
case 0:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_CESP);
break;
case 1:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_2DSP);
break;
case 2:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_3DSP);
break;
default:
break;
}
break;
default:
break;
}
tdList.SetItemData(iIndex, dwTdHandle);
iIndex++;
pRecTdList->MoveNext();
}
pRecTdList->Close();
return true;
}
bool CTdManager::ShowTdListByTz(DWORD dwTzHandle, CListCtrl& tdList)
{
_RecordsetPtr pRecTdList = NULL;
_RecordsetPtr pRecTdHead = NULL;
_RecordsetPtr pRecDev = NULL;
_RecordsetPtr pRecPara = NULL;
_RecordsetPtr pRecCm = NULL;
CString szSql;
CString szLabel;
DWORD dwTdHandle = (DWORD)VAL_ZERO;
DWORD dwTzID = (DWORD)VAL_ZERO;
dwTzID = m_handleProcessor.GetIDFromHandle(dwTzHandle);
int iIndex = (int)VAL_ZERO;
pRecTdList.CreateInstance(_uuidof(Recordset));
pRecTdHead.CreateInstance(_uuidof(Recordset));
pRecDev.CreateInstance(_uuidof(Recordset));
pRecPara.CreateInstance(_uuidof(Recordset));
pRecCm.CreateInstance(_uuidof(Recordset));
if ((int)VAL_ZERO != tdList.GetItemCount())
{
tdList.DeleteAllItems();
}
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 TZID = %u"), dwTzID);
try
{
pRecTdList->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(), MB_ICONINFORMATION);
}
while ((short)VAL_ZERO == pRecTdList->adoEOF)
{
tdList.InsertItem(iIndex, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("TDname")));
// tdList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Tlocation")));
tdList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("DESN")));
tdList.SetItemText(iIndex, 2, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("SCCN")));
tdList.SetItemText(iIndex, 3, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Sname")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Stype' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("Stype")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Stype")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 4, (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, pRecTdList->GetCollect(_T("Ttype")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Ttype")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 5, (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, pRecTdList->GetCollect(_T("Tmode")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Tmode")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 6, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdList.SetItemText(iIndex, 7, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Eamount")));
tdList.SetItemText(iIndex, 8, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("TPamount")));
tdList.SetItemText(iIndex, 9, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("CHamount")));
tdList.SetItemText(iIndex, 10, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("N")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'TRwave' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("TRwave")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("TRwave")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 11, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
if ((0 == pRecTdList->GetCollect(_T("Ttype")).iVal) || (1 == pRecTdList->GetCollect(_T("Ttype")).iVal))
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Trfrequency' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("Trfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Trfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 12, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
}
else if (2 == pRecTdList->GetCollect(_T("Ttype")).iVal)
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Trfrequencyself' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("Trfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Trfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 12, 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, pRecTdList->GetCollect(_T("Ifrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Ifrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 13, pRecCm->GetCollect(_T("Clabel")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
if (0 == pRecTdList->GetCollect(_T("Ifrequency")).iVal)
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'SAfrequency50' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("SAfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("SAfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 14, pRecCm->GetCollect(_T("Clabel")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
}
else if (1 == pRecTdList->GetCollect(_T("Ifrequency")).iVal)
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'SAfrequency60' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("SAfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("SAfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 14, (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, pRecTdList->GetCollect(_T("Clayout")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Clayout")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 15, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdList.SetItemText(iIndex, 16, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Espace")));
tdList.SetItemText(iIndex, 17, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Edistance")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'weather' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("weather")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("weather")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 18, (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, pRecTdList->GetCollect(_T("WDIR")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("WDIR")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 19, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdList.SetItemText(iIndex, 20, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("temperature")));
tdList.SetItemText(iIndex, 21, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("height")));
tdList.SetItemText(iIndex, 22, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("humidity")));
tdList.SetItemText(iIndex, 23, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Cdate")));
tdList.SetItemText(iIndex, 24, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Ctime")));
tdList.SetItemText(iIndex, 25, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Tdate")));
tdList.SetItemText(iIndex, 26, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Ttime")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Rdirection' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("Rdirection")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Rdirection")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 27, pRecCm->GetCollect(_T("Clabel")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdList.SetItemText(iIndex, 28, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("CRtime")));
switch (pRecTdList->GetCollect(_T("Ttype")).iVal)
{
case 0:
switch (pRecTdList->GetCollect(_T("Stype")).iVal)
{
case 0:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_CERSP);
break;
case 1:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_2DRSP);
break;
case 2:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_3DRSP);
break;
default:
break;
}
break;
case 1:
switch (pRecTdList->GetCollect(_T("Stype")).iVal)
{
case 0:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_CEIPSP);
break;
case 1:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_2DIPSP);
break;
case 2:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_3DIPSP);
break;
default:
break;
}
break;
case 2:
switch (pRecTdList->GetCollect(_T("Stype")).iVal)
{
case 0:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_CESP);
break;
case 1:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_2DSP);
break;
case 2:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_3DSP);
break;
default:
break;
}
break;
default:
break;
}
tdList.SetItemData(iIndex, dwTdHandle);
iIndex++;
pRecTdList->MoveNext();
}
pRecTdList->Close();
return true;
}
bool CTdManager::ShowTd2DListByTz(DWORD dwTzHandle, int iEAmount, float fEDistance, int iAR, CListCtrl& tdList)
{
_RecordsetPtr pRecTdList = NULL;
_RecordsetPtr pRecTdHead = NULL;
_RecordsetPtr pRecDev = NULL;
_RecordsetPtr pRecPara = NULL;
_RecordsetPtr pRecCm = NULL;
CString szSql;
CString szLabel;
DWORD dwTdHandle = (DWORD)VAL_ZERO;
DWORD dwTzID = (DWORD)VAL_ZERO;
dwTzID = m_handleProcessor.GetIDFromHandle(dwTzHandle);
int iIndex = (int)VAL_ZERO;
pRecTdList.CreateInstance(_uuidof(Recordset));
pRecTdHead.CreateInstance(_uuidof(Recordset));
pRecDev.CreateInstance(_uuidof(Recordset));
pRecPara.CreateInstance(_uuidof(Recordset));
pRecCm.CreateInstance(_uuidof(Recordset));
if ((int)VAL_ZERO != tdList.GetItemCount())
{
tdList.DeleteAllItems();
}
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 TZID = %u and Stype = 1 and Eamount = %d and Edistance = %.1f "
"and ID in (select TDID from tdchannel where AR = %d)"), dwTzID, iEAmount, fEDistance, iAR);
try
{
pRecTdList->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(), MB_ICONINFORMATION);
}
while ((short)VAL_ZERO == pRecTdList->adoEOF)
{
tdList.InsertItem(iIndex, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("TDname")));
tdList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Tlocation")));
tdList.SetItemText(iIndex, 2, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("DESN")));
tdList.SetItemText(iIndex, 3, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("SCCN")));
tdList.SetItemText(iIndex, 4, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Sname")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Stype' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("Stype")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Stype")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 5, (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, pRecTdList->GetCollect(_T("Ttype")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Ttype")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 6, (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, pRecTdList->GetCollect(_T("Tmode")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Tmode")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 7, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdList.SetItemText(iIndex, 8, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Eamount")));
tdList.SetItemText(iIndex, 9, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("TPamount")));
tdList.SetItemText(iIndex, 10, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("CHamount")));
tdList.SetItemText(iIndex, 11, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("N")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'TRwave' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("TRwave")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("TRwave")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 12, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
if ((0 == pRecTdList->GetCollect(_T("Ttype")).iVal) || (1 == pRecTdList->GetCollect(_T("Ttype")).iVal))
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Trfrequency' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("Trfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Trfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 13, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
}
else if (2 == pRecTdList->GetCollect(_T("Ttype")).iVal)
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Trfrequencyself' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("Trfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Trfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 13, 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, pRecTdList->GetCollect(_T("Ifrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Ifrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 14, pRecCm->GetCollect(_T("Clabel")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
if (0 == pRecTdList->GetCollect(_T("Ifrequency")).iVal)
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'SAfrequency50' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("SAfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("SAfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 15, pRecCm->GetCollect(_T("Clabel")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
}
else if (1 == pRecTdList->GetCollect(_T("Ifrequency")).iVal)
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'SAfrequency60' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("SAfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("SAfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 15, (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, pRecTdList->GetCollect(_T("Clayout")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Clayout")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 16, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdList.SetItemText(iIndex, 17, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Espace")));
tdList.SetItemText(iIndex, 18, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Edistance")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'weather' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("weather")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("weather")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 19, (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, pRecTdList->GetCollect(_T("WDIR")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("WDIR")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 20, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdList.SetItemText(iIndex, 21, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("temperature")));
tdList.SetItemText(iIndex, 22, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("height")));
tdList.SetItemText(iIndex, 23, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("humidity")));
tdList.SetItemText(iIndex, 24, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Cdate")));
tdList.SetItemText(iIndex, 25, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Ctime")));
tdList.SetItemText(iIndex, 26, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Tdate")));
tdList.SetItemText(iIndex, 27, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Ttime")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Rdirection' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("Rdirection")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Rdirection")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 28, pRecCm->GetCollect(_T("Clabel")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdList.SetItemText(iIndex, 29, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("CRtime")));
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_2DRSP);
/*
switch (pRecTdList->GetCollect(_T("Ttype")).iVal)
{
case 0:
switch (pRecTdList->GetCollect(_T("Stype")).iVal)
{
case 0:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_CERSP);
break;
case 1:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_2DRSP);
break;
case 2:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_3DRSP);
break;
default:
break;
}
break;
case 1:
switch (pRecTdList->GetCollect(_T("Stype")).iVal)
{
case 0:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_CEIPSP);
break;
case 1:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_2DIPSP);
break;
case 2:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_3DIPSP);
break;
default:
break;
}
break;
default:
break;
}
*/
tdList.SetItemData(iIndex, dwTdHandle);
iIndex++;
pRecTdList->MoveNext();
}
pRecTdList->Close();
return true;
}
bool CTdManager::ShowTdListByDev(DWORD dwDevHandle, CListCtrl& tdList)
{
_RecordsetPtr pRecTdList = NULL;
_RecordsetPtr pRecTdHead = NULL;
_RecordsetPtr pRecDev = NULL;
_RecordsetPtr pRecPara = NULL;
_RecordsetPtr pRecCm = NULL;
CString szSql = _T("");
CString szLabel = _T("");
DWORD dwTdHandle = (DWORD)VAL_ZERO;
DWORD dwDevID = (DWORD)VAL_ZERO;
dwDevID = m_handleProcessor.GetIDFromHandle(dwDevHandle);
int iIndex = (int)VAL_ZERO;
pRecTdList.CreateInstance(_uuidof(Recordset));
pRecTdHead.CreateInstance(_uuidof(Recordset));
pRecDev.CreateInstance(_uuidof(Recordset));
pRecPara.CreateInstance(_uuidof(Recordset));
pRecCm.CreateInstance(_uuidof(Recordset));
if ((int)VAL_ZERO != tdList.GetItemCount())
{
tdList.DeleteAllItems();
}
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 DEID = %u"), dwDevID);
pRecTdList->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
while ((short)VAL_ZERO == pRecTdList->adoEOF)
{
tdList.InsertItem(iIndex, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("TDname")));
// tdList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Tlocation")));
tdList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("DESN")));
tdList.SetItemText(iIndex, 2, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("SCCN")));
tdList.SetItemText(iIndex, 3, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Sname")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Stype' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("Stype")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Stype")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 4, (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, pRecTdList->GetCollect(_T("Ttype")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Ttype")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 5, (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, pRecTdList->GetCollect(_T("Tmode")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Tmode")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 6, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdList.SetItemText(iIndex, 7, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Eamount")));
tdList.SetItemText(iIndex, 8, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("TPamount")));
tdList.SetItemText(iIndex, 9, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("CHamount")));
tdList.SetItemText(iIndex, 10, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("N")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'TRwave' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("TRwave")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("TRwave")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 11, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
if ((0 == pRecTdList->GetCollect(_T("Ttype")).iVal) || (1 == pRecTdList->GetCollect(_T("Ttype")).iVal))
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Trfrequency' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("Trfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Trfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 12, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
}
else if (2 == pRecTdList->GetCollect(_T("Ttype")).iVal)
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Trfrequencyself' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("Trfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Trfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 12, 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, pRecTdList->GetCollect(_T("Ifrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Ifrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 13, pRecCm->GetCollect(_T("Clabel")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
if (0 == pRecTdList->GetCollect(_T("Ifrequency")).iVal)
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'SAfrequency50' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("SAfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("SAfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 14, pRecCm->GetCollect(_T("Clabel")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
}
else if (1 == pRecTdList->GetCollect(_T("Ifrequency")).iVal)
{
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'SAfrequency60' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("SAfrequency")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("SAfrequency")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 14, (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, pRecTdList->GetCollect(_T("Clayout")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Clayout")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 15, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdList.SetItemText(iIndex, 16, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Espace")));
tdList.SetItemText(iIndex, 17, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Edistance")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'weather' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("weather")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("weather")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 18, (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, pRecTdList->GetCollect(_T("WDIR")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("WDIR")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 19, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
CString szDefault = _T("");
szDefault = (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("temperature"));
if (szDefault == "-9999")//若为该值则不显示东西
{
szDefault = "";
}
tdList.SetItemText(iIndex, 20, szDefault);
tdList.SetItemText(iIndex, 21, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("height")));
szDefault.Empty();
szDefault = (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("humidity"));
if (szDefault == "-9999")//若为该值则不显示东西
{
szDefault = "";
}
tdList.SetItemText(iIndex, 22, szDefault);
// tdList.SetItemText(iIndex, 21, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("temperature")));
// tdList.SetItemText(iIndex, 22, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("height")));
// tdList.SetItemText(iIndex, 23, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("humidity")));
tdList.SetItemText(iIndex, 23, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Cdate")));
tdList.SetItemText(iIndex, 24, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Ctime")));
tdList.SetItemText(iIndex, 25, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Tdate")));
tdList.SetItemText(iIndex, 26, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Ttime")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Rdirection' and Lang = %d and Cvalue = %s"),
g_iLanguage, pRecTdList->GetCollect(_T("Rdirection")).vt == VT_NULL ? _T("-1") : (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("Rdirection")));
pRecCm->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCm->GetRecordCount())
{
tdList.SetItemText(iIndex, 27, pRecCm->GetCollect(_T("Clabel")).vt == VT_NULL ? _T("") : (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdList.SetItemText(iIndex, 28, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("CRtime")));
tdList.SetItemText(iIndex, 29, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("PM")));
tdList.SetItemText(iIndex, 30, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("OP")));
tdList.SetItemText(iIndex, 31, (LPCTSTR)(_bstr_t)pRecTdList->GetCollect(_T("QA")));
switch (pRecTdList->GetCollect(_T("Ttype")).iVal)
{
case 0:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_2DRSP);
break;
case 1:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_2DIPSP);
break;
case 2:
dwTdHandle = m_handleProcessor.GenerateHandle((DWORD)pRecTdList->GetCollect(_T("ID")).ulVal, PZ_STYLE_TD_2DSP);
break;
default:
break;
}
tdList.SetItemData(iIndex, dwTdHandle);
iIndex++;
pRecTdList->MoveNext();
}
pRecTdList->Close();
return true;
}
void CTdManager::GetTaskAttr(DWORD dwHandle, DWORD& dwTdID, int& iStyle)
{
dwTdID = iStyle = 0;
iStyle = m_handleProcessor.GetStyleFromHandle(dwHandle);
dwTdID = m_handleProcessor.GetIDFromHandle(dwHandle);
}
CTestingData* CTdManager::GetTestingData(DWORD dwHandle)
{
CTestingData* pTd = NULL;
UINT uStyle = (UINT)VAL_ZERO;
DWORD dwID = (DWORD)VAL_ZERO;
uStyle = m_handleProcessor.GetStyleFromHandle(dwHandle);
pTd = m_tdLinkList.Get(dwHandle);
if (NULL == pTd)
{
dwID = m_handleProcessor.GetIDFromHandle(dwHandle);
switch (uStyle)
{
case PZ_STYLE_TD_3DRSP:
pTd = new CRsp3DTd(dwID, m_pConnection);
break;
case PZ_STYLE_TD_3DIPSP:
pTd = new CIpsp3DTd(dwID, m_pConnection);
break;
case PZ_STYLE_TD_2DRSP:
pTd = new CRsp2DTd(dwID, m_pConnection);
break;
case PZ_STYLE_TD_2DIPSP:
pTd = new CIpsp2DTd(dwID, m_pConnection);
break;
case PZ_STYLE_TD_CERSP:
pTd = new CRspCETd(dwID, m_pConnection);
break;
case PZ_STYLE_TD_CEIPSP:
pTd = new CIpspCETd(dwID, m_pConnection);
break;
case PZ_STYLE_TD_CESP:
pTd = new CSPCETd(dwID, m_pConnection);
break;
case PZ_STYLE_TD_2DSP:
pTd = new CSP2DTd(dwID, m_pConnection);
break;
case PZ_STYLE_TD_3DSP:
pTd = new CSP3DTd(dwID, m_pConnection);
break;
default:
break;
}
m_tdLinkList.Add(dwHandle, pTd);
}
return pTd;
}
void CTdManager::DeleteRspCETd(DWORD dwID)
{
_RecordsetPtr pRecTd = NULL;
_CommandPtr pCmdDelRspTd = NULL;
_CommandPtr pCmdUpd = NULL;
CString szSql = _T("");
CString szTdCN = _T("");
CString szDESN = _T("");
pRecTd.CreateInstance(_uuidof(Recordset));
pCmdDelRspTd.CreateInstance(_uuidof(Command));
pCmdDelRspTd->ActiveConnection = m_pConnection;
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("select TdCN,DESN from td where ID = %u"), dwID);
pRecTd->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTd->GetRecordCount())
{
szTdCN.Empty();
szTdCN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdCN")).bstrVal;
szDESN.Empty();
szDESN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("DESN")).bstrVal;
szSql.Empty();
szSql.Format(_T("update dev_syn_td set IsSyned = false where TdCN = '%s' and DESN = '%s'"), szTdCN, szDESN);
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
}
pRecTd->Close();
szSql.Empty();
szSql.Format(_T("delete from td1dcon where TCHID in (select ID from tdchannel where TDID = %u)"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from tdchannel where TDID = %u"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from td where ID = %u"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
}
void CTdManager::DeleteIpspCETd(DWORD dwID)
{
_RecordsetPtr pRecTd = NULL;
_CommandPtr pCmdDelIpspTd = NULL;
_CommandPtr pCmdUpd = NULL;
_CommandPtr pCmdTW = NULL;
CString szSql = _T("");
CString szTdCN = _T("");
CString szDESN = _T("");
pRecTd.CreateInstance(_uuidof(Recordset));
pCmdDelIpspTd.CreateInstance(_uuidof(Command));
pCmdDelIpspTd->ActiveConnection = m_pConnection;
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = m_pConnection;
pCmdTW.CreateInstance(_uuidof(Command));
pCmdTW->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("delete from ac where TDID = %u"), dwID);
pCmdTW->CommandText = szSql.AllocSysString();
pCmdTW->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("select TdCN,DESN from td where ID = %u"), dwID);
pRecTd->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTd->GetRecordCount())
{
szTdCN.Empty();
szTdCN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdCN")).bstrVal;
szDESN.Empty();
szDESN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("DESN")).bstrVal;
szSql.Empty();
szSql.Format(_T("update dev_syn_td set IsSyned = false where TdCN = '%s' and DESN = '%s'"), szTdCN, szDESN);
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
}
pRecTd->Close();
szSql.Empty();
szSql.Format(_T("delete from td1dcon where TCHID in (select ID from tdchannel where TDID = %u)"), dwID);
pCmdDelIpspTd->CommandText = szSql.AllocSysString();
pCmdDelIpspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from tdchannel where TDID = %u"), dwID);
pCmdDelIpspTd->CommandText = szSql.AllocSysString();
pCmdDelIpspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from td where ID = %u"), dwID);
pCmdDelIpspTd->CommandText = szSql.AllocSysString();
pCmdDelIpspTd->Execute(NULL, NULL, adCmdText);
}
void CTdManager::DeleteRsp2DTd(DWORD dwID)
{
_RecordsetPtr pRecTd = NULL;
_CommandPtr pCmdDelRspTd = NULL;
_CommandPtr pCmdUpd = NULL;
CString szSql = _T("");
CString szTdCN = _T("");
CString szDESN = _T("");
pRecTd.CreateInstance(_uuidof(Recordset));
pCmdDelRspTd.CreateInstance(_uuidof(Command));
pCmdDelRspTd->ActiveConnection = m_pConnection;
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("select TdCN,DESN from td where ID = %u"), dwID);
pRecTd->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTd->GetRecordCount())
{
szTdCN.Empty();
szTdCN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdCN")).bstrVal;
szDESN.Empty();
szDESN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("DESN")).bstrVal;
szSql.Empty();
szSql.Format(_T("update dev_syn_td set IsSyned = false where TdCN = '%s' and DESN = '%s'"), szTdCN, szDESN);
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
}
pRecTd->Close();
szSql.Empty();
szSql.Format(_T("delete from td2dcon where TCHID in (select ID from tdchannel where TDID = %u)"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from tdchannel where TDID = %u"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from gr where TDID = %u"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from td where ID = %u"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
}
void CTdManager::DeleteIpsp2DTd(DWORD dwID)
{
_RecordsetPtr pRecTd = NULL;
_CommandPtr pCmdDelIpspTd = NULL;
_CommandPtr pCmdUpd = NULL;
_CommandPtr pCmdTW = NULL;
CString szSql = _T("");
CString szTdCN = _T("");
CString szDESN = _T("");
pRecTd.CreateInstance(_uuidof(Recordset));
pCmdDelIpspTd.CreateInstance(_uuidof(Command));
pCmdDelIpspTd->ActiveConnection = m_pConnection;
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = m_pConnection;
pCmdTW.CreateInstance(_uuidof(Command));
pCmdTW->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("delete from ac where TDID = %u"), dwID);
pCmdTW->CommandText = szSql.AllocSysString();
pCmdTW->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("select TdCN,DESN from td where ID = %u"), dwID);
pRecTd->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTd->GetRecordCount())
{
szTdCN.Empty();
szTdCN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdCN")).bstrVal;
szDESN.Empty();
szDESN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("DESN")).bstrVal;
szSql.Empty();
szSql.Format(_T("update dev_syn_td set IsSyned = false where TdCN = '%s' and DESN = '%s'"), szTdCN, szDESN);
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
}
pRecTd->Close();
szSql.Empty();
szSql.Format(_T("delete from td2dcon where TCHID in (select ID from tdchannel where TDID = %u)"), dwID);
pCmdDelIpspTd->CommandText = szSql.AllocSysString();
pCmdDelIpspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from tdchannel where TDID = %u"), dwID);
pCmdDelIpspTd->CommandText = szSql.AllocSysString();
pCmdDelIpspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from gr where TDID = %u"), dwID);
pCmdDelIpspTd->CommandText = szSql.AllocSysString();
pCmdDelIpspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from td where ID = %u"), dwID);
pCmdDelIpspTd->CommandText = szSql.AllocSysString();
pCmdDelIpspTd->Execute(NULL, NULL, adCmdText);
}
void CTdManager::DeleteObjInMem(DWORD dwHandle)
{
delete m_tdLinkList.Find(dwHandle);
m_tdLinkList.Delete(dwHandle);
}
BOOL CTdManager::OnlineSevTDListSynToDB(STRemTaskArg *ptTaskArg, CString szDeSN)
{
_CommandPtr pCmdUpd = NULL;
CString szSql = _T("");
CString szLabel = _T("");
int iIndex = (int)VAL_ZERO;
BOOL bIsSyned = FALSE;
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = theApp.m_pConnection;
try
{
theApp.m_pConnection->BeginTrans();
szSql.Empty();
CString strDownloadTime;// = cDownloadTime.Format(_T("%Y-%m-%d %H:%M:%S"));
CTime cTime = CTime::GetCurrentTime();
time_t tmDownload = cTime.GetTime();
CString strTestDate = _T(" "), strTestTime = _T(" ");
time_t tTmp = ptTaskArg->uiStartTime;
CString strEdistance, strRectGrid, strElecStep;
//三维电极间距
if (2 == ptTaskArg->stMeasuArg.ucSptType)
strEdistance.Format(_T("%.2f,%.2f"), ptTaskArg->stMeasuArg.fXElecDistance, ptTaskArg->stMeasuArg.fYElecDistance);
else
strEdistance.Format(_T("%.2f"), ptTaskArg->stMeasuArg.fXElecDistance);
strElecStep.Format(_T("%.2f,%.2f"), ptTaskArg->stMeasuArg.fXElecStep, ptTaskArg->stMeasuArg.fYElecStep);
strRectGrid.Format(_T("%d,%d,%d,%d"), ptTaskArg->stMeasuArg.rcGridSize.left, ptTaskArg->stMeasuArg.rcGridSize.top, ptTaskArg->stMeasuArg.rcGridSize.right, ptTaskArg->stMeasuArg.rcGridSize.bottom);
if (tTmp > 0)
{
tm* tmStartTime;
tmStartTime = localtime(&tTmp);
strTestDate.Format(_T("%d-%d-%d"), tmStartTime->tm_year + 1900, tmStartTime->tm_mon + 1, tmStartTime->tm_mday);
strTestTime.Format(_T("%d:%d:%d"), tmStartTime->tm_hour, tmStartTime->tm_min, tmStartTime->tm_sec);
szSql.Format(_T("update td set TPamount = %d,TdName = '%s',Sname = '%s',Ttype = %d, TRfrequency = %d, Tmode = %d,Clayout = %d,N = %d,SAfrequency = %d, Stype = %d,Edistance ='%s',Espace='%s',rect='%s',LineDirection=%d,STime = %d,ETime = %d,TTimer = %u,OrgFlg = %d,DownloadTime=%u,TestGRFlag=%d,Tdate='%s',Ttime='%s',CreateTime=%d where DESN = '%s' and TDCN = '%s'"),
ptTaskArg->uiTotalNum, ptTaskArg->ucTDName, ptTaskArg->ucSciptName,
ptTaskArg->stMeasuArg.ucTestType, ptTaskArg->stMeasuArg.ucTxPeriod, ptTaskArg->stMeasuArg.ucArrayType,
ptTaskArg->stMeasuArg.ucCableLayout, ptTaskArg->stMeasuArg.ucStacking, ptTaskArg->stMeasuArg.iSAInterval, ptTaskArg->stMeasuArg.ucSptType,
strEdistance,strElecStep,strRectGrid,ptTaskArg->stMeasuArg.byLineDirection, ptTaskArg->uiStartTime, ptTaskArg->uiEndTime,
(long)ptTaskArg->uiTimerTime, ptTaskArg->ucOrgFlg, (long)tmDownload, ptTaskArg->ucTestGRFlag, strTestDate, strTestTime, ptTaskArg->uiCreateTime,
szDeSN, ptTaskArg->ucTaskID);
}
else
{
szSql.Format(_T("update td set TPamount = %d,TdName = '%s',Sname = '%s',Ttype = %d, TRfrequency = %d, Tmode = %d,Clayout = %d,N = %d,SAfrequency = %d, Stype = %d,Edistance = '%s',Espace='%s',rect='%s',LineDirection=%d, STime = %d,ETime = %d,TTimer = %u,OrgFlg = %d,DownloadTime=%u,TestGRFlag=%d,CreateTime=%d where DESN = '%s' and TDCN = '%s'"),
ptTaskArg->uiTotalNum, ptTaskArg->ucTDName, ptTaskArg->ucSciptName,
ptTaskArg->stMeasuArg.ucTestType, ptTaskArg->stMeasuArg.ucTxPeriod, ptTaskArg->stMeasuArg.ucArrayType,
ptTaskArg->stMeasuArg.ucCableLayout, ptTaskArg->stMeasuArg.ucStacking, ptTaskArg->stMeasuArg.iSAInterval, ptTaskArg->stMeasuArg.ucSptType,
strEdistance, strElecStep, strRectGrid, ptTaskArg->stMeasuArg.byLineDirection, ptTaskArg->uiStartTime, ptTaskArg->uiEndTime,
(long)ptTaskArg->uiTimerTime, ptTaskArg->ucOrgFlg, (long)tmDownload, ptTaskArg->ucTestGRFlag, ptTaskArg->uiCreateTime,
szDeSN, ptTaskArg->ucTaskID);
}
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
strDownloadTime.Format(_T("[%s][%d]:recent task download time, update database sql %s\n"), MODULE_NAME, __LINE__, szSql);
CFileOperTools::GetInstance()->WriteComLog(strDownloadTime);
szSql.Empty();
szSql.Format(_T("update tdchannel set AR = %d where TDID in(select ID from td where TDCN = '%s')"), ptTaskArg->stMeasuArg.ucArrayType, ptTaskArg->ucTaskID);
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
theApp.m_pConnection->CommitTrans();
}
catch (_com_error e)
{
AfxMessageBox(e.Description());
}
return TRUE;
}
BOOL CTdManager::InitialCableListByOnLineForSyn(CListCtrl &CableList, CString szDeSN, STRemCableCallInfo *ptLocalCableInfo)
{
_RecordsetPtr pRecTd = NULL;
CString szSql = _T("");
CString szLabel = _T("");
int iIndex = (int)VAL_ZERO;
BOOL bIsSyned = FALSE;
CableList.DeleteAllItems();
pRecTd.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select TolNum,N_ID,N_dir,N_Pow from CableInfo where SN = '%s'"), szDeSN);
pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
while ((short)VAL_ZERO == pRecTd->adoEOF)
{
CableList.InsertItem(iIndex, szLabel);
if (0 == iIndex)
{
//CableList.SetItemText(iIndex, 0, (LPCTSTR)(_bstr_t)szDeSN);
//CableList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TolNum")));
ptLocalCableInfo->ucTotalCount = pRecTd->GetCollect(_T("TolNum")).uintVal;
}
CString szStr;
szStr.Empty(); szStr.Format("%c", pRecTd->GetCollect(_T("N_dir")).bVal);
CableList.SetItemText(iIndex, 0, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("N_ID")).bVal);
CableList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)szStr);
CableList.SetItemText(iIndex, 2, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("N_Pow")));
ptLocalCableInfo->stCableInfo[iIndex].ucID = pRecTd->GetCollect(_T("N_ID")).bVal;
ptLocalCableInfo->stCableInfo[iIndex].ucDir = pRecTd->GetCollect(_T("N_dir")).bVal;
ptLocalCableInfo->stCableInfo[iIndex].ucPowe = pRecTd->GetCollect(_T("N_Pow")).bVal;
pRecTd->MoveNext();
iIndex++;
}
pRecTd->Close();
return TRUE;
}
BOOL CTdManager::InitialDevListByOnLineForSyn(CListCtrl &DevList, CString szDeSN, STSynDevParam *ptLocalDevParam)
{
_RecordsetPtr pRecTd = NULL;
CString szSql = _T("");
CString szLabel = _T("");
//DevList.DeleteAllItems();
pRecTd.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select HWV ,SWV, BatVol, PowerFreq,CableType, GrTh, BatAlarm,Stack, ChanNum,DownNum from device where SN = '%s'"),szDeSN);
pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
int iIndex = (int)VAL_ZERO;
CString str;
if (!pRecTd->adoEOF)
{
//DevList.InsertItem(iIndex, szLabel);
DevList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)szDeSN); iIndex++;
DevList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("HWV")).bstrVal); iIndex++;
DevList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("SWV")).bstrVal); iIndex++;
iIndex++;//温度暂不显示
str.Empty(); str.Format(_T("%d"),pRecTd->GetCollect(_T("BatVol")).uiVal);
DevList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)str); iIndex++;
DevList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("PowerFreq")).bVal); iIndex++;
DevList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("CableType")).bVal); iIndex++;
str.Empty(); str.Format(_T("%d"),pRecTd->GetCollect(_T("GrTh")).uintVal);
DevList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)str); iIndex++;
str.Empty(); str.Format(_T("%d"),pRecTd->GetCollect(_T("BatAlarm")).uiVal);
DevList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)str); iIndex++;
DevList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Stack")).bVal); iIndex++;
DevList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("ChanNum")).bVal); iIndex++;
DevList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("DownNum")).bVal); iIndex++;
//pRecTd->MoveNext();
CString szHwVer = pRecTd->GetCollect(_T("HWV")).bstrVal;
if (szHwVer.GetLength() >= 4)
{
ptLocalDevParam->ucHWVer[0] = szHwVer.GetAt(1);
ptLocalDevParam->ucHWVer[1] = szHwVer.GetAt(3);
}
CString szSwVer = pRecTd->GetCollect(_T("SWV")).bstrVal;
if (szSwVer.GetLength() >= 10)
{
ptLocalDevParam->ucSWVer[0] = szSwVer.GetAt(1);
ptLocalDevParam->ucSWVer[1] = szSwVer.GetAt(3);
ptLocalDevParam->ucSWVer[2] = szSwVer.GetAt(5);
ptLocalDevParam->ucSWVer[3] = atoi(szSwVer.Mid(8));
}
ptLocalDevParam->fBatteryVol = pRecTd->GetCollect(_T("BatVol")).uiVal;
ptLocalDevParam->ucPowerFreq = pRecTd->GetCollect(_T("PowerFreq")).bVal;
ptLocalDevParam->ucCableType = pRecTd->GetCollect(_T("CableType")).bVal;
ptLocalDevParam->iGrThreshold = pRecTd->GetCollect(_T("GrTh")).intVal;
ptLocalDevParam->ucBatteryAlarm = pRecTd->GetCollect(_T("BatAlarm")).bVal;
ptLocalDevParam->ucStacking = pRecTd->GetCollect(_T("Stack")).bVal;
ptLocalDevParam->ucChannelNum = pRecTd->GetCollect(_T("ChanNum")).bVal;
ptLocalDevParam->ucDownLoadNum = pRecTd->GetCollect(_T("DownNum")).bVal;
}
pRecTd->Close();
return TRUE;
}
BOOL CTdManager::InitialTDListByOnLineForSyn(CListCtrl &tdList, CString szDeSN,UINT32 &uiTotNum)
{
_RecordsetPtr pRecTd = NULL;
//_RecordsetPtr pRecCm = NULL;
CString szSql = _T("");
CString szLabel = _T("");
int iIndex = (int)VAL_ZERO;
BOOL bIsSyned = FALSE;
tdList.DeleteAllItems();
pRecTd.CreateInstance(_uuidof(Recordset));
//pRecCm.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select TdName,TdStatus,TDCN,TPamount,Sname, Ttype, TRfrequency, Tmode, Clayout, N, SAfrequency, Stype, Edistance, \
rect,rect_loc,STime,ETime,TTimer from td where DESN = '%s'"), szDeSN);
pRecTd->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
//
CString str;
while ((short)VAL_ZERO == pRecTd->adoEOF)
{
/*if (-1 == pRecTd->GetCollect(_T("IsSyned")).boolVal)
{
szLabel.Empty();
szLabel.LoadString(IDS_YES);
bIsSyned = TRUE;
}
else
{
szLabel.Empty();
szLabel.LoadString(IDS_NO);
bIsSyned = FALSE;
}*/
//tdList.SetItemData(iIndex, bIsSyned);
CString Rect = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("rect")).bstrVal;
CString RectLocal = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("rect_loc")).bstrVal;
CStringArray strArray;
strArray.RemoveAll();
SplitterString(strArray, Rect, ",");
int uiStartElec = 0;
int uiEndElec = 0;
//if (!strArray.IsEmpty()&&(2 <= strArray.GetSize()))
if (2 <= strArray.GetSize())
{
uiStartElec = atoi(strArray.GetAt(0));
uiEndElec = atoi(strArray.GetAt(1));
}
strArray.RemoveAll();
SplitterString(strArray, RectLocal, ",");
int uiStartLayer = 1;
int uiEndLayer = 1;
//if (!strArray.IsEmpty()&&(2 <= strArray.GetSize()))
if (2 <= strArray.GetSize())
{
uiStartLayer = atoi(strArray.GetAt(0));
uiEndLayer = atoi(strArray.GetAt(1));
}
BYTE bTdStatus = pRecTd->GetCollect(_T("TdStatus")).bVal;
CString szTdStatus = OnLineLocalTaskState(bTdStatus);
tdList.InsertItem(iIndex, szLabel);
tdList.SetItemText(iIndex, 0, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdName")));
tdList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)szTdStatus);
tdList.SetItemText(iIndex, 2, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TDCN")));
tdList.SetItemText(iIndex, 3, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Sname")));
tdList.SetItemText(iIndex, 4, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Ttype")));
tdList.SetItemText(iIndex, 5, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TRfrequency")));
tdList.SetItemText(iIndex, 6, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Tmode")).bVal);
tdList.SetItemText(iIndex, 7, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Clayout")));
tdList.SetItemText(iIndex, 8, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("N")));
tdList.SetItemText(iIndex, 9, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("SAfrequency")));
tdList.SetItemText(iIndex, 10, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Stype")));
tdList.SetItemText(iIndex, 11, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Edistance")));
str.Empty(); str.Format(_T("%d"),uiStartElec);
tdList.SetItemText(iIndex, 12, (LPCTSTR)(_bstr_t)str);
str.Empty(); str.Format(_T("%d"),uiEndElec);
tdList.SetItemText(iIndex, 13, (LPCTSTR)(_bstr_t)str);
str.Empty(); str.Format(_T("%d"),uiStartLayer);
tdList.SetItemText(iIndex, 14, (LPCTSTR)(_bstr_t)str);
str.Empty(); str.Format(_T("%d"),uiEndLayer);
tdList.SetItemText(iIndex, 15, (LPCTSTR)(_bstr_t)str);
time_t tmTime; CString szTime;
tmTime = pRecTd->GetCollect(_T("STime")).uintVal; szTime = Tm2LocalStr(tmTime);//Tm2GmtStr(tmTime);
tdList.SetItemText(iIndex, 16, (LPCTSTR)((_bstr_t)szTime));
tmTime = pRecTd->GetCollect(_T("ETime")).uintVal; szTime = Tm2LocalStr(tmTime);//Tm2GmtStr(tmTime);
tdList.SetItemText(iIndex, 17, (LPCTSTR)((_bstr_t)szTime));
tmTime = pRecTd->GetCollect(_T("TTimer")).uintVal; szTime = Tm2LocalStr(tmTime);//Tm2GmtStr(tmTime);
tdList.SetItemText(iIndex, 18, (LPCTSTR)((_bstr_t)szTime));
tdList.SetItemText(iIndex, 19, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TPamount")));
pRecTd->MoveNext();
iIndex++;
}
pRecTd->Close();
uiTotNum = iIndex;
return TRUE;
}
BOOL CTdManager::InitialTDListByProForSyn(CListCtrl &tdList, CString szDeSN, CString szPrCN)
{
_RecordsetPtr pRecTd = NULL;
_RecordsetPtr pRecCm = NULL;
CString szSql = _T("");
CString szLabel = _T("");
int iIndex = (int)VAL_ZERO;
BOOL bIsSyned = FALSE;
tdList.DeleteAllItems();
pRecTd.CreateInstance(_uuidof(Recordset));
pRecCm.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select IsSyned,TdCN,SubTaskCN,TdName,Ttype,Stype,Format(Cdate,'YYYY-MM-DD') as Cdate,Format(Ctime,'HH:MM:SS') as Ctime,PrName,PrCN,TzName,TzCN from dev_syn_td where DESN = '%s' and PrCN = '%s' and TdCN is not NULL"), szDeSN, szPrCN);
pRecTd->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
//
CString strSubTask;
while ((short)VAL_ZERO == pRecTd->adoEOF)
{
if (-1 == pRecTd->GetCollect(_T("IsSyned")).boolVal)
{
szLabel.Empty();
szLabel.LoadString(IDS_YES);
bIsSyned = TRUE;
}
else
{
szLabel.Empty();
szLabel.LoadString(IDS_NO);
bIsSyned = FALSE;
}
tdList.InsertItem(iIndex, szLabel);
// tdList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdCN")));
tdList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdName")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Ttype' and Lang = %d and Cvalue = %s"), g_iLanguage, (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())
{
tdList.SetItemText(iIndex, 2, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'stype' and Lang = %d and Cvalue = %s"), g_iLanguage, (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())
{
tdList.SetItemText(iIndex, 3, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdList.SetItemText(iIndex, 4, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Cdate")));
tdList.SetItemText(iIndex, 5, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Ctime")));
tdList.SetItemText(iIndex, 6, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdCN")));
// tdList.SetItemText(iIndex, 6, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("PrName")));
tdList.SetItemText(iIndex, 7, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("PrCN")));
// tdList.SetItemText(iIndex, 8, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TzName")));
tdList.SetItemText(iIndex, 8, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TzCN")));
strSubTask.Empty();
strSubTask = (VT_NULL == pRecTd->GetCollect(_T("SubTaskCN")).vt) ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("SubTaskCN"));
if (!strSubTask.IsEmpty())
tdList.SetItemText(iIndex, 9, strSubTask);
tdList.SetItemData(iIndex, bIsSyned);
pRecTd->MoveNext();
iIndex++;
}
pRecTd->Close();
return TRUE;
}
BOOL CTdManager::InitialTDListByTzForSyn(CListCtrl &tdList, CString szDeSN, CString szTzCN)
{
_RecordsetPtr pRecTd = NULL;
_RecordsetPtr pRecCm = NULL;
CString szSql = _T("");
CString szLabel = _T("");
int iIndex = (int)VAL_ZERO;
BOOL bIsSyned = FALSE;
tdList.DeleteAllItems();
pRecTd.CreateInstance(_uuidof(Recordset));
pRecCm.CreateInstance(_uuidof(Recordset));
if (NULL == pRecTd || NULL == pRecCm)
return FALSE;
szSql.Empty();
szSql.Format(_T("select IsSyned,TdCN,SubTaskCN,TdName,Ttype,Stype,Format(Cdate,'YYYY-MM-DD') as Cdate,Format(Ctime,'HH:MM:SS') as Ctime,PrName,PrCN,TzName,TzCN from dev_syn_td where DESN = '%s' and TzCN = '%s' and TdCN is not NULL"), szDeSN, szTzCN);
pRecTd->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
CString strSubTask;
while ((short)VAL_ZERO == pRecTd->adoEOF)
{
if (-1 == pRecTd->GetCollect(_T("IsSyned")).boolVal)
{
szLabel.Empty();
szLabel.LoadString(IDS_YES);
bIsSyned = TRUE;
}
else
{
szLabel.Empty();
szLabel.LoadString(IDS_NO);
bIsSyned = FALSE;
}
tdList.InsertItem(iIndex, szLabel);
// tdList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdCN")));
tdList.SetItemText(iIndex, 1, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdName")));
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'Ttype' and Lang = %d and Cvalue = %s"),
g_iLanguage, (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())
{
tdList.SetItemText(iIndex, 2, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
szSql.Empty();
szSql.Format(_T("select Clabel from cm where Cname = 'stype' and Lang = %d and Cvalue = %s"),
g_iLanguage, (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())
{
tdList.SetItemText(iIndex, 3, (LPCTSTR)(_bstr_t)pRecCm->GetCollect(_T("Clabel")));
}
pRecCm->Close();
tdList.SetItemText(iIndex, 4, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Cdate")));
tdList.SetItemText(iIndex, 5, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("Ctime")));
tdList.SetItemText(iIndex, 6, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdCN")));
// tdList.SetItemText(iIndex, 6, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("PrName")));
tdList.SetItemText(iIndex, 7, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("PrCN")));
// tdList.SetItemText(iIndex, 8, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TzName")));
tdList.SetItemText(iIndex, 8, (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TzCN")));
strSubTask.Empty();
strSubTask = (VT_NULL == pRecTd->GetCollect(_T("SubTaskCN")).vt) ? _T("") : (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("SubTaskCN"));
if (!strSubTask.IsEmpty())
tdList.SetItemText(iIndex, 9, strSubTask);
tdList.SetItemData(iIndex, bIsSyned);
pRecTd->MoveNext();
iIndex++;
}
pRecTd->Close();
return TRUE;
}
BOOL CTdManager::UploadCETdFromDev(CString szPrCN, CString szTzCN, CString szTdCN, CString strSubTdCN, CDevice* const pDev)
{
DWORD dwTzID = (DWORD)VAL_ZERO;
DWORD dwTdID = (DWORD)VAL_ZERO;
_RecordsetPtr pRecTdID = NULL;
_RecordsetPtr pRecTzID = NULL;
_CommandPtr pCmdUpd = NULL;
CString szSql = _T("");
CString szLocFilePath = _T("");
CString szFileName = _T("");
CString szHostPath = _T("");
CString strLog = _T("");
pRecTdID.CreateInstance(_uuidof(Recordset));
pRecTzID.CreateInstance(_uuidof(Recordset));
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("select ID from td where TdCN = '%s' and DESN = '%s'"), szTzCN, pDev->m_szDevSN);
pRecTdID->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTdID->GetRecordCount())
{
pRecTdID->Close();
return FALSE;
}
pRecTdID->Close();
szLocFilePath.Empty();
szLocFilePath.GetBufferSetLength(256);
::GetCurrentDirectory(szLocFilePath.GetLength(), szLocFilePath.GetBuffer(szLocFilePath.GetLength()));
szLocFilePath.ReleaseBuffer();
szLocFilePath = szLocFilePath + _T("\\CACHE\\projects\\");
szLocFilePath += szPrCN;
if (!PathFileExistsA(szLocFilePath)) {
::CreateDirectoryA(szLocFilePath, nullptr);
}
szLocFilePath += "\\" + szTzCN;
if (!PathFileExistsA(szLocFilePath)) {
::CreateDirectoryA(szLocFilePath, nullptr);
}
szLocFilePath += "\\";
szFileName.Empty();
szFileName = szTdCN + _T(".xml");
szHostPath = _T("/SD/projects/") + szPrCN + _T("/") + szTzCN;
CTaskProgressDlg* pTaskProgessDlg = NULL;
pTaskProgessDlg = new CTaskProgressDlg(FALSE, 4, pDev);
pTaskProgessDlg->Create(IDD_TASK_PROGRESS);
pTaskProgessDlg->ShowWindow(SW_SHOW);
HWND hWnd = pTaskProgessDlg->m_hWnd;
string strRawPath = CDetcGD10Dev::GetInstance()->GetGD10DevAddr() + szHostPath;
strRawPath.append("/");
string strFindPath = strRawPath;
strFindPath.append(szTdCN + "*.*");
WIN32_FIND_DATAA winFindData;
HANDLE hTemp = FindFirstFileA(strFindPath.c_str(), &winFindData);
if (INVALID_HANDLE_VALUE != hTemp)
{
do
{
string strOldName = winFindData.cFileName;
if ("." == strOldName || ".." == strOldName)
continue;
if (winFindData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
{
continue;
}
strOldName = strRawPath;
strOldName.append(winFindData.cFileName);
CString dst = szLocFilePath + winFindData.cFileName;
CopyFileExA(strOldName.c_str(), dst, nullptr, this, nullptr, 0);
} while (FindNextFileA(hTemp, &winFindData));
FindClose(hTemp);
}
{
try
{
m_pConnection->BeginTrans();
szSql.Empty();
szSql.Format(_T("select ID from tz where CN = '%s'"), szTzCN);
pRecTzID->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTzID->GetRecordCount())
{
dwTzID = pRecTzID->GetCollect(_T("ID")).ulVal;
}
pRecTzID->Close();
::SendMessage(hWnd, WM_UPDATE_TIPS, 0, (LPARAM)(LPCTSTR)(szFileName));
dwTdID = this->ImportTdHeadToDB(dwTzID, szLocFilePath+szFileName, pDev);
if (0 == dwTdID)
{
m_pConnection->RollbackTrans();
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
return FALSE;
}
szFileName.Empty();
szFileName = szTdCN + _T(".dat");
::SendMessage(hWnd, WM_UPDATE_TIPS, 0, (LPARAM)(LPCTSTR)(szFileName));
if (TRUE == this->ImportCETdConToDB(dwTdID, szLocFilePath + szFileName, pDev))
{
szFileName.Empty();
szFileName = szTdCN + _T(".org");
{
if (TRUE == this->ImportCETdOrgToDB(dwTdID, szLocFilePath + szFileName, pDev))
{
}
else
{
if (pTaskProgessDlg)
{
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
m_pConnection->RollbackTrans();
return FALSE;
}
}
}
else
{
if (pTaskProgessDlg)
{
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
DeleteFile(szLocFilePath + szFileName);
m_pConnection->RollbackTrans();
return FALSE;
}
////
szFileName.Empty();
szFileName = szTdCN + _T(".res");
::SendMessage(hWnd, WM_UPDATE_TIPS, 0, (LPARAM)(LPCTSTR)(szFileName));
//添加GR
if (TRUE == this->ImportCETGRToDB(dwTdID, szLocFilePath + szFileName))
{
DeleteFile(szLocFilePath + szFileName);
}
else
{
DeleteFile(szLocFilePath + szFileName);
m_pConnection->RollbackTrans();
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
return FALSE;
}
szSql.Empty();
szSql.Format(_T("update dev_syn_td set IsSyned = true where DESN = '%s' and TdCN = '%s'"),
pDev->m_szDevSN, szTdCN);
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
m_pConnection->CommitTrans();
}
catch (_com_error e)
{
if (pTaskProgessDlg)
{
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
AfxMessageBox((LPCTSTR)e.Description());
m_pConnection->RollbackTrans();
return FALSE;
}
}
if (pTaskProgessDlg)
{
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
return TRUE;
}
#ifdef TBR
BOOL CTdManager::Upload2DTdFromDev(CString szPrCN, CString szTzCN, CString szTdCN, CString strSubTdCN, CDevice* const pDev)
{
DWORD dwTzID = (DWORD)VAL_ZERO;
DWORD dwTdID = (DWORD)VAL_ZERO;
DWORD dwExTdID = (DWORD)VAL_ZERO;
_RecordsetPtr pRecTdID = NULL;
_RecordsetPtr pRecTzID = NULL;
CString szSql = _T("");
CString szLocFilePath = _T("");
CString szFileName = _T("");
CString strSaveFileName = _T("");
CString szHostFile = _T("");
CString strGDFile = _T("");
_CommandPtr pCmdUpd = NULL;
pRecTdID.CreateInstance(_uuidof(Recordset));
pRecTzID.CreateInstance(_uuidof(Recordset));
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("select ID from td where TdCN = '%s' and DESN = '%s'"), szTdCN, pDev->m_szDevSN);
pRecTdID->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTdID->GetRecordCount())
{
pRecTdID->Close();
return FALSE;
}
pRecTdID->Close();
szLocFilePath.Empty();
szLocFilePath.GetBufferSetLength(256);
::GetCurrentDirectory(szLocFilePath.GetLength(), szLocFilePath.GetBuffer(szLocFilePath.GetLength()));
szLocFilePath.ReleaseBuffer();
szLocFilePath = szLocFilePath + _T("\\CACHE\\");
//log
m_log += "\r\nReceiveFile2d.xml-------begin\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
//计算出总任务的个数,用于界面显示进度
CString strTemp;
int iTaskCount = 0;
int iDefaultTotalFileNum = 4;
CString strSaveSubTdCN = strSubTdCN;
if (!strSubTdCN.IsEmpty())
{
int iPos = -1;
strTemp = strSubTdCN;
do
{
iTaskCount++;
iPos = strTemp.Find(',');
if (iPos > 0)
strTemp = strTemp.Mid(iPos + 1);
} while (iPos > 0);
iDefaultTotalFileNum = (iTaskCount + 1) * 4;
}
CTaskProgressDlg* pTaskProgessDlg = NULL;
pTaskProgessDlg = new CTaskProgressDlg(FALSE, iDefaultTotalFileNum, pDev);
pTaskProgessDlg->Create(IDD_TASK_PROGRESS);
pTaskProgessDlg->ShowWindow(SW_SHOWNORMAL);
Sleep(1000);
CString strTDCNTemp = _T("");
//if (pTaskProgessDlg->StartTransferFile(szLocFilePath, szHostFile))
//if (TRUE == pDev->ReceiveFile(szLocFilePath, szHostFile))
if (1)
{
//log
m_log += "nReceiveFile.xml.true-------end\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
try
{
m_pConnection->BeginTrans();
szSql.Empty();
szSql.Format(_T("select ID from tz where CN = '%s'"), szTzCN);
pRecTzID->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTzID->GetRecordCount())
{
dwTzID = pRecTzID->GetCollect(_T("ID")).ulVal;
}
pRecTzID->Close();
strTDCNTemp = szTdCN;
int pTSN = (int)VAL_ONE;
int iTSN = (int)VAL_ONE;
//BOOL bUpdateTDTPamount = TRUE;
do
{
szFileName.Empty();
szFileName = strTDCNTemp + _T(".xml");
szHostFile = _T("/SD/projects/") + szPrCN + _T("/") + szTzCN + _T("/") + szFileName;
strGDFile.Empty();
strGDFile.Format(_T("%s%s"), CDetcGD10Dev::GetInstance()->GetGD10DevAddr(), szHostFile);
dwTdID = this->ImportTdHeadToDB(dwTzID, strGDFile, pDev, &dwExTdID);
//DeleteFile(szLocFilePath+szFileName);
//如果有辅助脚本,则需要额外增加传送2个文件,分别是辅助脚本的.dat,.org
if (0 != dwExTdID)
{
pTaskProgessDlg->AddExtFileNumber(2);
}
szFileName.Empty();
strSaveFileName = strTDCNTemp;
szFileName = strTDCNTemp + _T(".dat");
szHostFile = _T("/SD/projects/") + szPrCN + _T("/") + szTzCN + _T("/") + szFileName;
//log
m_log += "\r\nReceiveFile2d.dat-------begin\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
if (pTaskProgessDlg->StartTransferFile(szLocFilePath, szHostFile))
// if (TRUE == pDev->ReceiveFile(szLocFilePath, szHostFile))
{
//log
m_log += "nReceiveFile.dat.true-------end\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
strGDFile.Empty();
strGDFile.Format(_T("%s%s"), CDetcGD10Dev::GetInstance()->GetGD10DevAddr(), szHostFile);
if (TRUE == this->Import2DTdConToDB(dwTdID, strGDFile, pDev, &pTSN))
{
DeleteFile(szLocFilePath + szFileName);
//去掉解析org数据部分
szFileName.Empty();
szFileName = strTDCNTemp + _T(".org");
szHostFile = _T("/SD/projects/") + szPrCN + _T("/") + szTzCN + _T("/") + szFileName;
//log
m_log += "\r\nnReceiveFile2d.org-------end\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
if (pTaskProgessDlg->StartTransferFile(szLocFilePath, szHostFile))
// if (TRUE == pDev->ReceiveFile(szLocFilePath, szHostFile))
{
//log
m_log += "nReceiveFile.org.true-------end\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
strGDFile.Empty();
strGDFile.Format(_T("%s%s"), CDetcGD10Dev::GetInstance()->GetGD10DevAddr(), szHostFile);
if (TRUE == this->Import2DTdOrgToDB(dwTdID, strGDFile, pDev))
{
DeleteFile(szLocFilePath + szFileName);
}
else
{
m_pConnection->RollbackTrans();
return FALSE;
}
}
else
{
pTaskProgessDlg->ExitTransfile();
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
m_pConnection->RollbackTrans();
//log
m_log += "nReceiveFile.org.false-------end\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
return FALSE;
//log
}
}
else
{
if (pTaskProgessDlg)
{
pTaskProgessDlg->ExitTransfile();
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
DeleteFile(szLocFilePath + szFileName);
m_pConnection->RollbackTrans();
return FALSE;
}
}
else
{
pTaskProgessDlg->ExitTransfile();
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
//log
m_log += "nReceiveFile.dat.false-------end\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
m_pConnection->RollbackTrans();
return FALSE;
}
//遍历子任务节点
strTDCNTemp.Empty();
if (!strSubTdCN.IsEmpty())
{
int iPos = strSubTdCN.Find(',');
if (iPos > 0)
{
strTDCNTemp = strSubTdCN.Mid(0, iPos);
strSubTdCN = strSubTdCN.Mid(iPos + 1);
}
else
{
strTDCNTemp = strSubTdCN;
strSubTdCN.Empty();
}
}
szSql.Empty();
szSql.Format(_T("update td set TPamount=%d where ID =%d"), pTSN - 1, dwTdID);
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
} while (!strTDCNTemp.IsEmpty());
//上传辅助脚本的任务的相关信息
if (0 != dwExTdID)
{
CString strExFileName = strSaveFileName + _T("_1.dat");
szHostFile = _T("/SD/projects/") + szPrCN + _T("/") + szTzCN + _T("/") + strExFileName;
if (pTaskProgessDlg->StartTransferFile(szLocFilePath, szHostFile))
{
strGDFile.Empty();
strGDFile.Format(_T("%s%s"), CDetcGD10Dev::GetInstance()->GetGD10DevAddr(), szHostFile);
if (TRUE == this->Import2DTdConToDB(dwExTdID, strGDFile/*szLocFilePath+strExFileName*/, pDev, &iTSN))
{
DeleteFile(szLocFilePath + strExFileName);
strExFileName.Empty();
strExFileName = strSaveFileName + _T("_1.org");
szHostFile = _T("/SD/projects/") + szPrCN + _T("/") + szTzCN + _T("/") + strExFileName;
if (pTaskProgessDlg->StartTransferFile(szLocFilePath, szHostFile))
{
strGDFile.Empty();
strGDFile.Format(_T("%s%s"), CDetcGD10Dev::GetInstance()->GetGD10DevAddr(), szHostFile);
if (TRUE == this->Import2DTdOrgToDB(dwExTdID, strGDFile/*szLocFilePath+strExFileName*/, pDev))
{
DeleteFile(szLocFilePath + strExFileName);
}
else
{
DeleteFile(szLocFilePath + strExFileName);
m_pConnection->RollbackTrans();
return FALSE;
}
}
else
{
pTaskProgessDlg->ExitTransfile();
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
m_pConnection->RollbackTrans();
return FALSE;
}
}
else
{
if (pTaskProgessDlg)
{
pTaskProgessDlg->ExitTransfile();
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
DeleteFile(szLocFilePath + strExFileName);
m_pConnection->RollbackTrans();
return FALSE;
}
}
else
{
pTaskProgessDlg->ExitTransfile();
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
m_pConnection->RollbackTrans();
return FALSE;
}
}
// if (strSaveSubTdCN.IsEmpty())
// {
szFileName.Empty();
szFileName = szTdCN + _T(".res");
szHostFile = _T("/SD/projects/") + szPrCN + _T("/") + szTzCN + _T("/") + szFileName;
//log
m_log += "\r\nnReceiveFile2d.res-------end\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
// }
// else
// {
// int iPos = -1;
// iPos = strSaveSubTdCN.ReverseFind(',');
// if (iPos != -1)
// {
// strSaveSubTdCN = strSaveSubTdCN.Mid(iPos + 1);
// }
// szFileName.Empty();
// szFileName = strSaveSubTdCN + _T(".res");
// szHostFile = _T("/SD/projects/") + szPrCN + _T("/") + szTzCN + _T("/") + szFileName;
//
// //log
// m_log += "\r\nnReceiveFile2d.res-------end\r\n";
// fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
// fflush(m_pFile);
// }
//log
if (pTaskProgessDlg->StartTransferFile(szLocFilePath, szHostFile))
{
//log
m_log += "nReceiveFile.res.true-------end\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
if (TRUE == this->Import2DGRToDB(dwTdID, szLocFilePath + szFileName, pDev))
{
if (dwExTdID != 0)
{
if (TRUE == this->Import2DGRToDB(dwExTdID, szLocFilePath + szFileName, pDev))
{
DeleteFile(szLocFilePath + szFileName);
}
else
{
DeleteFile(szLocFilePath + szFileName);
m_pConnection->RollbackTrans();
return FALSE;
}
}
DeleteFile(szLocFilePath + szFileName);
}
else
{
DeleteFile(szLocFilePath + szFileName);
m_pConnection->RollbackTrans();
return FALSE;
}
}
else
{
if (pTaskProgessDlg)
{
pTaskProgessDlg->ExitTransfile();
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
//log
m_log += "nReceiveFile.res.false-------end\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
m_pConnection->RollbackTrans();
return FALSE;
//log
}
// else
// {
// m_pConnection->RollbackTrans();
// return FALSE;
// }
szSql.Empty();
szSql.Format(_T("update dev_syn_td set IsSyned = true where DESN = '%s' and TdCN = '%s'"), pDev->m_szDevSN, szTdCN);
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
// if (0 != dwExTdID)
// {
// szSql.Empty();
// szSql.Format(_T("update dev_syn_td set IsSyned = true where DESN = '%s' and TdCN = '%s'"), pDev->m_szDevSN, szTdCN+"_1");
// pCmdUpd->CommandText = szSql.AllocSysString();
// pCmdUpd->Execute(NULL, NULL, adCmdText);
// }
m_pConnection->CommitTrans();
}
catch (_com_error e)
{
if (pTaskProgessDlg)
{
pTaskProgessDlg->ExitTransfile();
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
hHook = SetWindowsHookEx(WH_CBT, (HOOKPROC)CBTHookProc, AfxGetInstanceHandle(), NULL);
AfxMessageBox(e.Description());
m_pConnection->RollbackTrans();
//log
CTime t;
t = CTime::GetCurrentTime();
m_log = t.Format("%Y-%m-%d,%H:%M:%S:");
m_log += "ERROR IN CATCH_0x02 " + szLocFilePath + szFileName + (LPCTSTR)e.Description() + "\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
return FALSE;
}
}
else
{
pTaskProgessDlg->ExitTransfile();
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
//log
m_log += "nReceiveFile.xml.false-------end\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
return FALSE;
//log
}
if (pTaskProgessDlg)
{
pTaskProgessDlg->ExitTransfile();
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
return TRUE;
}
#else
BOOL CTdManager::Upload2DTdFromDev(CString szPrCN, CString szTzCN, CString szTdCN, CString strSubTdCN, CDevice* const pDev)
{
DWORD dwTzID = (DWORD)VAL_ZERO;
DWORD dwTdID = (DWORD)VAL_ZERO;
DWORD dwExTdID = (DWORD)VAL_ZERO;
_RecordsetPtr pRecTdID = NULL;
_RecordsetPtr pRecTzID = NULL;
CString szSql = _T("");
CString szLocFilePath = _T("");
CString szFileName = _T("");
CString strSaveFileName = _T("");
CString szHostPath = _T("");
CString strGDFile = _T("");
_CommandPtr pCmdUpd = NULL;
pRecTdID.CreateInstance(_uuidof(Recordset));
pRecTzID.CreateInstance(_uuidof(Recordset));
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("select ID from td where TdCN = '%s' and DESN = '%s'"), szTdCN, pDev->m_szDevSN);
pRecTdID->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTdID->GetRecordCount())
{
pRecTdID->Close();
return FALSE;
}
pRecTdID->Close();
szLocFilePath.Empty();
szLocFilePath.GetBufferSetLength(256);
::GetCurrentDirectory(szLocFilePath.GetLength(), szLocFilePath.GetBuffer(szLocFilePath.GetLength()));
szLocFilePath.ReleaseBuffer();
szLocFilePath = szLocFilePath + _T("\\CACHE\\projects\\");
szLocFilePath += szPrCN;
if (!PathFileExistsA(szLocFilePath)) {
::CreateDirectoryA(szLocFilePath, nullptr);
}
szLocFilePath += "\\" + szTzCN;
if (!PathFileExistsA(szLocFilePath)) {
::CreateDirectoryA(szLocFilePath, nullptr);
}
szLocFilePath += "\\";
szFileName.Empty();
szFileName = szTdCN + _T(".xml");
szHostPath = _T("/SD/projects/") + szPrCN + _T("/") + szTzCN;
//计算出总任务的个数,用于界面显示进度
CString strTemp;
int iTaskCount = 0;
int iDefaultTotalFileNum = 4;
CString strSaveSubTdCN = strSubTdCN;
if (!strSubTdCN.IsEmpty())
{
int iPos = -1;
strTemp = strSubTdCN;
do
{
iTaskCount++;
iPos = strTemp.Find(',');
if (iPos > 0)
strTemp = strTemp.Mid(iPos + 1);
} while (iPos > 0);
iDefaultTotalFileNum = (iTaskCount + 1) * 4;
}
CTaskProgressDlg *pTaskProgessDlg = NULL;
pTaskProgessDlg = new CTaskProgressDlg(FALSE, iDefaultTotalFileNum, pDev);
pTaskProgessDlg->Create(IDD_TASK_PROGRESS);
pTaskProgessDlg->ShowWindow(SW_SHOWNORMAL);
Sleep(500);
HWND hWnd = pTaskProgessDlg->m_hWnd;
string strRawPath = CDetcGD10Dev::GetInstance()->GetGD10DevAddr() + szHostPath;
strRawPath.append("/");
string strFindPath = strRawPath;
strFindPath.append(szTdCN+"*.*");
WIN32_FIND_DATAA winFindData;
HANDLE hTemp = FindFirstFileA(strFindPath.c_str(), &winFindData);
if (INVALID_HANDLE_VALUE != hTemp)
{
do
{
string strOldName = winFindData.cFileName;
if ("." == strOldName || ".." == strOldName)
continue;
if (winFindData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
{
continue;
}
strOldName = strRawPath;
strOldName.append(winFindData.cFileName);
CString dst = szLocFilePath + winFindData.cFileName;
CopyFileExA(strOldName.c_str(), dst, nullptr, this, nullptr, 0);
}while (FindNextFileA(hTemp, &winFindData));
FindClose(hTemp);
}
CString strTDCNTemp = _T("");
try
{
m_pConnection->BeginTrans();
szSql.Empty();
szSql.Format(_T("select ID from tz where CN = '%s'"), szTzCN);
pRecTzID->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTzID->GetRecordCount())
{
dwTzID = pRecTzID->GetCollect(_T("ID")).ulVal;
}
pRecTzID->Close();
::SendMessage(hWnd, WM_UPDATE_TIPS, 0, (LPARAM)(LPCTSTR)(szFileName));
dwTdID = this->ImportTdHeadToDB(dwTzID, szLocFilePath + szFileName, pDev, &dwExTdID);
//如果有辅助脚本,则需要额外增加传送2个文件,分别是辅助脚本的.dat,.org
if (0 != dwExTdID)
{
}
strTDCNTemp = szTdCN;
int pTSN = (int)VAL_ONE;
int iTSN = (int)VAL_ONE;
do
{
szFileName.Empty();
strSaveFileName = strTDCNTemp;
szFileName = strTDCNTemp + _T(".dat");
::SendMessage(hWnd, WM_UPDATE_TIPS, 0, (LPARAM)(LPCTSTR)(szFileName));
if (TRUE == this->Import2DTdConToDB(dwTdID, szLocFilePath + szFileName, pDev, &pTSN))
{
szFileName.Empty();
szFileName = strTDCNTemp + _T(".org");
::SendMessage(hWnd, WM_UPDATE_TIPS, 0, (LPARAM)(LPCTSTR)(szFileName));
if (TRUE != this->Import2DTdOrgToDB(dwTdID, szLocFilePath + szFileName, pDev))
{
m_pConnection->RollbackTrans();
return FALSE;
}
}
else
{
if (pTaskProgessDlg)
{
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
m_pConnection->RollbackTrans();
return FALSE;
}
//遍历子任务节点
strTDCNTemp.Empty();
if (!strSubTdCN.IsEmpty())
{
int iPos = strSubTdCN.Find(',');
if (iPos > 0)
{
strTDCNTemp = strSubTdCN.Mid(0, iPos);
strSubTdCN = strSubTdCN.Mid(iPos + 1);
}
else
{
strTDCNTemp = strSubTdCN;
strSubTdCN.Empty();
}
}
szSql.Empty();
szSql.Format(_T("update td set TPamount=%d where ID =%d"), pTSN - 1, dwTdID);
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
} while (!strTDCNTemp.IsEmpty());
//上传辅助脚本的任务的相关信息
if (0 != dwExTdID)
{
CString strExFileName = strSaveFileName + _T("_1.dat");
if (TRUE == this->Import2DTdConToDB(dwExTdID, szLocFilePath + strExFileName, pDev, &iTSN))
{
strExFileName.Empty();
strExFileName = strSaveFileName + _T("_1.org");
{
if (TRUE != this->Import2DTdOrgToDB(dwExTdID, szLocFilePath + strExFileName, pDev))
{
m_pConnection->RollbackTrans();
return FALSE;
}
}
}
else
{
if (pTaskProgessDlg)
{
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
m_pConnection->RollbackTrans();
return FALSE;
}
}
szFileName.Empty();
szFileName = szTdCN + _T(".res");
::SendMessage(hWnd, WM_UPDATE_TIPS, 0, (LPARAM)(LPCTSTR)(szFileName));
if (TRUE == this->Import2DGRToDB(dwTdID, szLocFilePath + szFileName, pDev))
{
if (dwExTdID != 0)
{
if (TRUE != this->Import2DGRToDB(dwExTdID, szLocFilePath + szFileName, pDev))
{
m_pConnection->RollbackTrans();
return FALSE;
}
}
}
else
{
m_pConnection->RollbackTrans();
return FALSE;
}
szSql.Empty();
szSql.Format(_T("update dev_syn_td set IsSyned = true where DESN = '%s' and TdCN = '%s'"), pDev->m_szDevSN, szTdCN);
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
m_pConnection->CommitTrans();
}
catch (_com_error e)
{
if (pTaskProgessDlg)
{
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
hHook = SetWindowsHookEx(WH_CBT, (HOOKPROC)CBTHookProc, AfxGetInstanceHandle(), NULL);
AfxMessageBox(e.Description());
m_pConnection->RollbackTrans();
return FALSE;
}
if (pTaskProgessDlg)
{
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
return TRUE;
}
#endif
DWORD CTdManager::OnLineImportTdHeadToDB(STRemTaskArg *ptTaskArg, CString szDevSN)
{
//跳过抽头和滚动目前暂不实现
int iSkipCable = 0;
int iRollCnt = 0;
_CommandPtr pCmdIns = NULL;
_RecordsetPtr pRecTd = NULL;
_RecordsetPtr pRecScon = NULL;
pRecTd.CreateInstance(_uuidof(Recordset));
pRecScon.CreateInstance(_uuidof(Recordset));
pCmdIns.CreateInstance(_uuidof(Command));
pCmdIns->ActiveConnection = theApp.m_pConnection;
ST2DTaskParam stTaskParam;
stTaskParam.strSptName = ptTaskArg->ucSciptName;
stTaskParam.strTDName = ptTaskArg->ucTDName;
stTaskParam.strTestPlace = "";
//stTaskParam.fEspace = ptTaskArg->stMeasuArg.fElecSpace;
stTaskParam.iAR = ptTaskArg->stMeasuArg.ucArrayType;// m_iAR; //装置类型
stTaskParam.iCableLayout = ptTaskArg->stMeasuArg.ucCableLayout;
stTaskParam.iEAmount = ptTaskArg->uiEndElec - ptTaskArg->uiStartElec + 1;
stTaskParam.iEndElec = ptTaskArg->uiEndElec;
stTaskParam.iEndLayer = ptTaskArg->uiEndLayer;
stTaskParam.iRollCnt = iRollCnt;
stTaskParam.iSAInterval = ptTaskArg->stMeasuArg.iSAInterval;
stTaskParam.iSkipCable = iSkipCable;
stTaskParam.iSptID = 0;//tTaskArg->stMeasuArg;
stTaskParam.iSptType = ptTaskArg->stMeasuArg.ucSptType;
stTaskParam.iStacking = ptTaskArg->stMeasuArg.ucStacking;
stTaskParam.iStartElec = ptTaskArg->uiStartElec;
stTaskParam.iStartLayer = ptTaskArg->uiStartLayer;
stTaskParam.iTestType = ptTaskArg->stMeasuArg.ucTestType;
stTaskParam.iTxPeriod = ptTaskArg->stMeasuArg.ucTxPeriod;
stTaskParam.ucOrgFlg = ptTaskArg->ucOrgFlg;
stTaskParam.iTxWave = 6;
stTaskParam.ucTestGRFlag = ptTaskArg->ucTestGRFlag;
CString strTaskCN = ptTaskArg->ucTaskID;// m_guCodeCreator.GenerateGUIDCode();
CString strCreateDate = _T(""), strCreateTime = _T(""); //ptTaskArg->uiEndTime;
//strCreateDate.Format(_T("%04d-%02d-%02d"), g_sysCurTime.wYear, g_sysCurTime.wMonth, g_sysCurTime.wDay);
//strCreateTime.Format(_T("%02d:%02d:%02d"), g_sysCurTime.wHour, g_sysCurTime.wMinute, g_sysCurTime.wSecond);
CString strValildLayer = _T("");
strValildLayer.Format(_T("%d,%d"), stTaskParam.iStartLayer, stTaskParam.iEndLayer);
//strEspace.Format(_T("%f"), stTaskParam.fEspace);
CString strEdistance, strRectGrid, strElecStep;
//三维电极间距
if (2 == ptTaskArg->stMeasuArg.ucSptType)
{
strEdistance.Format(_T("%.2f,%.2f"), ptTaskArg->stMeasuArg.fXElecDistance, ptTaskArg->stMeasuArg.fYElecDistance);
strRectGrid.Format(_T("%d,%d,%d,%d"), ptTaskArg->stMeasuArg.rcGridSize.left, ptTaskArg->stMeasuArg.rcGridSize.top, ptTaskArg->stMeasuArg.rcGridSize.right, ptTaskArg->stMeasuArg.rcGridSize.bottom);
}
else
{
strEdistance.Format(_T("%.2f"), ptTaskArg->stMeasuArg.fXElecDistance);
strRectGrid.Format(_T("%d,%d"), stTaskParam.iStartElec, stTaskParam.iEndElec);
}
strElecStep.Format(_T("%.2f,%.2f"), ptTaskArg->stMeasuArg.fXElecStep, ptTaskArg->stMeasuArg.fYElecStep);
int iTaskID = 0;
CString szSql;
try
{
/*szSql.Empty();
szSql.Format(_T("select TPamount from scon where id = %d"), stTaskParam.iSptID);
pRecScon->Open(szSql.AllocSysString(), _variant_t((IDispatch*)theApp.m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if (pRecScon->GetRecordCount() < 1)
{
pRecScon->Close();
CString strErr = _T("");
strErr.Format(_T("查询脚本信息(%d)失败"), stTaskParam.iSptID);
AfxMessageBox(strErr);
return -1;
}
int iTPmount = pRecScon->GetCollect(_T("TPamount")).lVal;
pRecScon->Close();*/
int iTPmount = ptTaskArg->uiTotalNum;
//获取测区ID
int iTzID = 1;
CString strDownloadTime;// = cDownloadTime.Format(_T("%Y-%m-%d %H:%M:%S"));
CTime cTime = CTime::GetCurrentTime();
time_t tmDownload = cTime.GetTime();
theApp.m_pConnection->BeginTrans();
szSql.Empty();
CString strTestDate = _T(" "), strTestTime = _T(" ");
time_t tTmp = ptTaskArg->uiStartTime;
if (tTmp > 0)
{
tm* tmStartTime;
tmStartTime = localtime(&tTmp);
strTestDate.Format(_T("%d-%d-%d"), tmStartTime->tm_year + 1900, tmStartTime->tm_mon + 1, tmStartTime->tm_mday);
strTestTime.Format(_T("%d:%d:%d"), tmStartTime->tm_hour, tmStartTime->tm_min, tmStartTime->tm_sec);
szSql.Format(_T("insert into td(TDname,TDCN,Tlocation,TZID,SCID,Sname,Stype,Ttype,StartElec,EndElec,Eamount,TPamount,CHamount,N,TRwave,TRfrequency,SAfrequency,"
"Clayout, SkipCable, CRTime, Edistance, rect, rect_loc,DESN,STime,ETime,TTimer,OrgFlg,DownloadTime,TestGRFlag,Tdate,Ttime,CreateTime,Espace,LineDirection) "
"values('%s','%s','%s',%d,%u,'%s',%u,%u,%d,%d,%d,%d,1,%d,%d,%d,%d, %d, %d, %d, '%s', '%s', '%s','%s',%d,%d,%d,%d,%d,%d,'%s','%s',%d,'%s',%d)"),
stTaskParam.strTDName, strTaskCN, stTaskParam.strTestPlace, iTzID,
stTaskParam.iSptID, stTaskParam.strSptName, stTaskParam.iSptType,
stTaskParam.iTestType,stTaskParam.iStartElec, stTaskParam.iEndElec, stTaskParam.iEAmount, iTPmount, stTaskParam.iStacking,
stTaskParam.iTxWave, stTaskParam.iTxPeriod, stTaskParam.iSAInterval,
stTaskParam.iCableLayout, stTaskParam.iSkipCable, stTaskParam.iRollCnt,
strEdistance, strRectGrid, strValildLayer, szDevSN, ptTaskArg->uiStartTime, \
ptTaskArg->uiEndTime, ptTaskArg->uiTimerTime, stTaskParam.ucOrgFlg, (long)tmDownload, stTaskParam.ucTestGRFlag, strTestDate, strTestTime, ptTaskArg->uiCreateTime, strElecStep, ptTaskArg->stMeasuArg.byLineDirection);
}
else
{
szSql.Format(_T("insert into td(TDname,TDCN,Tlocation,TZID,SCID,Sname,Stype,Ttype,StartElec,EndElec,Eamount,TPamount,CHamount,N,TRwave,TRfrequency,SAfrequency,"
"Clayout, SkipCable, CRTime, Edistance, rect, rect_loc,DESN,STime,ETime,TTimer,OrgFlg,DownloadTime,TestGRFlag,CreateTime,Espace,LineDirection) "
"values('%s','%s','%s',%d,%u,'%s',%u,%u,%d,%d,%d,%d,1,%d,%d,%d,%d, %d, %d, %d, '%s', '%s', '%s','%s',%d,%d,%d,%d,%d,%d,%d,'%s',%d)"),
stTaskParam.strTDName, strTaskCN, stTaskParam.strTestPlace, iTzID,
stTaskParam.iSptID, stTaskParam.strSptName, stTaskParam.iSptType,
stTaskParam.iTestType, stTaskParam.iStartElec, stTaskParam.iEndElec, stTaskParam.iEAmount, iTPmount, stTaskParam.iStacking,
stTaskParam.iTxWave, stTaskParam.iTxPeriod, stTaskParam.iSAInterval,
stTaskParam.iCableLayout, stTaskParam.iSkipCable, stTaskParam.iRollCnt,
strEdistance, strRectGrid, strValildLayer, szDevSN, ptTaskArg->uiStartTime, \
ptTaskArg->uiEndTime, ptTaskArg->uiTimerTime, stTaskParam.ucOrgFlg, (long)tmDownload, stTaskParam.ucTestGRFlag, ptTaskArg->uiCreateTime, strElecStep, ptTaskArg->stMeasuArg.byLineDirection);
}
pCmdIns->CommandText = szSql.AllocSysString();
strDownloadTime.Format(_T("[%s][%d]zm:recent task download time, insert database sql%s"), MODULE_NAME, __LINE__, szSql);
CFileOperTools::GetInstance()->WriteComLog(strDownloadTime);
pCmdIns->Execute(NULL, NULL, adCmdText);
pRecTd->Open(_T("select max(ID) as ID from td "), _variant_t((IDispatch*)theApp.m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if (pRecTd->GetRecordCount() > 0)
{
iTaskID = pRecTd->GetCollect(_T("ID")).ulVal;
}
pRecTd->Close();
//插入tdchannel表
szSql.Empty();
szSql.Format(_T("insert into tdchannel(TDID, CHnumber, AR) values (%d, 1, %d)"), iTaskID, stTaskParam.iAR);
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
int iTdChID = 0;
pRecTd->Open(_T("select max(ID) as ID from tdchannel "), _variant_t((IDispatch*)theApp.m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if (pRecTd->GetRecordCount() > 0)
{
iTdChID = pRecTd->GetCollect(_T("ID")).ulVal;
}
pRecTd->Close();
////批量将脚本中的ABMN信息导入到任务中去
//szSql.Empty();
//szSql.Format(_T("insert into td2dcon(TCHID, TSN, C1,C2,P1,P2,N,K,I,V,R0,SP,bUse) select %d, TSN, C1, C2, P1, P2, N, K*%f as K_New,0,0,0,0,0 from script2d "
// "where CHID in (select ID from channel where SCID = %d and CHnumber = 1)"), iTdChID, stTaskParam.fEspace, stTaskParam.iSptID);
//pCmdIns->CommandText = szSql.AllocSysString();
//pCmdIns->Execute(NULL, NULL, adCmdText);
theApp.m_pConnection->CommitTrans();
return iTaskID;
}
catch (_com_error e)
{
theApp.m_pConnection->RollbackTrans();
AfxMessageBox(e.Description());
return -1;
}
return iTaskID;
}
DWORD CTdManager::ImportTdHeadToDB(DWORD dwTzID, CString szHeadFile, CDevice* const pDev,DWORD* pExTdID)
{
_RecordsetPtr pRecTdID = NULL;
_RecordsetPtr pRecDeID = NULL;
_RecordsetPtr pRecScID = NULL;
_CommandPtr pCmdIns = NULL;
CMarkup *pXML = NULL;
CString szSql = _T("");
DWORD dwTdID = (DWORD)VAL_ZERO;
CString szTdName = _T("");
CString szTdCN = _T("");
CString szTLocation = _T("");
DWORD dwDeID = (DWORD)VAL_ZERO;
CString szDESN = _T("");
DWORD dwScID = (DWORD)VAL_ZERO;
CString szSCCN = _T("");
CString szSName = _T("");
int iSType = (int)VAL_ZERO;
int iTType = (int)VAL_ZERO;
int iTMode = (int)VAL_ZERO;
int iEAmount = (int)VAL_ZERO;
int iTPAmount = (int)VAL_ZERO;
int iCHAmount = (int)VAL_ZERO;
int iN = (int)VAL_ZERO;
int iTrWave = (int)VAL_ZERO;
int iTrFrequency = (int)VAL_ZERO;
int iIFrequency = (int)VAL_ZERO;
int iSaFrequency = (int)VAL_ZERO;
int iCLayout = (int)VAL_ZERO;
int iInitalEAmount = (int)VAL_ZERO;
CString szESpace = _T("");
CString szDistance = _T("");
int iWeather = (int)VAL_ZERO;
int iWDIR = (int)VAL_ZERO;
float fTemperature = (float)VAL_ZERO;
float fHeight = (float)VAL_ZERO;
float fHumidity = (float)VAL_ZERO;
CString szCDate = _T("");
CString szCTime = _T("");
CString szTDate = _T("");
CString szTTime = _T("");
int iRDirection = (int)VAL_ZERO;
int iCRTime = (int)VAL_ZERO;
CString szPM = _T("");
CString szOP = _T("");
CString szQA = _T("");
CString szRect = _T("");
CString szRectLoc = _T("");
CString szChannel = _T("");
CStringArray saChArray;
//////////////////////////////海上测量变量定义////////////////////////////////////////////
float fSpacing = 0;
float fInterval = 0;
float fRecDistance = 0;
float fMoveSpeed = 0;
int iRecMode = -1;
int iCurPoleDepoly = -1;
int iDipoleNo = -1;
//////////////////////////////////////////////////////////////////////////
int iIndex = (int)VAL_ZERO;
int iAR[8] = {0};
///E:\\R&D\\GeomativeStudio\\Debug\\CACHE\\projects\\63EFC4AB5B284FC8B1B46F0CEB8F9DA4\\A9F3D38BDCF84401B8C3050D583BCBEE\\ERIR201106291331120026.xml
int iPos = szHeadFile.ReverseFind('/');
if (-1 != iPos)
{
szTdCN = szHeadFile.Mid(iPos+1);
iPos = szTdCN.ReverseFind('.');
if (-1 != iPos)
{
szTdCN = szTdCN.Mid(0, iPos);
}
}
if (szTdCN.GetLength() == 0)
{
iPos = szHeadFile.ReverseFind('\\');
if (-1 != iPos)
{
szTdCN = szHeadFile.Mid(iPos + 1);
iPos = szTdCN.ReverseFind('.');
if (-1 != iPos)
{
szTdCN = szTdCN.Mid(0, iPos);
}
}
}
/*szTdCN = szHeadFile.Right(22);
szTdCN = szTdCN.Left(18);*/
//log
m_log = "\r\nImportTdHeadToDB------------begin\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
pXML = new CMarkup;
pXML->Load(szHeadFile);
pXML->FindElem(_T("measure"));
pXML->FindChildElem(_T("measure_name"));
szTdName = pXML->GetChildData();
pXML->FindChildElem(_T("measure_location"));
szTLocation = pXML->GetChildData();
pXML->FindChildElem(_T("measure_script_id"));
szSCCN = pXML->GetChildData();
pXML->FindChildElem(_T("measure_script_name"));
szSName = pXML->GetChildData();
pXML->FindChildElem(_T("measure_script_type"));
iSType = atoi(pXML->GetChildData());
pXML->FindChildElem(_T("measure_type"));
iTType = atoi(pXML->GetChildData());
pXML->FindChildElem(_T("measure_mode"));
iTMode = atoi(pXML->GetChildData());
pXML->FindChildElem(_T("medium_set"));
pXML->IntoElem();
iIndex = (int)VAL_ZERO;
while (pXML->FindChildElem(_T("medium")))
{
saChArray.RemoveAll();
szChannel.Empty();
szChannel = pXML->GetChildData();
SplitterString(saChArray, szChannel, _T(":"));
iIndex = atoi(saChArray.GetAt(0))-1;
iAR[iIndex] = atoi(saChArray.GetAt(1));
}
pXML->OutOfElem();
pXML->FindChildElem(_T("pole_count"));
iEAmount = atoi(pXML->GetChildData());
//文本
pXML->FindChildElem(_T("pole_distance"));
szDistance = pXML->GetChildData();
//文本
pXML->FindChildElem(_T("pole_gap"));
szESpace = pXML->GetChildData();
//added by lsq 20160628
//在这里将二维的有效的电极填充到rect中去,如果是三维,则还是用rect
if (1 == iSType)
{
pXML->ResetChildPos();
pXML->FindChildElem(_T("valid_pole"));
szRect = pXML->GetChildData();
}
else
{
pXML->FindChildElem(_T("rect"));
szRect = pXML->GetChildData();
}
//文本
pXML->FindChildElem(_T("rect_loc"));
szRectLoc = pXML->GetChildData();
pXML->FindChildElem(_T("wires_layout"));
iCLayout = atoi(pXML->GetChildData());
pXML->FindChildElem(_T("point_count"));
iTPAmount = atoi(pXML->GetChildData());
pXML->FindChildElem(_T("rolling_times"));
iCRTime = atoi(pXML->GetChildData());
pXML->FindChildElem(_T("rolling_direction"));
iRDirection = atoi(pXML->GetChildData());
pXML->FindChildElem(_T("channel_count"));
iCHAmount = atoi(pXML->GetChildData());
pXML->FindChildElem(_T("iterations"));
iN = atoi(pXML->GetChildData());
pXML->FindChildElem(_T("wave_shape"));
iTrWave = atoi(pXML->GetChildData());
pXML->FindChildElem(_T("period"));
iTrFrequency = atoi(pXML->GetChildData());
pXML->FindChildElem(_T("industrial_frequency"));
iIFrequency = atoi(pXML->GetChildData());
pXML->FindChildElem(_T("sample_rate"));
iSaFrequency = atoi(pXML->GetChildData());
pXML->FindChildElem(_T("temperature"));
fTemperature = (float)atof(pXML->GetChildData());
pXML->FindChildElem(_T("height"));
fHeight = (float)atof(pXML->GetChildData());
pXML->FindChildElem(_T("humidity"));
fHumidity = (float)atof(pXML->GetChildData());
pXML->FindChildElem(_T("weather"));
iWeather = atoi(pXML->GetChildData());
pXML->FindChildElem(_T("wind_direction"));
iWDIR = atoi(pXML->GetChildData());
pXML->FindChildElem(_T("create_date"));
szCDate = pXML->GetChildData();
pXML->FindChildElem(_T("create_time"));
szCTime = pXML->GetChildData();
pXML->FindChildElem(_T("test_date"));
szTDate = pXML->GetChildData();
pXML->FindChildElem(_T("test_time"));
szTTime = pXML->GetChildData();
pXML->FindChildElem(_T("PM"));
szPM = pXML->GetChildData();
pXML->FindChildElem(_T("OP"));
szOP = pXML->GetChildData();
pXML->FindChildElem(_T("QA"));
szQA = pXML->GetChildData();
//如果是二维的跨孔装置,那么则将孔深存储于电极间隔处
if ((1 == iSType) && (iAR[iIndex] == AR_CROSS_HOLE_TYPE))
{
//文本
if (pXML->FindChildElem(_T("initial_depth")))
szESpace = pXML->GetChildData();
else
szESpace = _T("0.00");
}
//时窗--------
pXML->FindChildElem(_T("apparent_chargeability"));
pXML->IntoElem();
CString szTmp = _T("");
CString szWinTime = _T("");
int nST[20] = {0};
int nTW[20] = {0};
int id;
for (int n = 0; n < 20; n++)
{
szTmp.Format("m%d", n);
if (!(pXML->FindChildElem(szTmp)))
{
continue;
}
szWinTime = pXML->GetChildData();
id = szWinTime.Find(",");
nST[n] = atoi(szWinTime.Left(id));
nTW[n] = atoi(szWinTime.Right(szWinTime.GetLength() - id - 1));
}
pXML->OutOfElem();
//added by lsq 20161224
//在这里进行二维多通道辅助脚本的查找
int iExMediumID = -1, iExPoleCnt = 0, iExPtCnt = 0;
CString strExSptName = _T(""), strExTdCN = _T(""), strExSCCN = _T("");
CString strExValidPole = szRect;
DWORD dwExScID = 0;
//strTDName_1.Format(_T("%s_%s"), szTdName, )
if (1 == iSType)
{
if (pXML->FindChildElem(_T("measure_cn_1")))
{
strExTdCN = pXML->GetChildData();
}
if (!strExTdCN.IsEmpty())
{
if (pXML->FindChildElem(_T("medium_id_1")))
{
iExMediumID = atoi(pXML->GetChildData());
}
if (pXML->FindChildElem(_T("measure_script_id_1")))
{
strExSCCN = pXML->GetChildData();
}
if (pXML->FindChildElem(_T("measure_script_name_1")))
{
strExSptName = pXML->GetChildData();
}
if (pXML->FindChildElem(_T("point_count_1")))
{
iExPtCnt = atoi(pXML->GetChildData());
}
if (pXML->FindChildElem(_T("pole_count_1")))
{
iExPoleCnt = atoi(pXML->GetChildData());
}
if (pXML->FindChildElem(_T("valid_pole_1")))
{
strExValidPole = pXML->GetChildData();
}
}
}
//added by lsq 20160615
//加入二维任务时,取数据的原始电极总数,因为二维的需要画剖面图
//而在标准脚本里,是可以进行电极的筛选的
if (pXML->FindChildElem(_T("init_pole_num")))
{
iInitalEAmount = atoi(pXML->GetChildData());
if (iInitalEAmount > 32000 || iInitalEAmount < 0)
{
CString strLogTest = _T("");
if (LANG_ZHCN == g_iUILanguage)
{
strLogTest.Format(_T("Inital_Pole_Number的值超出了范围。值= %d"), iInitalEAmount);
AfxMessageBox(strLogTest);
}
else
{
strLogTest.Format(_T("The value of Inital_Pole_Number out of range. value = %d"), iInitalEAmount);
MessageBoxEx(NULL, strLogTest, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
iInitalEAmount = 0;
}
}
//added by lsq 20170302
//如果是海上测量的话,则需要单独添加属性
if (AR_MARINE == iAR[iIndex])
{
if (pXML->FindChildElem(_T("spacing")))
{
fSpacing = atof(pXML->GetChildData());
}
if (pXML->FindChildElem(_T("interval")))
{
fInterval = atof(pXML->GetChildData());
}
if (pXML->FindChildElem(_T("Dipole_No")))
{
iDipoleNo = atoi(pXML->GetChildData());
}
if (pXML->FindChildElem(_T("record_mode")))
{
iRecMode = atoi(pXML->GetChildData());
}
if (pXML->FindChildElem(_T("pole_deploy")))
{
iCurPoleDepoly = atoi(pXML->GetChildData());
}
if (pXML->FindChildElem(_T("moving_speed")))
{
fMoveSpeed = atof(pXML->GetChildData());
}
if (pXML->FindChildElem(_T("Record_distance")))
{
fRecDistance = atof(pXML->GetChildData());
}
}
//暂时只支持Cross-Hole(Geomative)装置
CString strCoordinatesFile;
if (iAR[iIndex] == AR_CROSS_HOLE_GEOMATIVE
|| iAR[iIndex] == AR_CROSS_HOLE_GEOMATIVE_AM)
{
pXML->FindChildElem(_T("C_H_Script"));
strCoordinatesFile = pXML->GetChildData();
}
//---------------
delete pXML;
if (_T("0000-00-00") == szTDate)
{
hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("测量没有完成!"));
else
MessageBoxEx(NULL, _T("Measure is not finished!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return dwTdID;
}
pRecTdID.CreateInstance(_uuidof(Recordset));
pRecDeID.CreateInstance(_uuidof(Recordset));
pRecScID.CreateInstance(_uuidof(Recordset));
pCmdIns.CreateInstance(_uuidof(Command));
pCmdIns->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("select ID from device where SN = '%s'"), pDev->m_szDevSN);
pRecDeID->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecDeID->GetRecordCount())
{
dwDeID = pRecDeID->GetCollect(_T("ID")).ulVal;
}
pRecDeID->Close();
szSql.Empty();
szSql.Format(_T("select ID from scon where CN = '%s'"), szSCCN);
pRecScID->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
//在这里GD10主机上的脚本可能并不存在于上位机,所以这里的脚本ID也可能是0
if ((long)VAL_ZERO != pRecScID->GetRecordCount())
{
dwScID = pRecScID->GetCollect(_T("ID")).ulVal;
}
else
{
pRecScID->Close();
//查询坐标文件是否存在,或者删除坐标文件再插入
szSql.Empty();
szSql.Format(_T("select ID from TCoordinatesInfo where ScriptCN = '%s'"), szSCCN);
pRecScID->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
//TCoordinatesInfo表中没有数据
if ((long)VAL_ZERO == pRecScID->GetRecordCount())
{
CString strFilePath, strRawContent, strSql;
strFilePath.Format(_T("%sSD\\scripts\\%s"), CDetcGD10Dev::GetInstance()->GetGD10DevAddr(), strCoordinatesFile);
//插入坐标文件
BOOL bRes = FALSE;
CStdioFile csf;
int i = 0,iIndex = 1;
//UINT32 uiID = 1;//ID
UINT iExists = 0;
char* pCurContent = NULL;
int iElecID = 0;
float fX, fY, fZ;
bRes = csf.Open(strFilePath, CStdioFile::modeReadWrite);
if (bRes)
{
while (csf.ReadString(strRawContent))
{
OutputDebugString(strRawContent + _T("\n"));
pCurContent = _tcstok(strRawContent.GetBuffer(), _T(","));
iElecID = atoi(pCurContent);
i = 0;
while ((pCurContent = _tcstok(NULL, _T(","))))
{
switch (i)
{
case 0://X
fX = atof(pCurContent);
break;
case 1://Y
fY = atof(pCurContent);
break;
case 2://Z
fZ = atof(pCurContent);
break;
default:
break;
}
i++;
}
//插入数据库
strSql.Empty();
strSql.Format(_T("insert into TCoordinatesInfo(SSN,ScriptCN,ElectrodeID,X,Y,Z) values(%d,'%s',%d,%.2f,%.2f,%.2f)"),iIndex, szSCCN, iElecID, fX, fY, fZ);
pCmdIns->CommandText = strSql.AllocSysString();
try
{
pCmdIns->Execute(NULL, NULL, adCmdText);
}
catch (_com_error e)
{
AfxMessageBox((LPCTSTR)e.Description());
}
iIndex++;
}
csf.Close();
}
}
}
pRecScID->Close();
if (-1 != iExMediumID)
{
szSql.Empty();
szSql.Format(_T("select ID from scon where CN = '%s'"), strExSCCN);
pRecScID->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
//在这里GD10主机上的脚本可能并不存在于上位机,所以这里的脚本ID也可能是0
if ((long)VAL_ZERO != pRecScID->GetRecordCount())
{
dwExScID = pRecScID->GetCollect(_T("ID")).ulVal;
}
pRecScID->Close();
}
szSql.Empty();
szSql.Format(_T("insert into td(TDname,TDCN,Tlocation,DEID,DESN,TZID,SCID,SCCN,Sname,Stype,Ttype,Tmode,Eamount,TPamount,CHamount,N,TRwave,TRfrequency,Ifrequency,"
"SAfrequency,Clayout,Espace,Edistance,weather,WDIR,temperature,height,humidity,Cdate,Ctime,Tdate,Ttime,Rdirection,CRtime,PM,OP,QA,rect,rect_loc,InitiEamount) "
"values('%s','%s','%s',%u,'%s',%u,%u,'%s','%s',%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,'%s','%s',%d,%d,%.2f,%.2f,%.2f,#%s#,#%s#,#%s#,#%s#,%d,%d,'%s','%s','%s','%s','%s',%d)"),
szTdName,
szTdCN,
szTLocation,
dwDeID,
pDev->m_szDevSN,
dwTzID,
dwScID,
szSCCN,
szSName,
iSType,
iTType,
iTMode,
iEAmount,
iTPAmount,
iCHAmount,
iN,
iTrWave,
iTrFrequency,
iIFrequency,
iSaFrequency,
iCLayout,
szESpace,
szDistance,
iWeather,
iWDIR,
fTemperature,
fHeight,
fHumidity,
// "2015-01-27",
// "10:20:30",
// szTDate,
// szTTime,
szCDate,
szCTime,
szTDate,
szTTime,
iRDirection,
iCRTime,
szPM,
szOP,
szQA,
szRect,
szRectLoc,
iInitalEAmount);
//log
CTime t;
t = CTime::GetCurrentTime();
m_log = t.Format("%Y-%m-%d,%H:%M:%S:");
m_log += "\r\n";
m_log += szSql;
m_log += "\r\n";
// fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
// fflush(m_pFile);
//log
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
pRecTdID->Open(_T("select max(ID) as ID from td "), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTdID->GetRecordCount())
{
dwTdID = pRecTdID->GetCollect(_T("ID")).ulVal;
}
pRecTdID->Close();
//如果有辅助脚本的话,则用来插入辅助任务信息,以主脚本的任务信息为主
//需要下位机加入测点总数(那么电极总数是否需要)
/*
strSql.Format(_T("insert into td_spc_attr(TCHID,TSN,THL,D,r,TWCNT,TW0Index,TW1Index,TW2Index,TW3Index,TW4Index,TW5Index,TW6Index,TW7Index,TW8Index,TW9Index) "
"select %d, TSN+%d,THL,D,r,TWCNT,TW0Index,TW1Index,TW2Index,TW3Index,TW4Index,TW5Index,TW6Index,TW7Index,TW8Index,TW9Index from td_spc_attr "
"where TCHID in (select ID from tdchannel where TDID = %d and CHnumber = 1) order by TSN"),
*/
if (-1 != iExMediumID)
{
CString strExTdName = _T("");
strExTdName.Format(_T("%s_auxiliary"),szTdName);
szSql.Format(_T("insert into td(TDname,SCID,SCCN,Sname,TDCN,TPamount,Eamount,rect,Tlocation,DEID,DESN,TZID,Stype,Ttype,Tmode,CHamount,N,TRwave,TRfrequency,Ifrequency,"
"SAfrequency,Clayout,Espace,Edistance,weather,WDIR,temperature,height,humidity,Cdate,Ctime,Tdate,Ttime,Rdirection,CRtime,PM,OP,QA,rect_loc,InitiEamount) "
"select '%s', %d, '%s', '%s', '%s', %d, %d, '%s', Tlocation,DEID,DESN,TZID,Stype,Ttype,Tmode,CHamount,N,TRwave,TRfrequency,Ifrequency, SAfrequency,Clayout,"
"Espace,Edistance,weather,WDIR,temperature,height,humidity,Cdate,Ctime,Tdate,Ttime,Rdirection,CRtime,PM,OP,QA,rect_loc,InitiEamount "
"from td where ID = %d"), strExTdName, dwExScID, strExSCCN, strExSptName, strExTdCN, iExPtCnt, iExPoleCnt,strExValidPole,dwTdID);
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
if (pExTdID)
{
pRecTdID->Open(_T("select max(ID) as ID from td "), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTdID->GetRecordCount())
{
*pExTdID = pRecTdID->GetCollect(_T("ID")).ulVal;
}
pRecTdID->Close();
}
}
int iTdChannelID = -1;
iIndex = (int)VAL_ZERO;
while ((0 != iAR[iIndex]) && (iIndex < 8))
{
szSql.Empty();
szSql.Format(_T("insert into tdchannel(TDID,CHnumber,AR) values(%u,%d,%d)"), dwTdID, iIndex+1, iAR[iIndex]);
//log
CTime t;
t = CTime::GetCurrentTime();
m_log = t.Format("%Y-%m-%d,%H:%M:%S:");
m_log += "\r\n";
m_log += szSql;
m_log += "\r\n";
// fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
// fflush(m_pFile);
//log
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
pRecTdID->Open(_T("select max(ID) as ID from tdchannel "), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTdID->GetRecordCount())
{
iTdChannelID = pRecTdID->GetCollect(_T("ID")).ulVal;
}
pRecTdID->Close();
if (-1 != iExMediumID && pExTdID)
{
szSql.Empty();
szSql.Format(_T("insert into tdchannel(TDID,CHnumber,AR) values(%u,%d,%d)"), *pExTdID, iIndex+1, iExMediumID);
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
iIndex++;
break;
}
iIndex++;
}
//插入海上测量
if (AR_MARINE == iAR[0])
{
if (iTdChannelID < 0)
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("获取TdChannel表的ID错误"));
else
MessageBoxEx(NULL, _T("Get TdChannel table ID error"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
iTdChannelID = 0;
}
CString strTmpSql = _T("");
strTmpSql.Format(_T("insert into td1dSpcAttr (TCHID,RecordMode,Spacing,PoleInterval,DipoleNo,CurPoleDepoly,MovingSpeed,RecordDistance) values (%u, %d, %f, %f, %d, %d, %f, %f)"),
iTdChannelID, iRecMode, fSpacing, fInterval, iDipoleNo, iCurPoleDepoly, fMoveSpeed, fRecDistance);
pCmdIns->CommandText = strTmpSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
}
//插入时窗
if (iTType == 1)
{
szSql.Empty();
szSql.Format(_T("insert into ac(TDID,M0ST,M0TW,M1ST,M1TW,M2ST,M2TW,M3ST,M3TW,M4ST,M4TW,M5ST,M5TW,M6ST,M6TW,M7ST,M7TW,"
"M8ST,M8TW,M9ST,M9TW,M10ST,M10TW,M11ST,M11TW,M12ST,M12TW,M13ST,M13TW,M14ST,M14TW,M15ST,M15TW,M16ST,M16TW,"
"M17ST,M17TW,M18ST,M18TW,M19ST,M19TW) values(%d, %d, %d, %d, %d, %d, %d, %d, %d, %d,%d, %d, %d, %d, %d, %d,"
"%d, %d, %d, %d, %d, %d, %d, %d, %d,%d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)"),
dwTdID,
nST[0],nTW[0],
nST[1],nTW[1],
nST[2],nTW[2],
nST[3],nTW[3],
nST[4],nTW[4],
nST[5],nTW[5],
nST[6],nTW[6],
nST[7],nTW[7],
nST[8],nTW[8],
nST[9],nTW[9],
nST[10],nTW[10],
nST[11],nTW[11],
nST[12],nTW[12],
nST[13],nTW[13],
nST[14],nTW[14],
nST[15],nTW[15],
nST[16],nTW[16],
nST[17],nTW[17],
nST[18],nTW[18],
nST[19],nTW[19]
);
//log
CTime t;
t = CTime::GetCurrentTime();
m_log = t.Format("%Y-%m-%d,%H:%M:%S:");
m_log += "\r\n";
m_log += szSql;
m_log += "\r\n";
// fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
// fflush(m_pFile);
//log
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
//如果存在子脚本,则子脚本所对应任务的时窗依然沿用主脚本任务的
if (-1 != iExMediumID && pExTdID)
{
szSql.Empty();
szSql.Format(_T("insert into ac(TDID,M0ST,M0TW,M1ST,M1TW,M2ST,M2TW,M3ST,M3TW,M4ST,M4TW,M5ST,M5TW,M6ST,M6TW,M7ST,M7TW,"
"M8ST,M8TW,M9ST,M9TW,M10ST,M10TW,M11ST,M11TW,M12ST,M12TW,M13ST,M13TW,M14ST,M14TW,M15ST,M15TW,M16ST,M16TW,"
"M17ST,M17TW,M18ST,M18TW,M19ST,M19TW) values(%d, %d, %d, %d, %d, %d, %d, %d, %d, %d,%d, %d, %d, %d, %d, %d,"
"%d, %d, %d, %d, %d, %d, %d, %d, %d,%d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d)"),
*pExTdID,
nST[0],nTW[0],
nST[1],nTW[1],
nST[2],nTW[2],
nST[3],nTW[3],
nST[4],nTW[4],
nST[5],nTW[5],
nST[6],nTW[6],
nST[7],nTW[7],
nST[8],nTW[8],
nST[9],nTW[9],
nST[10],nTW[10],
nST[11],nTW[11],
nST[12],nTW[12],
nST[13],nTW[13],
nST[14],nTW[14],
nST[15],nTW[15],
nST[16],nTW[16],
nST[17],nTW[17],
nST[18],nTW[18],
nST[19],nTW[19]
);
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
}
}
//log
m_log = "ImportTdHeadToDB------------end\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
return dwTdID;
}
BOOL CTdManager::Import2DTdConToDB(DWORD dwTdID, CString szDatFile, CDevice* const pDev, int* pTSN)
{
_RecordsetPtr pRecChID = NULL;
_CommandPtr pCmdIns = NULL;
CString szSql = _T("");
CString szTsn = _T("");
CString szTdCon = _T("");
CStringArray saTdCon;
CString szNodeName = _T("");
int iIndex = (int)VAL_ZERO;
DWORD aChID[8] = {0};
DWORD dwChID = (DWORD)VAL_ZERO;
int iTsn = (int)VAL_ZERO;
int iChNum = (int)VAL_ZERO;
int iC1 = (int)VAL_ZERO;
int iC2 = (int)VAL_ZERO;
int iP1 = (int)VAL_ZERO;
int iP2 = (int)VAL_ZERO;
int iN = (int)VAL_ZERO;
float fK = (float)VAL_ZERO;
float fI = (float)VAL_ZERO;
float fV = (float)VAL_ZERO;
float fR0 = (float)VAL_ZERO;
float fSP = (float)VAL_ZERO;
float fR0LC = (float)VAL_ZERO;
float fM0LC = (float)VAL_ZERO;
//log
m_log = "\r\nImport2DTdConToDB------------begin\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
CMarkup *pXML = new CMarkup;
try
{
pRecChID.CreateInstance(_uuidof(Recordset));
pCmdIns.CreateInstance(_uuidof(Command));
pCmdIns->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("select ID from tdchannel where TDID = %u"), dwTdID);
pRecChID->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
iIndex = (int)VAL_ZERO;
while ((short)VAL_ZERO == pRecChID->adoEOF)
{
aChID[iIndex] = pRecChID->GetCollect(_T("ID")).ulVal;
iIndex++;
pRecChID->MoveNext();
}
pRecChID->Close();
pXML->Load(szDatFile);
pXML->FindElem(_T("TD"));
pXML->FindChildElem("param");
pXML->FindChildElem("Data");
pXML->IntoElem();
iTsn = (int)VAL_ONE;
if (NULL != pTSN)
{
iTsn = *pTSN;
}
szNodeName.Empty();
szNodeName.Format(_T("D%.5d"), iTsn);
CString strShowErr = _T("");
bool bIsWirteCheckLC = true;//是否需要对离叉信息进行写日志
bool bIsHaveLC = false;
int iTestFlag, iLayer;
while (pXML->FindChildElem(szNodeName))
{
szTdCon.Empty();
szTdCon = pXML->GetChildData();
if (szTdCon.IsEmpty())
{
strShowErr.Empty();
if (LANG_ZHCN == g_iUILanguage)
{
strShowErr.Format(_T("获取 %s 子数据为空!!!"), szNodeName.GetBuffer(0));
AfxMessageBox(strShowErr.GetBuffer(0));
}
else
{
strShowErr.Format(_T("Get %s childdata is empty!!!"), szNodeName.GetBuffer(0));
MessageBoxEx(NULL, strShowErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
}
SplitterString(saTdCon, szTdCon, _T(";"));
if (saTdCon.GetSize() < 20)
{
strShowErr.Empty();
if (LANG_ZHCN == g_iUILanguage)
{
strShowErr.Format(_T("%s的元素大小错误,应该至少为20,但实际上是%d"), szNodeName.GetBuffer(0), saTdCon.GetSize());
AfxMessageBox(strShowErr.GetBuffer(0));
}
else
{
strShowErr.Format(_T("%s 's element size error, should be at least 20 but actually is %d"), szNodeName.GetBuffer(0), saTdCon.GetSize());
MessageBoxEx(NULL, strShowErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
pXML->OutOfElem();
delete pXML;
return FALSE;
}
bIsHaveLC = false;
//判断是否存在R0_LC和MO_LC,如果不存在,则认为是以前的版本,写错误日志
if (saTdCon.GetSize() < 22)
{
if (bIsWirteCheckLC)
{
CString strErrLog = _T("");
strErrLog.Format(_T("[%d][Td2d]deviation_iteratin data is not exits in Task(%d), node = %s, vector's size = %d "),
__LINE__, dwTdID, szNodeName, saTdCon.GetSize());
CFileOperTools::GetInstance()->WriteComLog(strErrLog);
//日志信息只写一次
bIsWirteCheckLC = false;
}
}
else
bIsHaveLC = true;
//最后一个为是否测试的标记位,只有等于1才表示进行了测试
iTestFlag = atoi(saTdCon.GetAt(19));
iLayer = atoi(saTdCon.GetAt(18));
if (1 == iTestFlag)
{
iC1 = atoi(saTdCon.GetAt(0));
iC2 = atoi(saTdCon.GetAt(1));
iP1 = atoi(saTdCon.GetAt(2));
iP2 = atoi(saTdCon.GetAt(3));
iChNum = atoi(saTdCon.GetAt(4));
dwChID = aChID[iChNum-1];
iN = atoi(saTdCon.GetAt(5));
fK = (float)atof(saTdCon.GetAt(6));
fI = (float)atof(saTdCon.GetAt(7));
fV = (float)atof(saTdCon.GetAt(8));
fR0 = (float)atof(saTdCon.GetAt(9));
fSP = (float)atof(saTdCon.GetAt(10));
if (bIsHaveLC)
{
fR0LC = (float)atof(saTdCon.GetAt(20));
fM0LC = (float)atof(saTdCon.GetAt(21));
}
szSql.Empty();
szSql.Format(_T("insert into td2dcon(TCHID,TSN,C1,C2,P1,P2,N,K,I,V,R0,SP,bUse,Layer,R0_LC,M0_LC) values(%u,%d,%d,%d,%d,%d,%d,%f,%f,%f,%f,%f,%d,%d,%f,%f)"),
dwChID,iTsn,iC1,iC2,iP1,iP2,iN,fK,fI,fV,fR0,fSP,TRUE,iLayer,fR0LC,fM0LC);
//log
// CTime t;
// t = CTime::GetCurrentTime();
// m_log = t.Format("%Y-%m-%d,%H:%M:%S:");
// m_log += "\r\n";
// m_log += szSql;
// m_log += "\r\n";
// fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
// fflush(m_pFile);
//log
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
}
iTsn++;
szNodeName.Empty();
if (iTsn <= 99999)
{
szNodeName.Format(_T("D%.5d"), iTsn);
}
else
{
szNodeName.Format(_T("D%d"), iTsn);
}
}
pXML->OutOfElem();
delete pXML;
}
catch(_com_error e)
{
hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
AfxMessageBox(e.Description());
delete pXML;
return FALSE;
}
//log
m_log = "Import2DTdConToDB------------end\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
*pTSN = iTsn;
return TRUE;
}
BOOL CTdManager::ImportCETdConToDB(DWORD dwTdID, CString szDatFile, CDevice* const pDev)
{
_RecordsetPtr pRecChID = NULL;
_CommandPtr pCmdIns = NULL;
CString szSql = _T("");
CString szTsn = _T("");
CString szTdCon = _T("");
CStringArray saTdCon;
CString szNodeName = _T("");
CString datetime = _T("");
DWORD aChID[8] = {0};
DWORD dwChID = (DWORD)VAL_ZERO;
int iIndex = (int)VAL_ZERO;
int iTsn = (int)VAL_ZERO;
int iChNum = (int)VAL_ZERO;
float fA = (float)VAL_ZERO;
float fB = (float)VAL_ZERO;
float fX = (float)VAL_ZERO;
float fY = (float)VAL_ZERO;
int iN = (int)VAL_ZERO;
float fK = (float)VAL_ZERO;
float fI = (float)VAL_ZERO;
float fV = (float)VAL_ZERO;
float fR0 = (float)VAL_ZERO;
float fSP = (float)VAL_ZERO;
float fR0LC = (float)VAL_ZERO;
float fM0LC = (float)VAL_ZERO;
CMarkup *pXML = new CMarkup;
try
{
pRecChID.CreateInstance(_uuidof(Recordset));
pCmdIns.CreateInstance(_uuidof(Command));
pCmdIns->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("select ID from tdchannel where TDID = %u"), dwTdID);
pRecChID->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
iIndex = (int)VAL_ZERO;
while ((short)VAL_ZERO == pRecChID->adoEOF)
{
aChID[iIndex] = pRecChID->GetCollect(_T("ID")).ulVal;
iIndex++;
pRecChID->MoveNext();
}
pRecChID->Close();
pXML->Load(szDatFile);
pXML->FindElem(_T("TD"));
pXML->FindChildElem(_T("param"));
pXML->FindChildElem(_T("Data"));
pXML->IntoElem();
iTsn = (int)VAL_ONE;
szNodeName.Empty();
szNodeName.Format(_T("D%.5d"), iTsn);
//log
m_log += "\r\nImportCETdConToDB------------begin\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
CString strShowErr = _T("");
bool bIsWirteCheckLC = true;
while (pXML->FindChildElem(szNodeName))
{
szTdCon.Empty();
szTdCon = pXML->GetChildData();
if (szTdCon.IsEmpty())
{
if (LANG_ZHCN == g_iUILanguage)
{
strShowErr.Format(_T("获取 %s 子数据为空!!!"), szNodeName.GetBuffer(0));
AfxMessageBox(strShowErr.GetBuffer(0));
}
else
{
strShowErr.Format(_T("Get %s childdata is empty!!!"), szNodeName.GetBuffer(0));
MessageBoxEx(NULL, strShowErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
}
SplitterString(saTdCon, szTdCon, _T(";"));
//如果解析的列数不对,则认为产生严重错误,此时应该跳出函数,并且返回错误
if (saTdCon.GetSize() < 20)
{
if (LANG_ZHCN == g_iUILanguage)
{
strShowErr.Format(_T("%s的元素大小错误,应该至少为20,但实际上是%d"), szNodeName.GetBuffer(0), saTdCon.GetSize());
AfxMessageBox(strShowErr.GetBuffer(0));
}
else
{
strShowErr.Format(_T("%s 's element size error, should be at least 20 but actually is %d"), szNodeName.GetBuffer(0), saTdCon.GetSize());
MessageBoxEx(NULL, strShowErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
pXML->OutOfElem();
delete pXML;
return FALSE;
}
bool bIsHaveLC = false;
//判断是否存在R0_LC和MO_LC,如果不存在,则认为是以前的版本,写错误日志
if (saTdCon.GetSize() < 22)
{
if (bIsWirteCheckLC)
{
CString strErrLog = _T("");
strErrLog.Format(_T("[%d][Td1d]deviation_iteratin data is not exits in Task(%d), node = %s, vector's size = %d "),
__LINE__, dwTdID, szNodeName, saTdCon.GetSize());
CFileOperTools::GetInstance()->WriteComLog(strErrLog);
//日志信息只写一次
bIsWirteCheckLC = false;
}
}
else
bIsHaveLC = true;
int iTestFlag = atoi(saTdCon.GetAt(19));
//只有成功测试了的数据才插入到数据库中去
if (1 == iTestFlag || saTdCon.GetSize() > 25)
{
fA = (float)atof(saTdCon.GetAt(0));
fB = (float)atof(saTdCon.GetAt(1));
fX = (float)atof(saTdCon.GetAt(2));
fY = (float)atof(saTdCon.GetAt(3));
iChNum = atoi(saTdCon.GetAt(4));
dwChID = aChID[iChNum-1];
iN = atoi(saTdCon.GetAt(5));
fK = (float)atof(saTdCon.GetAt(6));
fI = (float)atof(saTdCon.GetAt(7));
fV = (float)atof(saTdCon.GetAt(8));
fR0 = (float)atof(saTdCon.GetAt(9));
fSP = (float)atof(saTdCon.GetAt(10));
if (bIsHaveLC)
{
fR0LC = (float)atof(saTdCon.GetAt(20));
fM0LC = (float)atof(saTdCon.GetAt(21));
}
szSql.Empty();
if (saTdCon.GetSize() > 25)
{
datetime = saTdCon.GetAt(24);
szSql.Format(_T("insert into td1dcon(TCHID,TSN,a,b,x,y,N,K,I,V,R0,SP,bUse,R0_LC,M0_LC,dt,POINT_NUM,TEST_FLAG) values(%u,%d,%.1f,%.1f,%.1f,%.1f,%d,%f,%f,%f,%f,%f,%d,%f,%f,#%s#,%d,%d)"),
dwChID, iTsn, fA, fB, fX, fY, iN, fK, fI, fV, fR0, fSP, TRUE, fR0LC, fM0LC, datetime, atoi(saTdCon.GetAt(25)),iTestFlag);
}
else if (saTdCon.GetSize() > 24)
{
datetime = saTdCon.GetAt(24);
szSql.Format(_T("insert into td1dcon(TCHID,TSN,a,b,x,y,N,K,I,V,R0,SP,bUse,R0_LC,M0_LC,dt) values(%u,%d,%.1f,%.1f,%.1f,%.1f,%d,%f,%f,%f,%f,%f,%d,%f,%f,#%s#)"),
dwChID, iTsn, fA, fB, fX, fY, iN, fK, fI, fV, fR0, fSP, TRUE, fR0LC, fM0LC, datetime);
}
else
{
szSql.Format(_T("insert into td1dcon(TCHID,TSN,a,b,x,y,N,K,I,V,R0,SP,bUse,R0_LC,M0_LC) values(%u,%d,%.1f,%.1f,%.1f,%.1f,%d,%f,%f,%f,%f,%f,%d,%f,%f)"),
dwChID, iTsn, fA, fB, fX, fY, iN, fK, fI, fV, fR0, fSP, TRUE, fR0LC, fM0LC);
}
//TRACE("szSql = %s\n", szSql);
//log
// CTime t;
// t = CTime::GetCurrentTime();
// m_log = t.Format("%Y-%m-%d,%H:%M:%S:");
// m_log += "\r\n";
// m_log += szSql;
// m_log += "\r\n";
// fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
// fflush(m_pFile);
//log
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
}
iTsn++;
szNodeName.Empty();
if (iTsn <= 99999)
{
szNodeName.Format(_T("D%.5d"), iTsn);
}
else
{
szNodeName.Format(_T("D%d"), iTsn);
}
}
pXML->OutOfElem();
delete pXML;
}
catch (_com_error e)
{
hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
AfxMessageBox(e.Description());
delete pXML;
return FALSE;
}
//log
m_log += "ImportCETdConToDB------------end\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
return TRUE;
}
BOOL CTdManager::Import2DGRToDB(DWORD dwTdID, CString szGRFile, CDevice* const pDev)
{
//temp delete由于接地电阻接口改变
// return TRUE;
//log
m_log = "\r\nImportTdHeadToDB------------begin\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
_CommandPtr pCmdIns = NULL;
CString szSql = _T("");
CString szECode = _T("");
CString szDT = _T("");
CString szMDate = _T("");
CString szMTime = _T("");
CString strCode = _T("");
CString strCode1 = _T("");
int iOMValue = (int)VAL_ZERO;
int iOM1Value = (int)VAL_ZERO;
int iResCode = (int)VAL_ZERO;
int iResCode1 = (int)VAL_ZERO;
CString szTdGR = _T("");
CStringArray saTdGR;
CString szNodeName = _T("");
int iIndex = (int)VAL_ZERO;
pCmdIns.CreateInstance(_uuidof(Command));
pCmdIns->ActiveConnection = m_pConnection;
CMarkup *pXML = new CMarkup;
pXML->Load(szGRFile);
pXML->FindElem(_T("TD"));
pXML->FindChildElem("param");
pXML->FindChildElem("Data");
pXML->IntoElem();
iIndex = (int)VAL_ONE;
szNodeName.Empty();
szNodeName.Format(_T("D%.5d"), iIndex);
while (pXML->FindChildElem(szNodeName))
{
szTdGR = pXML->GetChildData();
SplitterString(saTdGR, szTdGR, _T(";"));
szECode.Empty();
szECode = saTdGR.GetAt(0);
szECode.TrimLeft();
szECode.TrimRight();
iOMValue = atoi(saTdGR.GetAt(1));
iResCode = atoi(saTdGR.GetAt(2));
iOM1Value = atoi(saTdGR.GetAt(3));
iResCode1 = atoi(saTdGR.GetAt(4));
szDT.Empty();
szDT = saTdGR.GetAt(5);
szDT.TrimLeft();
szDT.TrimRight();
szMDate.Empty();
szMDate.Format(_T("%s-%s-%s"), szDT.Mid(0, 4), szDT.Mid(4, 2), szDT.Mid(6, 2));
szMTime.Empty();
szMTime.Format(_T("%s:%s:%s"), szDT.Mid(8, 2), szDT.Mid(10, 2), szDT.Mid(12, 2));
if (szMTime == "1900-01-00")
{
szMTime = "1900-01-01";
}
if (szMDate == "1900-01-00")
{
szMDate = "1900-01-01";
}
szSql.Empty();
szSql.Format(_T("insert into gr(TDID,Ecode,OMvalue,Mdate,Mtime,StatusCode,OM1value,StatusCode1) values(%u,'%s',%d,#%s#,#%s#,%d,%d,%d)"),
dwTdID, szECode, iOMValue, /*"2015-01-27"*/szMDate, /*"10:20:20"*/szMTime,iResCode, iOM1Value, iResCode1);
//log
CTime t;
t = CTime::GetCurrentTime();
m_log = t.Format("%Y-%m-%d,%H:%M:%S:");
m_log += "\r\n";
m_log += szSql;
m_log += "\r\n";
// fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
// fflush(m_pFile);
//log
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
iIndex++;
szNodeName.Empty();
if (iIndex <= 99999)
{
szNodeName.Format(_T("D%.5d"), iIndex);
}
else
{
szNodeName.Format(_T("D%d"), iIndex);
}
}
//log
m_log = "ImportTdHeadToDB------------end";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
delete pXML;
return TRUE;
}
BOOL CTdManager::ImportCETGRToDB(DWORD dwTdID, CString szGRFile)
{
_CommandPtr pCmdIns = NULL;
CString szSql = _T("");
CString szECode = _T("");
CString szDT = _T("");
CString szMDate = _T("");
CString szMTime = _T("");
CString strCode = _T("");
CString strCode1 = _T("");
int iOMValue = (int)VAL_ZERO;
int iOM1Value = (int)VAL_ZERO;
int iResCode = (int)VAL_ZERO;
int iResCode1 = (int)VAL_ZERO;
CString szTdGR = _T("");
CStringArray saTdGR;
CString szNodeName = _T("");
int iIndex = (int)VAL_ZERO;
pCmdIns.CreateInstance(_uuidof(Command));
pCmdIns->ActiveConnection = m_pConnection;
CMarkup *pXML = new CMarkup;
pXML->Load(szGRFile);
pXML->FindElem(_T("TD"));
pXML->FindChildElem("param");
pXML->FindChildElem("Data");
pXML->IntoElem();
iIndex = (int)VAL_ONE;
szNodeName.Empty();
szNodeName.Format(_T("D%.5d"), iIndex);
while (pXML->FindChildElem(szNodeName))
{
szTdGR = pXML->GetChildData();
SplitterString(saTdGR, szTdGR, _T(";"));
szECode.Empty();
szECode = saTdGR.GetAt(0);
szECode.TrimLeft();
szECode.TrimRight();
iOMValue = atoi(saTdGR.GetAt(1));
iResCode = atoi(saTdGR.GetAt(2));
iOM1Value = atoi(saTdGR.GetAt(3));
iResCode1 = atoi(saTdGR.GetAt(4));
szDT.Empty();
szDT = saTdGR.GetAt(5);
szDT.TrimLeft();
szDT.TrimRight();
szMDate.Empty();
szMDate.Format(_T("%s-%s-%s"), szDT.Mid(0, 4), szDT.Mid(4, 2), szDT.Mid(6, 2));
szMTime.Empty();
szMTime.Format(_T("%s:%s:%s"), szDT.Mid(8, 2), szDT.Mid(10, 2), szDT.Mid(12, 2));
if (szMTime == "1900-01-00")
{
szMTime = "1900-01-01";
}
if (szMDate == "1900-01-00")
{
szMDate = "1900-01-01";
}
szSql.Empty();
szSql.Format(_T("insert into gr(TDID,Ecode,OMvalue,Mdate,Mtime,StatusCode,OM1value,StatusCode1) values(%u,'%s',%d,#%s#,#%s#,%d,%d,%d)"),
dwTdID, szECode, iOMValue, /*"2015-01-27"*/szMDate, /*"10:20:20"*/szMTime,iResCode, iOM1Value, iResCode1);
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
iIndex++;
szNodeName.Empty();
if (iIndex <= 99999)
{
szNodeName.Format(_T("D%.5d"), iIndex);
}
else
{
szNodeName.Format(_T("D%d"), iIndex);
}
}
delete pXML;
return TRUE;
}
BOOL CTdManager::DeleteTdInDev(CString szPrCN, CString szTzCN, CString szTdCN, CDevice* const pDev)
{
_CommandPtr pCmdDel = NULL;
CString szOrder = _T("");
CString szResBuff = _T("");
CString szRes = _T("");
CString szSql = _T("");
CString strErr = _T("");
if (EN_TRANSFER_FILE_BY_USB == g_iTransFileMode)
{
if (CGD10OperCmd::GetInstance()->meas_delete(szPrCN, szTzCN, szTdCN))
{
szRes = _T("1");
}
else
{
szRes = _T("-1");
}
}
else
{
szOrder.Empty();
szOrder.Format(_T("meas_delete(\"%s\",\"%s\",\"%s\")\r\n"), szPrCN, szTzCN, szTdCN);
if (!pDev->ExecuteOrder(szOrder,_T(">"),&szResBuff))
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("删除任务超时."));
else
MessageBoxEx(NULL, _T("Delete task in device timeout!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return FALSE;
}
/*
int iPollingTime = (int)VAL_ZERO;
int iResSize = (int)VAL_ZERO;
char aResBuff[2048] = {0};
pDev->m_sComPort.ClearCommSendBuff();
pDev->m_sComPort.ClearCommReceiveBuff();
pDev->m_sComPort.SendDataDirectly("\r\n", 2);
// TransDelay(g_iTransMode, 10, 50);
iResSize = (int)VAL_ZERO;
memset(aResBuff, 0, sizeof(aResBuff));
szResBuff.Empty();
iPollingTime = 0;
while ((szResBuff.Find(">") == -1) && (iPollingTime < 500))
{
while (pDev->m_sComPort.ReceiveDataDirectly(aResBuff, &iResSize) == TRUE)
{
szResBuff.Insert(szResBuff.GetLength(), aResBuff);
iResSize = (int)VAL_ZERO;
memset(aResBuff, 0, sizeof(aResBuff));
}
iPollingTime++;
}
if (iPollingTime == MAX_POLLING_TIME)
{
return FALSE;
}
pDev->m_sComPort.ClearCommSendBuff();
pDev->m_sComPort.ClearCommReceiveBuff();
szOrder.Empty();
szOrder.Format(_T("meas_delete(\"%s\",\"%s\",\"%s\")\r\n"), szPrCN, szTzCN, szTdCN);
pDev->m_sComPort.SendDataDirectly(szOrder.GetBuffer(szOrder.GetLength()), szOrder.GetLength());
szOrder.ReleaseBuffer();
// TransDelay(g_iTransMode, 100, 200);
// hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
// AfxMessageBox(szOrder);
iResSize = (int)VAL_ZERO;
memset(aResBuff, 0, sizeof(aResBuff));
szResBuff.Empty();
iPollingTime = 0;
while ((szResBuff.Find(">") == -1) && (iPollingTime < 500))
{
// Sleep(100);
while (pDev->m_sComPort.ReceiveDataDirectly(aResBuff, &iResSize) == TRUE)
{
szResBuff.Insert(szResBuff.GetLength(), aResBuff);
iResSize = (int)VAL_ZERO;
memset(aResBuff, 0, sizeof(aResBuff));
}
iPollingTime++;
}
// AfxMessageBox(szResBuff);
if (MAX_POLLING_TIME == iPollingTime)
{
return FALSE;
}
*/
GetSubStringInHeadAndTail(szResBuff, szRes, _T("["), _T("]"));
}
if (_T("1") == szRes)
{
pCmdDel.CreateInstance(_uuidof(Command));
pCmdDel->ActiveConnection = m_pConnection;
try
{
m_pConnection->BeginTrans();
szSql.Empty();
szSql.Format(_T("delete from dev_syn_td where DESN = '%s' and TdCN = '%s'"), pDev->m_szDevSN, szTdCN);
pCmdDel->CommandText = szSql.AllocSysString();
pCmdDel->Execute(NULL, NULL, adCmdText);
m_pConnection->CommitTrans();
}
catch (_com_error e)
{
strErr.Empty();
strErr.Format(_T("ErrorMsg = %s,\r\n DescMsg = %s"),(LPCTSTR)e.ErrorMessage(),(LPCTSTR)e.Description());
m_pConnection->RollbackTrans();
return FALSE;
}
return TRUE;
}
else
{
strErr.Empty();
if (LANG_ZHCN == g_iUILanguage)
{
strErr.Format(_T("删除任务失败!返回值 = %s"), szRes);
AfxMessageBox(strErr);
}
else
{
strErr.Format(_T("Delete task in device failed!res = %s"), szRes);
MessageBoxEx(NULL, strErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return FALSE;
/*
pDev->m_sComPort.ClearCommSendBuff();
pDev->m_sComPort.ClearCommReceiveBuff();
pDev->m_sComPort.SendDataDirectly("\r\n", 2);
// TransDelay(g_iTransMode, 10, 50);
iResSize = (int)VAL_ZERO;
memset(aResBuff, 0, sizeof(aResBuff));
szResBuff.Empty();
iPollingTime = 0;
while ((szResBuff.Find(">") == -1) && (iPollingTime < 3))
{
while (pDev->m_sComPort.ReceiveDataDirectly(aResBuff, &iResSize) == TRUE)
{
szResBuff.Insert(szResBuff.GetLength(), aResBuff);
iResSize = (int)VAL_ZERO;
memset(aResBuff, 0, sizeof(aResBuff));
}
iPollingTime++;
}
if (iPollingTime == MAX_POLLING_TIME)
{
return FALSE;
}
pDev->m_sComPort.ClearCommSendBuff();
pDev->m_sComPort.ClearCommReceiveBuff();
szOrder.Empty();
szOrder.Format(_T("meas_delete(\"%s\",\"%s\",\"%s\")\r\n"), szPrCN, szTzCN, szTdCN);
pDev->m_sComPort.SendDataDirectly(szOrder.GetBuffer(szOrder.GetLength()), szOrder.GetLength());
szOrder.ReleaseBuffer();
// TransDelay(g_iTransMode, 100, 200);
// hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
// AfxMessageBox(szOrder);
iResSize = (int)VAL_ZERO;
memset(aResBuff, 0, sizeof(aResBuff));
szResBuff.Empty();
iPollingTime = 0;
while ((szResBuff.Find(">") == -1) && (iPollingTime < 3))
{
Sleep(500);
while (pDev->m_sComPort.ReceiveDataDirectly(aResBuff, &iResSize) == TRUE)
{
szResBuff.Insert(szResBuff.GetLength(), aResBuff);
iResSize = (int)VAL_ZERO;
memset(aResBuff, 0, sizeof(aResBuff));
}
iPollingTime++;
}
if (iPollingTime == MAX_POLLING_TIME)
{
return FALSE;
}
GetSubStringInHeadAndTail(szResBuff, szRes, _T("["), _T("]"));
if (_T("1") == szRes)
{
pCmdDel.CreateInstance(_uuidof(Command));
pCmdDel->ActiveConnection = m_pConnection;
try
{
m_pConnection->BeginTrans();
szSql.Empty();
szSql.Format(_T("delete from dev_syn_td where DESN = '%s' and TdCN = '%s'"), pDev->m_szDevSN, szTdCN);
pCmdDel->CommandText = szSql.AllocSysString();
pCmdDel->Execute(NULL, NULL, adCmdText);
m_pConnection->CommitTrans();
}
catch (_com_error e)
{
m_pConnection->RollbackTrans();
return APP_FAIL;
}
return TRUE;
}
else
{
return FALSE;
}
*/
}
}
BOOL CTdManager::Import2DTdOrgToDB(DWORD dwTdID, CString szOrgFile, CDevice* const pDev)
{
_RecordsetPtr pRecTdCon = NULL;
_RecordsetPtr pRecChID = NULL;
_RecordsetPtr pRecTd = NULL;
_CommandPtr pCmdUpd = NULL;
CString szSql = _T("");
CString szTsn = _T("");
CString szVRawData = _T("");
CString szIRawData = _T("");
CString szNodeName = _T("");
CString strText = _T("");
DWORD aChID[8] = {0};
int iIndex = (int)VAL_ZERO;
int iTsn = (int)VAL_ZERO;
int iChNum = (int)VAL_ZERO;
int iTType = (int)VAL_ZERO;
pRecTdCon.CreateInstance(_uuidof(Recordset));
pRecChID.CreateInstance(_uuidof(Recordset));
pRecTd.CreateInstance(_uuidof(Recordset));
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = m_pConnection;
//获取测试数据类型
szSql.Empty();
szSql.Format(_T("select Ttype from td where ID = %u"), dwTdID);
pRecTd->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO == pRecTd->GetRecordCount())
{
if (LANG_ZHCN == g_iUILanguage)
{
strText.Format(_T("Td表中没有这个TdID(%d)"), dwTdID);
AfxMessageBox(strText);
}
else
{
strText.Format(_T("There is not TdID(%d) in td table!"), dwTdID);
MessageBoxEx(NULL, strText, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return FALSE;
}
iTType = pRecTd->GetCollect(_T("Ttype")).lVal;
pRecTd->Close();
szSql.Empty();
szSql.Format(_T("select ID from tdchannel where TDID = %u"), dwTdID);
pRecChID->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
iIndex = (int)VAL_ZERO;
while ((short)VAL_ZERO == pRecChID->adoEOF)
{
aChID[iIndex] = pRecChID->GetCollect(_T("ID")).ulVal;
iIndex++;
pRecChID->MoveNext();
}
pRecChID->Close();
CMarkup *pXML = new CMarkup;
pXML->Load(szOrgFile);
pXML->FindElem(_T("Origin"));
int nTWCnt = 0;
szSql.Empty();
szSql.Format(_T("select TSN from td2dcon where TCHID = %u order by TSN"), aChID[0]);
pRecTdCon->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
while ((short)VAL_ZERO == pRecTdCon->adoEOF)
{
iTsn = (int)pRecTdCon->GetCollect(_T("TSN")).lVal;
if (iTsn <= 99999)
{
szNodeName.Format(_T("D%.5d"), iTsn);
}
else
{
szNodeName.Format(_T("D%d"), iTsn);
}
bool bRes = pXML->FindChildElem(szNodeName);
if (!bRes)
{
pXML->ResetChildPos();
bRes = pXML->FindChildElem(szNodeName);
}
if (bRes)
{
pXML->IntoElem();
pXML->FindChildElem(_T("V"));
szVRawData.Empty();
szVRawData = pXML->GetChildData();
pXML->FindChildElem(_T("I"));
szIRawData.Empty();
szIRawData = pXML->GetChildData();
//如果是激电数据,则去获取激电的指标
if (1 == iTType)
{
CStringArray strIndexArray;
strIndexArray.RemoveAll();
CString strTW= _T("");
if (pXML->FindChildElem(_T("IP_Index")))
{
pXML->IntoElem();
nTWCnt = 0;
strText.Empty();
strText = pXML->GetAttrib(_T("TW_Count"));
if (!strText.IsEmpty())
{
nTWCnt = atoi(strText);
}
strText.Empty();
strText = pXML->GetAttrib(_T("Thl"));
if (!strText.IsEmpty())
{
strIndexArray.Add(strText);
}
strText.Empty();
strText = pXML->GetAttrib(_T("D"));
if (!strText.IsEmpty())
{
strIndexArray.Add(strText);
}
strText.Empty();
strText = pXML->GetAttrib(_T("r"));
if (!strText.IsEmpty())
{
strIndexArray.Add(strText);
}
strText.Empty();
strText.Format(_T("%d"),nTWCnt);
strIndexArray.Add(strText);
for (int i = 0; i < nTWCnt; i++)
{
strTW.Empty();
strTW.Format(_T("M%d"),i);
if (false == pXML->FindChildElem(strTW))
{
strText.Empty();
if (LANG_ZHCN == g_iUILanguage)
{
strText.Format(_T("在%s文件中时间窗信息验证错误"), szOrgFile);
AfxMessageBox(strText);
}
else
{
strText.Format(_T("The information of time window verfied error in %s"), szOrgFile);
MessageBoxEx(NULL, strText, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
strIndexArray.RemoveAll();
break;
}
strText.Empty();
strText = pXML->GetChildData();
strIndexArray.Add(strText);
}
if (strIndexArray.GetSize() > 3)
{
ImportTdSpecAttr(strIndexArray, iTType, aChID[0],iTsn);
}
pXML->OutOfElem();
}
}
pXML->OutOfElem();
if ((szVRawData.GetLength() != (int)VAL_ZERO) && (szIRawData.GetLength() != (int)VAL_ZERO))
{
szSql.Empty();
szSql.Format(_T("update td2dcon set Vrawdata = ?, Irawdata = ? where TCHID = %u and TSN = %d"), aChID[0], iTsn);
//log
// CTime t;
// t = CTime::GetCurrentTime();
// m_log = t.Format("%Y-%m-%d,%H:%M:%S:");
// m_log += "\r\n";
// m_log += szSql;
// m_log += "\r\n";
// fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
// fflush(m_pFile);
//log
pCmdUpd->CommandType =adCmdText;
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Parameters->Append(pCmdUpd->CreateParameter("Vrawdata", adBSTR, adParamInput, szSql.GetLength(), _variant_t(szVRawData.AllocSysString())));
pCmdUpd->Parameters->Append(pCmdUpd->CreateParameter("Irawdata", adBSTR, adParamInput, szSql.GetLength(), _variant_t(szIRawData.AllocSysString())));
pCmdUpd->Execute(NULL, NULL, adCmdText);
if (pCmdUpd->Parameters->GetCount() != VAL_ZERO)
{
pCmdUpd->Parameters->Delete(_variant_t("Vrawdata"));
pCmdUpd->Parameters->Delete(_variant_t("Irawdata"));
}
}
else
{
if (LANG_ZHCN == g_iUILanguage)
{
strText.Format(_T("(%s) Vrawdata和Irawdata都不能为空!TCHID = %d"), szNodeName, aChID[0]);
AfxMessageBox(strText);
}
else
{
strText.Format(_T("(%s)Neither Vrawdata nor Irawdata can be empty!TCHID = %d"), szNodeName, aChID[0]);
MessageBoxEx(NULL, strText, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
pRecTdCon->Close();
delete pXML;
return FALSE;
}
}
pRecTdCon->MoveNext();
}
pRecTdCon->Close();
delete pXML;
return TRUE;
}
BOOL CTdManager::ImportCETdOrgToDB(DWORD dwTdID, CString szOrgFile, CDevice* const pDev)
{
_RecordsetPtr pRecTdCon = NULL;
_RecordsetPtr pRecChID = NULL;
_RecordsetPtr pRecTd = NULL;
_CommandPtr pCmdUpd = NULL;
CString szSql = _T("");
CString szTsn = _T("");
CString szVRawData = _T("");
CString szIRawData = _T("");
CString strText = _T("");
CString szNodeName = _T("");
DWORD aChID[8] = {0};
int iIndex = (int)VAL_ZERO;
int iTsn = (int)VAL_ZERO;
int iChNum = (int)VAL_ZERO;
int iTType = (int)VAL_ZERO;
pRecTdCon.CreateInstance(_uuidof(Recordset));
pRecChID.CreateInstance(_uuidof(Recordset));
pRecTd.CreateInstance(_uuidof(Recordset));
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = m_pConnection;
//获取测试数据类型
szSql.Empty();
szSql.Format(_T("select Ttype from td where ID = %u"), dwTdID);
pRecTd->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO == pRecTd->GetRecordCount())
{
if (LANG_ZHCN == g_iUILanguage)
{
strText.Format(_T("Td表中没有这个TdID(%d)"), dwTdID);
AfxMessageBox(strText);
}
else
{
strText.Format(_T("There is not TdID(%d) in td table!"), dwTdID);
MessageBoxEx(NULL, strText, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return FALSE;
}
iTType = pRecTd->GetCollect(_T("Ttype")).lVal;
pRecTd->Close();
szSql.Empty();
szSql.Format(_T("select ID from tdchannel where TDID = %u"), dwTdID);
pRecChID->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
iIndex = (int)VAL_ZERO;
while ((short)VAL_ZERO == pRecChID->adoEOF)
{
aChID[iIndex] = pRecChID->GetCollect(_T("ID")).ulVal;
iIndex++;
pRecChID->MoveNext();
}
pRecChID->Close();
CMarkup *pXML = new CMarkup;
pXML->Load(szOrgFile);
pXML->FindElem(_T("Origin"));
int nTWCnt = 0;
szSql.Empty();
szSql.Format(_T("select TSN from td1dcon where TCHID = %u order by TSN"), aChID[0]);
pRecTdCon->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
while ((short)VAL_ZERO == pRecTdCon->adoEOF)
{
iTsn = (int)pRecTdCon->GetCollect(_T("TSN")).lVal;
szNodeName.Empty();
if (iTsn <= 99999)
{
szNodeName.Format(_T("D%.5d"), iTsn);
}
else
{
szNodeName.Format(_T("D%d"), iTsn);
}
bool bRes = pXML->FindChildElem(szNodeName);
if (!bRes)
{
pXML->ResetChildPos();
bRes = pXML->FindChildElem(szNodeName);
}
if (bRes)
{
pXML->IntoElem();
pXML->FindChildElem(_T("V"));
szVRawData.Empty();
szVRawData = pXML->GetChildData();
pXML->FindChildElem(_T("I"));
szIRawData.Empty();
szIRawData = pXML->GetChildData();
//如果是激电数据,则去获取激电的指标
if (1 == iTType)
{
CStringArray strIndexArray;
strIndexArray.RemoveAll();
CString strTW= _T("");
if (pXML->FindChildElem(_T("IP_Index")))
{
pXML->IntoElem();
nTWCnt = 0;
strText.Empty();
strText = pXML->GetAttrib(_T("TW_Count"));
if (!strText.IsEmpty())
{
nTWCnt = atoi(strText);
}
strText.Empty();
strText = pXML->GetAttrib(_T("Thl"));
if (!strText.IsEmpty())
{
strIndexArray.Add(strText);
}
strText.Empty();
strText = pXML->GetAttrib(_T("D"));
if (!strText.IsEmpty())
{
strIndexArray.Add(strText);
}
strText.Empty();
strText = pXML->GetAttrib(_T("r"));
if (!strText.IsEmpty())
{
strIndexArray.Add(strText);
}
strText.Empty();
strText.Format(_T("%d"),nTWCnt);
strIndexArray.Add(strText);
for (int i = 0; i < nTWCnt; i++)
{
strTW.Empty();
strTW.Format(_T("M%d"),i);
if (false == pXML->FindChildElem(strTW))
{
if (LANG_ZHCN == g_iUILanguage)
{
strText.Format(_T("在%s文件中时间窗信息验证错误"), szOrgFile);
AfxMessageBox(strText);
}
else
{
strText.Format(_T("The information of time window verfied error in %s"), szOrgFile);
MessageBoxEx(NULL, strText, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
strIndexArray.RemoveAll();
break;
}
strText.Empty();
strText = pXML->GetChildData();
strIndexArray.Add(strText);
}
if (strIndexArray.GetSize() > 3)
{
ImportTdSpecAttr(strIndexArray, iTType, aChID[0], iTsn);
}
pXML->OutOfElem();
}
}
pXML->OutOfElem();
if ((szVRawData.GetLength() != (int)VAL_ZERO) && (szIRawData.GetLength() != (int)VAL_ZERO))
{
szSql.Empty();
szSql.Format(_T("update td1dcon set Vrawdata = ?, Irawdata = ? where TCHID = %u and TSN = %d"), aChID[0], iTsn);
//log
CTime t;
t = CTime::GetCurrentTime();
m_log = t.Format("%Y-%m-%d,%H:%M:%S:");
m_log += "\r\n";
m_log += szSql;
m_log += "\r\n";
// fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
// fflush(m_pFile);
//log
pCmdUpd->CommandType =adCmdText;
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Parameters->Append(pCmdUpd->CreateParameter("Vrawdata", adBSTR, adParamInput, szSql.GetLength(), _variant_t(szVRawData.AllocSysString())));
pCmdUpd->Parameters->Append(pCmdUpd->CreateParameter("Irawdata", adBSTR, adParamInput, szSql.GetLength(), _variant_t(szIRawData.AllocSysString())));
pCmdUpd->Execute(NULL, NULL, adCmdText);
if (pCmdUpd->Parameters->GetCount() != VAL_ZERO)
{
pCmdUpd->Parameters->Delete(_variant_t("Vrawdata"));
pCmdUpd->Parameters->Delete(_variant_t("Irawdata"));
}
}
else
{
if (LANG_ZHCN == g_iUILanguage)
{
strText.Format(_T("(%s) Vrawdata和Irawdata都不能为空!TCHID = %d"), szNodeName, aChID[0]);
AfxMessageBox(strText);
}
else
{
strText.Format(_T("(%s)Neither Vrawdata nor Irawdata can be empty!TCHID = %d"), szNodeName, aChID[0]);
MessageBoxEx(NULL, strText, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
pRecTdCon->Close();
delete pXML;
return FALSE;
}
}
pRecTdCon->MoveNext();
}
pRecTdCon->Close();
delete pXML;
return TRUE;
}
BOOL CTdManager::Convert2DTo3D(DWORD dwTzHandle)
{
long lRet = VAL_ZERO;
int iIndex = (int)VAL_ZERO;
int iCableCount = (int)VAL_ZERO;
int iMedium = (int)VAL_ZERO;
int iPoleCount = (int)VAL_ZERO;
int iRowCount = (int)VAL_ZERO;
int iColCount = (int)VAL_ZERO;
float fRowSpacing = (float)VAL_ZERO;
float fColSpacing = (float)VAL_ZERO;
int iTPCount = (int)VAL_ZERO;
int iC1 = (int)VAL_ZERO;
int iC2 = (int)VAL_ZERO;
int iP1 = (int)VAL_ZERO;
int iP2 = (int)VAL_ZERO;
float fR0 = (float)VAL_ZERO;
DWORD dwTdHandle = (DWORD)VAL_ZERO;
DWORD dwTdID = (DWORD)VAL_ZERO;
DWORD dwChID = (DWORD)VAL_ZERO;
CString szValue = _T("");
CString szFile = _T("");
_RecordsetPtr pRecCh = NULL;
_RecordsetPtr pRecTdCon = NULL;
CString szSql = _T("");
CString szCurFilePath = _T("");
CFileDialog* pDlgSaveFile = new CFileDialog(FALSE, "dat", "", OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY |OFN_NOCHANGEDIR, "DAT file(*.dat)|*.dat||", AfxGetMainWnd());
CRes3DDatFile* pRes3DDatFile = new CRes3DDatFile;
COpTd2DTo3DDlg* pOpTd2DTo3DDlg = new COpTd2DTo3DDlg(this, dwTzHandle);
pOpTd2DTo3DDlg->Create(IDD_OP_TD_2DTO3D, AfxGetMainWnd());
this->InitialTd2DTo3DDlg(pOpTd2DTo3DDlg);
pOpTd2DTo3DDlg->ShowWindow(SW_SHOW);
lRet = pOpTd2DTo3DDlg->RunModalLoop(MLF_SHOWONIDLE);
if (RET_OK == lRet)
{
szCurFilePath.Empty();
szCurFilePath.GetBufferSetLength(256);
::GetCurrentDirectory(szCurFilePath.GetLength(), szCurFilePath.GetBuffer(szCurFilePath.GetLength()));
szCurFilePath.ReleaseBuffer();
pDlgSaveFile->m_ofn.lpstrTitle = _T("Save");
pDlgSaveFile->m_ofn.lpstrInitialDir = szCurFilePath;
if (pDlgSaveFile->DoModal() == IDOK)
{
szFile.Empty();
szFile = pDlgSaveFile->GetPathName();
pRecCh.CreateInstance(_uuidof(Recordset));
pRecTdCon.CreateInstance(_uuidof(Recordset));
szValue.Empty();
pOpTd2DTo3DDlg->m_edTitle.GetWindowText(szValue);
pRes3DDatFile->SetTitle(szValue);
iMedium = (int)pOpTd2DTo3DDlg->m_cbMedium.GetItemData(pOpTd2DTo3DDlg->m_cbMedium.GetCurSel());
pRes3DDatFile->SetMedium(iMedium);
szValue.Empty();
pOpTd2DTo3DDlg->m_edPoleSpace.GetWindowText(szValue);
fColSpacing = (float)atof(szValue);
szValue.Empty();
pOpTd2DTo3DDlg->m_edRowSpace.GetWindowText(szValue);
fRowSpacing = (float)atof(szValue);
pRes3DDatFile->SetSpacing(fRowSpacing, fColSpacing);
iTPCount = (int)VAL_ZERO;
iCableCount = (int)VAL_ZERO;
iIndex = (int)VAL_ZERO;
pRes3DDatFile->ClearAllRecord();
while (iIndex < pOpTd2DTo3DDlg->m_tdList.GetItemCount())
{
if (TRUE == pOpTd2DTo3DDlg->m_tdList.GetCheck(iIndex))
{
iCableCount ++;
dwTdHandle = pOpTd2DTo3DDlg->m_tdList.GetItemData(iIndex);
dwTdID = this->m_handleProcessor.GetIDFromHandle(dwTdHandle);
szSql.Empty();
szSql.Format(_T("select ID from tdchannel where TDID = %u"), dwTdID);
pRecCh->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecCh->GetRecordCount())
{
dwChID = (DWORD)pRecCh->GetCollect(_T("ID")).ulVal;
szSql.Empty();
szSql.Format(_T("select C1,C2,P1,P2,R0 from td2dcon where TCHID = %u order by TSN"), dwChID);
pRecTdCon->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
while ((short)VAL_ZERO == pRecTdCon->adoEOF)
{
iC1 = (int)pRecTdCon->GetCollect(_T("C1")).iVal;
iC2 = (int)pRecTdCon->GetCollect(_T("C2")).iVal;
iP1 = (int)pRecTdCon->GetCollect(_T("P1")).iVal;
iP2 = (int)pRecTdCon->GetCollect(_T("P2")).iVal;
fR0 = (float)pRecTdCon->GetCollect(_T("R0")).fltVal;
pRes3DDatFile->AddRecord(iCableCount, iC1, iC2, iP1, iP2, fR0);
pRecTdCon->MoveNext();
}
pRecTdCon->Close();
}
pRecCh->Close();
}
iIndex ++;
}
szValue.Empty();
pOpTd2DTo3DDlg->m_edPoleCount.GetWindowText(szValue);
iPoleCount = atoi(szValue);
pRes3DDatFile->SetGriding(iCableCount, iPoleCount);
pRes3DDatFile->Generate(szFile);
}
}
delete pOpTd2DTo3DDlg;
delete pRes3DDatFile;
return TRUE;
}
BOOL CTdManager::InitialTd2DTo3DDlg(COpTd2DTo3DDlg *pOpTd2DTo3DDlg)
{
_RecordsetPtr pRecMed = NULL;
CString szSql = _T("");
int iIndex = (int)VAL_ZERO;
pRecMed.CreateInstance(_uuidof(Recordset));
pOpTd2DTo3DDlg->m_cbMedium.ResetContent();
iIndex = (int)VAL_ZERO;
szSql.Empty();
szSql.Format(_T("select AR,MEname from medium where LANG = %d and AR in (1,2,3,4,5,9,11)"), g_iLanguage);
pRecMed->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
while ((short)VAL_ZERO == pRecMed->adoEOF)
{
iIndex = pOpTd2DTo3DDlg->m_cbMedium.AddString((LPCTSTR)(_bstr_t)pRecMed->GetCollect(_T("MEname")));
pOpTd2DTo3DDlg->m_cbMedium.SetItemData(iIndex, (DWORD)pRecMed->GetCollect(_T("AR")).ulVal);
pRecMed->MoveNext();
}
pRecMed->Close();
return TRUE;
}
BOOL CTdManager::Upload3DTdFromDev(CString szPrCN, CString szTzCN, CString szTdCN, CString strSubTdCN, CDevice* const pDev)
{
DWORD dwTzID = (DWORD)VAL_ZERO;
DWORD dwTdID = (DWORD)VAL_ZERO;
_RecordsetPtr pRecTdID = NULL;
_RecordsetPtr pRecTzID = NULL;
CString szSql = _T("");
CString szLocFilePath = _T("");
CString szFileName = _T("");
CString szHostPath = _T("");
_CommandPtr pCmdUpd = NULL;
pRecTdID.CreateInstance(_uuidof(Recordset));
pRecTzID.CreateInstance(_uuidof(Recordset));
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("select ID from td where TdCN = '%s' and DESN = '%s'"), szTdCN, pDev->m_szDevSN);
pRecTdID->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTdID->GetRecordCount())
{
pRecTdID->Close();
return FALSE;
}
pRecTdID->Close();
szLocFilePath.Empty();
szLocFilePath.GetBufferSetLength(256);
::GetCurrentDirectory(szLocFilePath.GetLength(), szLocFilePath.GetBuffer(szLocFilePath.GetLength()));
szLocFilePath.ReleaseBuffer();
szLocFilePath = szLocFilePath + _T("\\CACHE\\projects\\");
szLocFilePath += szPrCN;
if (!PathFileExistsA(szLocFilePath)) {
::CreateDirectoryA(szLocFilePath, nullptr);
}
szLocFilePath += "\\" + szTzCN;
if (!PathFileExistsA(szLocFilePath)) {
::CreateDirectoryA(szLocFilePath, nullptr);
}
szLocFilePath += "\\";
szFileName.Empty();
szFileName = szTdCN + _T(".xml");
szHostPath = _T("/SD/projects/") + szPrCN + _T("/") + szTzCN;
//计算出总任务的个数,用于界面显示进度
CString strSaveSubTdCN = strSubTdCN;
CString strTemp;
int iTaskCount = 0;
int iDefaultTotalFileNum = 4;
if (!strSubTdCN.IsEmpty())
{
int iPos = -1;
strTemp = strSubTdCN;
do
{
iTaskCount++;
iPos = strTemp.Find(',');
if (iPos > 0)
strTemp = strTemp.Mid(iPos + 1);
} while (iPos > 0);
iDefaultTotalFileNum = (iTaskCount + 1) * 4;
}
CTaskProgressDlg *pTaskProgessDlg = NULL;
pTaskProgessDlg = new CTaskProgressDlg(FALSE, iDefaultTotalFileNum, pDev);
pTaskProgessDlg->Create(IDD_TASK_PROGRESS);
pTaskProgessDlg->ShowWindow(SW_SHOW);
HWND hWnd = pTaskProgessDlg->m_hWnd;
string strRawPath = CDetcGD10Dev::GetInstance()->GetGD10DevAddr() + szHostPath;
strRawPath.append("/");
string strFindPath = strRawPath;
strFindPath.append(szTdCN + "*.*");
WIN32_FIND_DATAA winFindData;
HANDLE hTemp = FindFirstFileA(strFindPath.c_str(), &winFindData);
if (INVALID_HANDLE_VALUE != hTemp)
{
do
{
string strOldName = winFindData.cFileName;
if ("." == strOldName || ".." == strOldName)
continue;
if (winFindData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
{
continue;
}
strOldName = strRawPath;
strOldName.append(winFindData.cFileName);
CString dst = szLocFilePath + winFindData.cFileName;
CopyFileExA(strOldName.c_str(), dst, nullptr, this, nullptr, 0);
} while (FindNextFileA(hTemp, &winFindData));
FindClose(hTemp);
}
CString strTDCNTemp = _T("");
try
{
m_pConnection->BeginTrans();
szSql.Empty();
szSql.Format(_T("select ID from tz where CN = '%s'"), szTzCN);
pRecTzID->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTzID->GetRecordCount())
{
dwTzID = pRecTzID->GetCollect(_T("ID")).ulVal;
}
pRecTzID->Close();
::SendMessage(hWnd, WM_UPDATE_TIPS, 0, (LPARAM)(LPCTSTR)(szFileName));
dwTdID = this->ImportTdHeadToDB(dwTzID, szLocFilePath + szFileName, pDev);
strTDCNTemp = szTdCN;
int pTSN = (int)VAL_ONE;
do
{
szFileName.Empty();
szFileName = strTDCNTemp + _T(".dat");
::SendMessage(hWnd, WM_UPDATE_TIPS, 0, (LPARAM)(LPCTSTR)(szFileName));
if (TRUE == this->Import3DTdConToDB(dwTdID, szLocFilePath + szFileName, pDev, &pTSN))
{
szFileName.Empty();
szFileName = strTDCNTemp + _T(".org");
::SendMessage(hWnd, WM_UPDATE_TIPS, 0, (LPARAM)(LPCTSTR)(szFileName));
if (TRUE == this->Import3DTdOrgToDB(dwTdID, szLocFilePath + szFileName, pDev))
{
//test111,为了做测试,暂时不删除源文件
}
else
{
if (pTaskProgessDlg)
{
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
m_pConnection->RollbackTrans();
return FALSE;
}
}
else
{
if (pTaskProgessDlg)
{
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
m_pConnection->RollbackTrans();
return FALSE;
}
//遍历子任务节点
strTDCNTemp.Empty();
if (!strSubTdCN.IsEmpty())
{
int iPos = strSubTdCN.Find(',');
if (iPos > 0)
{
strTDCNTemp = strSubTdCN.Mid(0, iPos);
strSubTdCN = strSubTdCN.Mid(iPos + 1);
}
else
{
strTDCNTemp = strSubTdCN;
strSubTdCN.Empty();
}
}
} while (!strTDCNTemp.IsEmpty());
/*szFileName.Empty();
szFileName = szTdCN + _T(".res");
szHostFile = _T("/SD/projects/") + szPrCN + _T("/") + szTzCN + _T("/") + szFileName;*/
if (strSaveSubTdCN.IsEmpty())
{
szFileName.Empty();
szFileName = szTdCN + _T(".res");
}
else
{
int iPos = -1;
iPos = strSaveSubTdCN.ReverseFind(',');
if (iPos != -1)
{
strSaveSubTdCN = strSaveSubTdCN.Mid(iPos + 1);
}
szFileName.Empty();
szFileName = strSaveSubTdCN + _T(".res");
}
::SendMessage(hWnd, WM_UPDATE_TIPS, 0, (LPARAM)(LPCTSTR)(szFileName));
if (TRUE != this->Import3DGRToDB(dwTdID, szLocFilePath + szFileName, pDev))
{
m_pConnection->RollbackTrans();
return FALSE;
}
szSql.Empty();
szSql.Format(_T("update dev_syn_td set IsSyned = true where DESN = '%s' and TdCN = '%s'"), pDev->m_szDevSN, szTdCN);
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
m_pConnection->CommitTrans();
}
catch (_com_error e)
{
if (pTaskProgessDlg)
{
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
hHook = SetWindowsHookEx(WH_CBT, (HOOKPROC)CBTHookProc, AfxGetInstanceHandle(), NULL);
AfxMessageBox(e.Description());
m_pConnection->RollbackTrans();
return FALSE;
}
if (pTaskProgessDlg)
{
pTaskProgessDlg->DestroyWindow();
delete pTaskProgessDlg;
pTaskProgessDlg = NULL;
}
return TRUE;
}
BOOL CTdManager::UploadWellTdFromDev(CString szPrCN, CString szTzCN, CString szTdCN, CString strSubTdCN, CDevice* const pDev)
{
BOOL bXmlRes = FALSE;
CString strLocalXmlFilePath = _T("");
CString strLocalDatFilePath = _T("");
CString strCurrentPath = _T("");
CString strSrcXmlFilePath = _T("");
CString strSrcDatFilePath = _T("");
CString strSDRecordDir = _T("");
strSDRecordDir = CDetcGD10Dev::GetInstance()->GetGD10DevAddr();
strSrcXmlFilePath.Format(_T("%sSD/projects/%s/%s/%s.xml"), strSDRecordDir, szPrCN, szTzCN, szTdCN);
strSrcDatFilePath.Format(_T("%sSD/projects/%s/%s/%s.dat"), strSDRecordDir, szPrCN, szTzCN, szTdCN);
char szFilePath[MAX_PATH] = { 0 };
GetModuleFileName(NULL, szFilePath, MAX_PATH);
strCurrentPath = szFilePath;
int iFlag = strCurrentPath.ReverseFind('\\');
if (iFlag != -1)
{
strCurrentPath = strCurrentPath.Mid(0, iFlag);
}
else
{
iFlag = strCurrentPath.ReverseFind('/');
if (iFlag != -1)
{
strCurrentPath = strCurrentPath.Mid(0, iFlag);
}
}
strLocalXmlFilePath.Format(_T("%s/logging/%s.xml"), strCurrentPath, szTdCN);
strLocalDatFilePath.Format(_T("%s/logging/%s.dat"), strCurrentPath, szTdCN);
CString strErr;
int iTimes = 0;
do
{
bXmlRes = CopyFile(strSrcXmlFilePath, strLocalXmlFilePath, FALSE);
if (false == bXmlRes)
{
strErr.Format(_T("CTdManager::UploadWellTdFromDev CopyFile %s file failed!,code=%d"), strSrcXmlFilePath, GetLastError());
CFileOperTools::GetInstance()->WriteComLog(strErr);
Sleep(5000);
}
iTimes++;
} while (!bXmlRes && (iTimes <= 3));
if (bXmlRes == false && iTimes > 3)
{
strErr.Format(_T("CTdManager::UploadWellTdFromDev CopyFile %s file failed!,code=%d"), strSrcXmlFilePath, GetLastError());
CFileOperTools::GetInstance()->WriteComLog(strErr);
return bXmlRes;
}
iTimes = 0;
do
{
bXmlRes = CopyFile(strSrcDatFilePath, strLocalDatFilePath, FALSE);
if (false == bXmlRes)
{
strErr.Format(_T("CTdManager::UploadWellTdFromDev CopyFile %s file failed!,code=%d"), strSrcDatFilePath, GetLastError());
CFileOperTools::GetInstance()->WriteComLog(strErr);
Sleep(5000);
}
iTimes++;
} while (!bXmlRes && (iTimes <= 3));
if (bXmlRes == false && iTimes > 3)
{
strErr.Format(_T("CTdManager::UploadWellTdFromDev CopyFile %s file failed!,code=%d"), strSrcDatFilePath, GetLastError());
CFileOperTools::GetInstance()->WriteComLog(strErr);
return bXmlRes;
}
return bXmlRes;
}
BOOL CTdManager::Import3DTdOrgToDB(DWORD dwTdID, CString szOrgFile, CDevice* const pDev)
{
_RecordsetPtr pRecTdCon = NULL;
_RecordsetPtr pRecChID = NULL;
_RecordsetPtr pRecTd = NULL;
_CommandPtr pCmdUpd = NULL;
CString szSql = _T("");
CString szTsn = _T("");
CString szVRawData = _T("");
CString szIRawData = _T("");
CString szNodeName = _T("");
CString strShowInfo = _T("");
CString strText = _T("");
DWORD aChID[8] = {0};
int iIndex = (int)VAL_ZERO;
int iTsn = (int)VAL_ZERO;
int iChNum = (int)VAL_ZERO;
int iTType = (int)VAL_ZERO;
pRecTdCon.CreateInstance(_uuidof(Recordset));
pRecChID.CreateInstance(_uuidof(Recordset));
pRecTd.CreateInstance(_uuidof(Recordset));
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = m_pConnection;
//获取测试数据类型
szSql.Empty();
szSql.Format(_T("select Ttype from td where ID = %u"), dwTdID);
pRecTd->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO == pRecTd->GetRecordCount())
{
if (LANG_ZHCN == g_iUILanguage)
{
strText.Format(_T("Td表中没有这个TdID(%d)"), dwTdID);
AfxMessageBox(strText);
}
else
{
strText.Format(_T("There is not TdID(%d) in td table!"), dwTdID);
MessageBoxEx(NULL, strText, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return FALSE;
}
iTType = pRecTd->GetCollect(_T("Ttype")).lVal;
pRecTd->Close();
szSql.Empty();
szSql.Format(_T("select ID from tdchannel where TDID = %u"), dwTdID);
pRecChID->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
iIndex = (int)VAL_ZERO;
while ((short)VAL_ZERO == pRecChID->adoEOF)
{
aChID[iIndex] = pRecChID->GetCollect(_T("ID")).ulVal;
iIndex++;
pRecChID->MoveNext();
}
pRecChID->Close();
CMarkup *pXML = new CMarkup;
pXML->Load(szOrgFile);
pXML->FindElem(_T("Origin"));
int nTWCnt = 0;
szSql.Empty();
szSql.Format(_T("select TSN from td3dcon where TCHID = %u order by TSN"), aChID[0]);
pRecTdCon->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
while ((short)VAL_ZERO == pRecTdCon->adoEOF)
{
iTsn = (int)pRecTdCon->GetCollect(_T("TSN")).lVal;
if (iTsn <= 99999)
{
szNodeName.Format(_T("D%.5d"), iTsn);
}
else
{
szNodeName.Format(_T("D%d"), iTsn);
}
bool bRes = pXML->FindChildElem(szNodeName);
if (!bRes)
{
pXML->ResetChildPos();
bRes = pXML->FindChildElem(szNodeName);
}
if (bRes)
{
pXML->IntoElem();
if (!pXML->FindChildElem(_T("V")))
{
if (LANG_ZHCN == g_iUILanguage)
{
strShowInfo.Format(_T("无法在%s和tchid = %u行中找到vrawdata"), szNodeName.GetBuffer(0), aChID[0]);
AfxMessageBox(strShowInfo.GetBuffer(0));
}
else
{
strShowInfo.Format(_T("Can not found vrawdata in row %s and tchid = %u"), szNodeName.GetBuffer(0), aChID[0]);
MessageBoxEx(NULL, strShowInfo, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
}
szVRawData.Empty();
szVRawData = pXML->GetChildData();
if(!pXML->FindChildElem(_T("I")))
{
if (LANG_ZHCN == g_iUILanguage)
{
strShowInfo.Format(_T("无法在%s和tchid = %u行中找到vrawdata"), szNodeName.GetBuffer(0), aChID[0]);
AfxMessageBox(strShowInfo.GetBuffer(0));
}
else
{
strShowInfo.Format(_T("Can not found vrawdata in row %s and tchid = %u"), szNodeName.GetBuffer(0), aChID[0]);
MessageBoxEx(NULL, strShowInfo, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
}
szIRawData.Empty();
szIRawData = pXML->GetChildData();
//如果是激电数据,则去获取激电的指标
if (1 == iTType)
{
CStringArray strIndexArray;
strIndexArray.RemoveAll();
CString strTW= _T("");
if (pXML->FindChildElem(_T("IP_Index")))
{
pXML->IntoElem();
nTWCnt = 0;
strText.Empty();
strText = pXML->GetAttrib(_T("TW_Count"));
if (!strText.IsEmpty())
{
nTWCnt = atoi(strText);
}
strText.Empty();
strText = pXML->GetAttrib(_T("Thl"));
if (!strText.IsEmpty())
{
strIndexArray.Add(strText);
}
strText.Empty();
strText = pXML->GetAttrib(_T("D"));
if (!strText.IsEmpty())
{
strIndexArray.Add(strText);
}
strText.Empty();
strText = pXML->GetAttrib(_T("r"));
if (!strText.IsEmpty())
{
strIndexArray.Add(strText);
}
strText.Empty();
strText.Format(_T("%d"),nTWCnt);
strIndexArray.Add(strText);
for (int i = 0; i < nTWCnt; i++)
{
strTW.Empty();
strTW.Format(_T("M%d"),i);
if (false == pXML->FindChildElem(strTW))
{
if (LANG_ZHCN == g_iUILanguage)
{
strText.Format(_T("在%s文件中时间窗信息验证错误"), szOrgFile);
AfxMessageBox(strText);
}
else
{
strText.Format(_T("The information of time window verfied error in %s"), szOrgFile);
MessageBoxEx(NULL, strText, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
strIndexArray.RemoveAll();
break;
}
strText.Empty();
strText = pXML->GetChildData();
strIndexArray.Add(strText);
}
if (strIndexArray.GetSize() > 3)
{
ImportTdSpecAttr(strIndexArray, iTType, aChID[0], iTsn);
}
pXML->OutOfElem();
}
}
pXML->OutOfElem();
if ((szVRawData.GetLength() != (int)VAL_ZERO) && (szIRawData.GetLength() != (int)VAL_ZERO))
{
szSql.Empty();
szSql.Format(_T("update td3dcon set Vrawdata = ?, Irawdata = ? where TCHID = %u and TSN = %d"), aChID[0], iTsn);
//log
// CTime t;
// t = CTime::GetCurrentTime();
// m_log = t.Format("%Y-%m-%d,%H:%M:%S:");
// m_log += "\r\n";
// m_log += szSql;
// m_log += "\r\n";
// fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
// fflush(m_pFile);
//log
pCmdUpd->CommandType =adCmdText;
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Parameters->Append(pCmdUpd->CreateParameter("Vrawdata", adBSTR, adParamInput, szSql.GetLength(), _variant_t(szVRawData.AllocSysString())));
pCmdUpd->Parameters->Append(pCmdUpd->CreateParameter("Irawdata", adBSTR, adParamInput, szSql.GetLength(), _variant_t(szIRawData.AllocSysString())));
pCmdUpd->Execute(NULL, NULL, adCmdText);
if (pCmdUpd->Parameters->GetCount() != VAL_ZERO)
{
pCmdUpd->Parameters->Delete(_variant_t("Vrawdata"));
pCmdUpd->Parameters->Delete(_variant_t("Irawdata"));
}
}
else
{
if (LANG_ZHCN == g_iUILanguage)
{
strText.Format(_T("(%s) Vrawdata和Irawdata都不能为空!TCHID = %d"), szNodeName, aChID[0]);
AfxMessageBox(strText);
}
else
{
strText.Format(_T("(%s)Neither Vrawdata nor Irawdata can be empty!TCHID = %d"), szNodeName, aChID[0]);
MessageBoxEx(NULL, strText, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
pRecTdCon->Close();
delete pXML;
return FALSE;
}
}
pRecTdCon->MoveNext();
}
pRecTdCon->Close();
delete pXML;
return TRUE;
}
BOOL CTdManager::Import3DTdConToDB(DWORD dwTdID, CString szDatFile, CDevice* const pDev, int* pTSN)
{
_RecordsetPtr pRecChID = NULL;
_CommandPtr pCmdIns = NULL;
CString szSql = _T("");
CString szTsn = _T("");
CString szTdCon = _T("");
CStringArray saTdCon;
CString szNodeName = _T("");
int iIndex = (int)VAL_ZERO;
DWORD aChID[8] = {0};
DWORD dwChID = (DWORD)VAL_ZERO;
int iTsn = (int)VAL_ZERO;
int iChNum = (int)VAL_ZERO;
int iC1 = (int)VAL_ZERO;
int iC2 = (int)VAL_ZERO;
int iP1 = (int)VAL_ZERO;
int iP2 = (int)VAL_ZERO;
int iN = (int)VAL_ZERO;
float fK = (float)VAL_ZERO;
float fI = (float)VAL_ZERO;
float fV = (float)VAL_ZERO;
float fR0 = (float)VAL_ZERO;
float fSP = (float)VAL_ZERO;
float fR0LC = (float)VAL_ZERO;
float fM0LC = (float)VAL_ZERO;
CMarkup *pXML = new CMarkup;
try
{
pRecChID.CreateInstance(_uuidof(Recordset));
pCmdIns.CreateInstance(_uuidof(Command));
pCmdIns->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("select ID from tdchannel where TDID = %u"), dwTdID);
pRecChID->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
iIndex = (int)VAL_ZERO;
while ((short)VAL_ZERO == pRecChID->adoEOF)
{
aChID[iIndex] = pRecChID->GetCollect(_T("ID")).ulVal;
iIndex++;
pRecChID->MoveNext();
}
pRecChID->Close();
pXML->Load(szDatFile);
pXML->FindElem(_T("TD"));
pXML->FindChildElem("param");
pXML->FindChildElem("Data");
pXML->IntoElem();
iTsn = (int)VAL_ONE;
if (NULL != pTSN)
{
iTsn = *pTSN;
}
szNodeName.Empty();
szNodeName.Format(_T("D%.5d"), iTsn);
CString strShowErr = _T("");
bool bIsWirteCheckLC = true;
while (pXML->FindChildElem(szNodeName))
{
szTdCon.Empty();
szTdCon = pXML->GetChildData();
if (szTdCon.IsEmpty())
{
if (LANG_ZHCN == g_iUILanguage)
{
strShowErr.Format(_T("获取 %s 子数据为空!!!"), szNodeName.GetBuffer(0));
AfxMessageBox(strShowErr.GetBuffer(0));
}
else
{
strShowErr.Format(_T("Get %s childdata is empty!!!"), szNodeName.GetBuffer(0));
MessageBoxEx(NULL, strShowErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
}
SplitterString(saTdCon, szTdCon, _T(";"));
if (saTdCon.GetSize() < 20)
{
if (LANG_ZHCN == g_iUILanguage)
{
strShowErr.Format(_T("%s元素的大小错误,应该小于20但实际值=%d"), szNodeName.GetBuffer(0), saTdCon.GetSize());
AfxMessageBox(strShowErr.GetBuffer(0));
}
else
{
strShowErr.Format(_T("%s 's element size is error, should be at least 20 but actually is %d"), szNodeName.GetBuffer(0));
MessageBoxEx(NULL, strShowErr, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
pXML->OutOfElem();
delete pXML;
return FALSE;
}
bool bIsHaveLC = false;
//判断是否存在R0_LC和MO_LC,如果不存在,则认为是以前的版本,写错误日志
if (saTdCon.GetSize() < 22)
{
if (bIsWirteCheckLC)
{
CString strErrLog = _T("");
strErrLog.Format(_T("[%d][Td3d]deviation_iteratin data is not exits in Task(%d), node = %s, vector's size = %d "),
__LINE__, dwTdID, szNodeName, saTdCon.GetSize());
CFileOperTools::GetInstance()->WriteComLog(strErrLog);
//日志信息只写一次
bIsWirteCheckLC = false;
}
}
else
bIsHaveLC = true;
int iTestFlag = atoi(saTdCon.GetAt(19));
//只有成功测试了的数据才插入到数据库中去
if (1 == iTestFlag)
{
iC1 = atoi(saTdCon.GetAt(0));
iC2 = atoi(saTdCon.GetAt(1));
iP1 = atoi(saTdCon.GetAt(2));
iP2 = atoi(saTdCon.GetAt(3));
iChNum = atoi(saTdCon.GetAt(4));
dwChID = aChID[iChNum-1];
iN = atoi(saTdCon.GetAt(5));
fK = (float)atof(saTdCon.GetAt(6));
fI = (float)atof(saTdCon.GetAt(7));
fV = (float)atof(saTdCon.GetAt(8));
fR0 = (float)atof(saTdCon.GetAt(9));
fSP = (float)atof(saTdCon.GetAt(10));
if (bIsHaveLC)
{
fR0LC = (float)atof(saTdCon.GetAt(20));
fM0LC = (float)atof(saTdCon.GetAt(21));
}
szSql.Empty();
szSql.Format(_T("insert into td3dcon(TCHID,TSN,C1,C2,P1,P2,N,K,I,V,R0,SP,bUse,R0_LC,M0_LC) values(%u,%d,%d,%d,%d,%d,%d,%f,%f,%f,%f,%f,%d,%f,%f)"),
dwChID,iTsn,iC1,iC2,iP1,iP2,iN,fK,fI,fV,fR0,fSP,TRUE,fR0LC,fM0LC);
//log
// CTime t;
// t = CTime::GetCurrentTime();
// m_log = t.Format("%Y-%m-%d,%H:%M:%S:");
// m_log += "\r\n";
// m_log += szSql;
// m_log += "\r\n";
// fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
// fflush(m_pFile);
//log
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
}
iTsn++;
szNodeName.Empty();
if (iTsn <= 99999)
{
szNodeName.Format(_T("D%.5d"), iTsn);
}
else
{
szNodeName.Format(_T("D%d"), iTsn);
}
}
pXML->OutOfElem();
delete pXML;
}
catch(_com_error e)
{
hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
AfxMessageBox(e.Description());
delete pXML;
return FALSE;
}
*pTSN = iTsn;
return TRUE;
}
BOOL CTdManager::Import3DGRToDB(DWORD dwTdID, CString szGRFile, CDevice* const pDev)
{
//temp delete由于底层接地电阻修改格式,这里暂时屏蔽
// return TRUE;
//log
m_log = "\r\nImportTdHeadToDB------------begin\r\n";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
_CommandPtr pCmdIns = NULL;
CString szSql = _T("");
CString szECode = _T("");
CString szDT = _T("");
CString szMDate = _T("");
CString szMTime = _T("");
CString strCode = _T("");
CString strCode1 = _T("");
int iOMValue = (int)VAL_ZERO;
int iOM1Value = (int)VAL_ZERO;
int iResCode = (int)VAL_ZERO;
int iResCode1 = (int)VAL_ZERO;
CString szTdGR = _T("");
CStringArray saTdGR;
CString szNodeName = _T("");
int iIndex = (int)VAL_ZERO;
pCmdIns.CreateInstance(_uuidof(Command));
pCmdIns->ActiveConnection = m_pConnection;
CMarkup *pXML = new CMarkup;
pXML->Load(szGRFile);
pXML->FindElem(_T("TD"));
pXML->FindChildElem("param");
pXML->FindChildElem("Data");
pXML->IntoElem();
iIndex = (int)VAL_ONE;
szNodeName.Empty();
szNodeName.Format(_T("D%.5d"), iIndex);
while (pXML->FindChildElem(szNodeName))
{
szTdGR = pXML->GetChildData();
SplitterString(saTdGR, szTdGR, _T(";"));
szECode.Empty();
szECode = saTdGR.GetAt(0);
szECode.TrimLeft();
szECode.TrimRight();
iOMValue = atoi(saTdGR.GetAt(1));
iResCode = atoi(saTdGR.GetAt(2));
iOM1Value = atoi(saTdGR.GetAt(3));
iResCode1 = atoi(saTdGR.GetAt(4));
szDT.Empty();
szDT = saTdGR.GetAt(5);
szDT.TrimLeft();
szDT.TrimRight();
szMDate.Empty();
szMDate.Format(_T("%s-%s-%s"), szDT.Mid(0, 4), szDT.Mid(4, 2), szDT.Mid(6, 2));
szMTime.Empty();
szMTime.Format(_T("%s:%s:%s"), szDT.Mid(8, 2), szDT.Mid(10, 2), szDT.Mid(12, 2));
if (szMTime == "1900-01-00")
{
szMTime = "1900-01-01";
}
if (szMDate == "1900-01-00")
{
szMDate = "1900-01-01";
}
szSql.Empty();
szSql.Format(_T("insert into gr(TDID,Ecode,OMvalue,Mdate,Mtime,StatusCode,OM1value,StatusCode1) values(%u,'%s',%d,#%s#,#%s#,%d,%d,%d)"),
dwTdID, szECode, iOMValue, szMDate, szMTime, iResCode, iOM1Value, iResCode1);
//log
CTime t;
t = CTime::GetCurrentTime();
m_log = t.Format("%Y-%m-%d,%H:%M:%S:");
m_log += "\r\n";
m_log += szSql;
m_log += "\r\n";
// fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
// fflush(m_pFile);
//log
pCmdIns->CommandText = szSql.AllocSysString();
pCmdIns->Execute(NULL, NULL, adCmdText);
iIndex++;
szNodeName.Empty();
if (iIndex <= 99999)
{
szNodeName.Format(_T("D%.5d"), iIndex);
}
else
{
szNodeName.Format(_T("D%d"), iIndex);
}
}
delete pXML;
//log
m_log = "ImportTdHeadToDB------------end";
fwrite(m_log.GetBuffer(0), 1, m_log.GetLength(), m_pFile);
fflush(m_pFile);
//log
return TRUE;
}
void CTdManager::DeleteIpsp3DTd(DWORD dwID)
{
_RecordsetPtr pRecTd = NULL;
_CommandPtr pCmdDelIpspTd = NULL;
_CommandPtr pCmdUpd = NULL;
_CommandPtr pCmdTW = NULL;
CString szSql = _T("");
CString szTdCN = _T("");
CString szDESN = _T("");
pRecTd.CreateInstance(_uuidof(Recordset));
pCmdDelIpspTd.CreateInstance(_uuidof(Command));
pCmdDelIpspTd->ActiveConnection = m_pConnection;
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = m_pConnection;
pCmdTW.CreateInstance(_uuidof(Command));
pCmdTW->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("delete from ac where TDID = %u"), dwID);
pCmdTW->CommandText = szSql.AllocSysString();
pCmdTW->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("select TdCN,DESN from td where ID = %u"), dwID);
pRecTd->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTd->GetRecordCount())
{
szTdCN.Empty();
szTdCN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdCN")).bstrVal;
szDESN.Empty();
szDESN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("DESN")).bstrVal;
szSql.Empty();
szSql.Format(_T("update dev_syn_td set IsSyned = false where TdCN = '%s' and DESN = '%s'"), szTdCN, szDESN);
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
}
pRecTd->Close();
szSql.Empty();
szSql.Format(_T("delete from td3dcon where TCHID in (select ID from tdchannel where TDID = %u)"), dwID);
pCmdDelIpspTd->CommandText = szSql.AllocSysString();
pCmdDelIpspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from tdchannel where TDID = %u"), dwID);
pCmdDelIpspTd->CommandText = szSql.AllocSysString();
pCmdDelIpspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from gr where TDID = %u"), dwID);
pCmdDelIpspTd->CommandText = szSql.AllocSysString();
pCmdDelIpspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from td where ID = %u"), dwID);
pCmdDelIpspTd->CommandText = szSql.AllocSysString();
pCmdDelIpspTd->Execute(NULL, NULL, adCmdText);
}
void CTdManager::DeleteRsp3DTd(DWORD dwID)
{
_RecordsetPtr pRecTd = NULL;
_CommandPtr pCmdDelRspTd = NULL;
_CommandPtr pCmdUpd = NULL;
CString szSql = _T("");
CString szTdCN = _T("");
CString szDESN = _T("");
pRecTd.CreateInstance(_uuidof(Recordset));
pCmdDelRspTd.CreateInstance(_uuidof(Command));
pCmdDelRspTd->ActiveConnection = m_pConnection;
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("select TdCN,DESN from td where ID = %u"), dwID);
pRecTd->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTd->GetRecordCount())
{
szTdCN.Empty();
szTdCN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdCN")).bstrVal;
szDESN.Empty();
szDESN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("DESN")).bstrVal;
szSql.Empty();
szSql.Format(_T("update dev_syn_td set IsSyned = false where TdCN = '%s' and DESN = '%s'"), szTdCN, szDESN);
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
}
pRecTd->Close();
szSql.Empty();
szSql.Format(_T("delete from td3dcon where TCHID in (select ID from tdchannel where TDID = %u)"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from tdchannel where TDID = %u"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from gr where TDID = %u"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from td where ID = %u"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
}
void CTdManager::DeleteSP2DTd(DWORD dwID)
{
_RecordsetPtr pRecTd = NULL;
_CommandPtr pCmdDelRspTd = NULL;
_CommandPtr pCmdUpd = NULL;
CString szSql = _T("");
CString szTdCN = _T("");
CString szDESN = _T("");
pRecTd.CreateInstance(_uuidof(Recordset));
pCmdDelRspTd.CreateInstance(_uuidof(Command));
pCmdDelRspTd->ActiveConnection = m_pConnection;
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("select TdCN,DESN from td where ID = %u"), dwID);
pRecTd->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTd->GetRecordCount())
{
szTdCN.Empty();
szTdCN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdCN")).bstrVal;
szDESN.Empty();
szDESN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("DESN")).bstrVal;
szSql.Empty();
szSql.Format(_T("update dev_syn_td set IsSyned = false where TdCN = '%s' and DESN = '%s'"), szTdCN, szDESN);
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
}
pRecTd->Close();
szSql.Empty();
szSql.Format(_T("delete from td2dcon where TCHID in (select ID from tdchannel where TDID = %u)"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from tdchannel where TDID = %u"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from gr where TDID = %u"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from td where ID = %u"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
}
void CTdManager::DeleteSP3DTd(DWORD dwID)
{
_RecordsetPtr pRecTd = NULL;
_CommandPtr pCmdDelRspTd = NULL;
_CommandPtr pCmdUpd = NULL;
CString szSql = _T("");
CString szTdCN = _T("");
CString szDESN = _T("");
pRecTd.CreateInstance(_uuidof(Recordset));
pCmdDelRspTd.CreateInstance(_uuidof(Command));
pCmdDelRspTd->ActiveConnection = m_pConnection;
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("select TdCN,DESN from td where ID = %u"), dwID);
pRecTd->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTd->GetRecordCount())
{
szTdCN.Empty();
szTdCN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdCN")).bstrVal;
szDESN.Empty();
szDESN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("DESN")).bstrVal;
szSql.Empty();
szSql.Format(_T("update dev_syn_td set IsSyned = false where TdCN = '%s' and DESN = '%s'"), szTdCN, szDESN);
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
}
pRecTd->Close();
szSql.Empty();
szSql.Format(_T("delete from td3dcon where TCHID in (select ID from tdchannel where TDID = %u)"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from tdchannel where TDID = %u"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from gr where TDID = %u"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from td where ID = %u"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
}
void CTdManager::DeleteSPCETd(DWORD dwID)
{
_RecordsetPtr pRecTd = NULL;
_CommandPtr pCmdDelRspTd = NULL;
_CommandPtr pCmdUpd = NULL;
CString szSql = _T("");
CString szTdCN = _T("");
CString szDESN = _T("");
pRecTd.CreateInstance(_uuidof(Recordset));
pCmdDelRspTd.CreateInstance(_uuidof(Command));
pCmdDelRspTd->ActiveConnection = m_pConnection;
pCmdUpd.CreateInstance(_uuidof(Command));
pCmdUpd->ActiveConnection = m_pConnection;
szSql.Empty();
szSql.Format(_T("select TdCN,DESN from td where ID = %u"), dwID);
pRecTd->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTd->GetRecordCount())
{
szTdCN.Empty();
szTdCN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("TdCN")).bstrVal;
szDESN.Empty();
szDESN = (LPCTSTR)(_bstr_t)pRecTd->GetCollect(_T("DESN")).bstrVal;
szSql.Empty();
szSql.Format(_T("update dev_syn_td set IsSyned = false where TdCN = '%s' and DESN = '%s'"), szTdCN, szDESN);
pCmdUpd->CommandText = szSql.AllocSysString();
pCmdUpd->Execute(NULL, NULL, adCmdText);
}
pRecTd->Close();
szSql.Empty();
szSql.Format(_T("delete from td1dcon where TCHID in (select ID from tdchannel where TDID = %u)"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from tdchannel where TDID = %u"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
szSql.Empty();
szSql.Format(_T("delete from td where ID = %u"), dwID);
pCmdDelRspTd->CommandText = szSql.AllocSysString();
pCmdDelRspTd->Execute(NULL, NULL, adCmdText);
}
//返回TRUE代表在指定工程、测区下,该任务不存在,反之,存在
BOOL CTdManager::OnlineCheckTdExist(CString szTdID, CString szDevSN, DWORD *TdId)
{
_RecordsetPtr pRecTdID = NULL;
DWORD dwPrID;
DWORD dwTzID;
CString szSql = _T("");
pRecTdID.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select ID from td where TDCN = '%s' and DESN = '%s' "), szTdID, szDevSN);
pRecTdID->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTdID->GetRecordCount())
{
//该任务存在
*TdId = pRecTdID->GetCollect(_T("ID")).ulVal;
pRecTdID->Close();
return FALSE;
}
else
{
//该任务不存在
pRecTdID->Close();
return TRUE;
}
}
//返回TRUE代表在指定TCoordinatesInfo电极坐标信息不存在,反之,存在
BOOL CTdManager::OnlineCheckElecInfoExist(CString strTdID, CString szDevSN)
{
_RecordsetPtr pRecTdID = NULL;
DWORD dwPrID;
DWORD dwTzID;
CString szSql = _T("");
pRecTdID.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select * from TTaskBindElecInfo where TaskID='%s'"), strTdID);
pRecTdID->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTdID->GetRecordCount())
{
//该任务存在
pRecTdID->Close();
return FALSE;
}
else
{
//该任务不存在
pRecTdID->Close();
return TRUE;
}
}
//返回TRUE代表在指定工程、测区下,该任务不存在,反之,存在
BOOL CTdManager::CheckTdExist(CString szPrCN, CString szTzCN, CString szTdCN, CDevice *const pDev, DWORD *TdId)
{
_RecordsetPtr pRecPro = NULL;
_RecordsetPtr pRecTz = NULL;
_RecordsetPtr pRecTdID = NULL;
DWORD dwPrID;
DWORD dwTzID;
CString szSql = _T("");
pRecPro.CreateInstance(_uuidof(Recordset));
pRecTz.CreateInstance(_uuidof(Recordset));
pRecTdID.CreateInstance(_uuidof(Recordset));
szSql.Empty();
szSql.Format(_T("select ID from project where CN = '%s'"), szPrCN);
pRecPro->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecPro->GetRecordCount())
{
dwPrID = pRecPro->GetCollect(_T("ID")).ulVal;
pRecPro->Close();
}
else
{ //该工程不存在,故该任务也不存在
pRecPro->Close();
return TRUE;
}
szSql.Empty();
szSql.Format(_T("select ID from tz where CN = '%s' and PRID = %d"), szTzCN, dwPrID);
pRecTz->Open(szSql.AllocSysString(),_variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTz->GetRecordCount())
{
dwTzID = pRecTz->GetCollect(_T("ID")).ulVal;
pRecTz->Close();
}
else
{
//该测区不存在,故该任务也不存在
pRecTz->Close();
return TRUE;
}
szSql.Empty();
szSql.Format(_T("select ID from td where TdCN = '%s' and TZID = %d and DESN = '%s' "), szTdCN, dwTzID,pDev->m_szDevSN);
pRecTdID->Open(szSql.AllocSysString(), _variant_t((IDispatch*)m_pConnection, true), adOpenStatic, adLockOptimistic, adCmdText);
if ((long)VAL_ZERO != pRecTdID->GetRecordCount())
{
//该任务存在
*TdId = pRecTdID->GetCollect(_T("ID")).ulVal;
pRecTdID->Close();
return FALSE;
}
else
{
//该任务不存在
pRecTdID->Close();
return TRUE;
}
}
bool CTdManager::ImportTdSpecAttr(const CStringArray& strAttrArray, int iDataType, DWORD dwChID, int iTSN)
{
if (strAttrArray.GetSize()<4)
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("在ImportTdAttr中输入参数错误!"));
else
MessageBoxEx(NULL, _T("Input param error in ImportTdAttr!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return false;
}
_CommandPtr pCmdExec = NULL;
CString strSql = _T("");
CString strAttr = _T("");
CString strVal = _T("");
CString strText = _T("");
switch (iDataType)
{
case EN_IP_TEST_TYPE:
{
int iTWCnt = atoi(strAttrArray.GetAt(3));
if (strAttrArray.GetSize() != (4 + iTWCnt))
{
if (LANG_ZHCN == g_iUILanguage)
AfxMessageBox(_T("在ImportTdAttr中参数认证失败!"));
else
MessageBoxEx(NULL, _T("Param verified error in ImportTdAttr!"), STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
return false;
}
strAttr = _T("TCHID,TSN,THL,D,r,TWCNT");
strVal.Empty();
strVal.Format(_T("%u,%d,%d,%f,%f,%d"),dwChID, iTSN,atoi(strAttrArray.GetAt(0)),
atof(strAttrArray.GetAt(1)), atof(strAttrArray.GetAt(2)), iTWCnt);
for (int i = 0; i < iTWCnt; i++)
{
strText.Empty();
strText.Format(_T(",TW%dIndex"),i);
strAttr += strText;
strText.Empty();
strText.Format(_T(",'%s'"), strAttrArray.GetAt(4+i));
strVal += strText;
}
strSql.Empty();
strSql.Format(_T("insert into td_spc_attr (%s) values (%s)"),strAttr, strVal);
break;
}
default:
if (LANG_ZHCN == g_iUILanguage)
{
strText.Format(_T("在ImportTdAttr中不支持数据类型(%d)!"), iDataType);
AfxMessageBox(strText);
}
else
{
strText.Format(_T("Not support datatype(%d) in ImportTdAttr!"), iDataType);
MessageBoxEx(NULL, strText, STRING_MESSAGEBOXEX_TITLE, MB_OK, MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US));
}
return false;
}
try
{
pCmdExec.CreateInstance(_uuidof(Command));
pCmdExec->ActiveConnection = m_pConnection;
m_pConnection->BeginTrans();
pCmdExec->CommandText = strSql.AllocSysString();
pCmdExec->Execute(NULL, NULL, adCmdText);
}
catch (_com_error e)
{
hHook = SetWindowsHookEx(WH_CBT,(HOOKPROC)CBTHookProc,AfxGetInstanceHandle(),NULL);
AfxMessageBox((LPCTSTR)e.Description(), MB_ICONINFORMATION);
m_pConnection->RollbackTrans();
return false;
}
m_pConnection->CommitTrans();
return true;
}