コード例 #1
0
ファイル: RxADO.cpp プロジェクト: ice98/mycode_bak
bool RxADO::SetConnection(CString LinkString)
{
	::CoInitialize(NULL);
	cnn=NULL;
	cnn.CreateInstance(__uuidof(Connection));
	cnn->ConnectionString=(_bstr_t)LinkString;
	try{
		cnn->Open(L"",L"",L"",adCmdUnspecified);
	}
	catch(_com_error& e)
	{
		ErrorsPtr pErrors=cnn->GetErrors();
		if (pErrors->GetCount()==0)
		{	
			CString ErrMsg=e.ErrorMessage();
			MessageBox(NULL,"·¢Éú´íÎó:\n\n"+ErrMsg,"ϵͳÌáʾ",MB_OK|MB_ICONEXCLAMATION);	
			return false;
		}
		else
		{
			for (int i=0;i<pErrors->GetCount();i++)
			{
				_bstr_t desc=pErrors->GetItem((long)i)->GetDescription();
				MessageBox(NULL,"·¢Éú´íÎó:\n\n"+desc,"ϵͳÌáʾ",MB_OK|MB_ICONEXCLAMATION);
				return false;
			}
		}	
	}
	return true;
}
コード例 #2
0
UINT CSplash::ConnectData(LPVOID ps)
{
	AfxOleInit(); //初始化COM库
	if(FAILED(HospitalConnect.CreateInstance(__uuidof(Connection))))
	{
		((CSplash *)ps)->ConnectFlag=true;
		((CSplash *)ps)->timer_count=3; //连接COM失败标志
		((CSplash *)ps)->SendMessage(WM_CLOSE,0,0);
	
		return 0;
	}

	try{
		
		HospitalConnect->Open(_bstr_t(theApp.strConn),"","",adModeUnknown);
		((CSplash *)ps)->ConnectFlag=true;
		((CSplash *)ps)->timer_count=1; //连接成功标志
		((CSplash *)ps)->SendMessage(WM_CLOSE,0,0);
	
		return 1;
	}
	catch(_com_error e)
	{
		((CSplash *)ps)->ConnectFlag=true; //作为进度条线程停止标志
		((CSplash *)ps)->timer_count=2; //连接失败标志

		((CSplash *)ps)->SendMessage(WM_CLOSE,0,0);
	

		return 2;
	
	}


}
コード例 #3
0
DWORD CNHSQLServerDBO::OpenDB(_ConnectionPtr &pConnection,
                              const wchar_t *const pwchDataSource,
                              const wchar_t *const pwchInitialCatalog,
                              const wchar_t *const pwchUserID,
                              const wchar_t *const pwchPassword)
{
    assert(NULL != pwchDataSource);
    assert(NULL != pwchInitialCatalog);
    assert(NULL != pwchUserID);
    assert(NULL != pwchPassword);

    DWORD dwReturn(0x00);

    wchar_t wchSql[MAX_PATH];
    ZeroMemory(wchSql, sizeof(wchSql));

    // 加载COM组件
    CoInitialize(NULL);
    try
    {
        _snwprintf_s(wchSql, _countof(wchSql), _TRUNCATE, L"Provider=SQLOLEDB; Data Source=%s; Initial Catalog=%s; User ID=%s; Password=%s;",
                     pwchDataSource,
                     pwchInitialCatalog,
                     pwchUserID,
                     pwchPassword);

        pConnection.CreateInstance(L"ADODB.Connection");
        //pConnection->ConnectionTimeout = 5;
        //pConnection->CommandTimeout = 5;
        pConnection->Open((_bstr_t)wchSql, L"", L"", adModeUnknown);
    }
    catch (_com_error &e)
    {
//#ifdef _DEBUG
        const int nErrMsgLength(MAX_PATH);
        wchar_t *pwchErrMsg = new wchar_t[nErrMsgLength]();
        _snwprintf_s(pwchErrMsg, nErrMsgLength, _TRUNCATE, L"CNHSQLServerDBO::OpenDB发生错误(执行%s)。", wchSql);
        // 输出错误信息到输出窗口
        OutputDebugStringW(L"\t");
        OutputDebugStringW(pwchErrMsg);
        OutputDebugStringW(L"\n");
        // 输出错误信息到日志文件
        if (0 != wcscmp(m_wchLogFilePath, L""))
        {
            // 当日志文件路径不为空时,写日志
            CNHLogAPI::WriteLogEx(m_wchLogFilePath, LOG_ERR, L"NHSQLServerDBO", pwchErrMsg);
        }
        if (NULL != pwchErrMsg)
        {
            delete[] pwchErrMsg;
            pwchErrMsg = NULL;
        }
        OutputDBErrMsg(e);
//#endif
        dwReturn = 0x01;
    }

    return dwReturn;
}
コード例 #4
0
ファイル: CommDBOper.cpp プロジェクト: uesoft/AutoPHS
int CCommDBOper::ADOConExec(_ConnectionPtr &pCon,const CString strCmdSql,CString strDcrCmd,int iWarn)
{	
	//函数功能说明: 由pCon(Connection)对象执行指定SQL命令
	//pCon 数据库连接对象
	//strCmdSql  要执行SQL的命令语句
	//strDcrCmd是对要使用SQL命令的描述
	if (ADOConIsOpened(pCon,iWarn) != RET_OK)   //判断当前连接对象是否已打开
	{
		WarnMessage("指定数据库对象未连接,退出!",iWarn);
		return RET_FAILED;
	}
	try
	{
		pCon->Execute(_bstr_t(strCmdSql),NULL,adCmdText);
	}
	catch (_com_error &e)
	{
		CString strMsg;
		strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description());
		AfxMessageBox(strMsg);
		CString errormessage;
		errormessage.Format("功能说明: %s\r\n数据库连接对象执行下列SQL命令\r\n%s\r\n失败!  错误信息:%s",strDcrCmd,strCmdSql,e.ErrorMessage());
		WarnMessage(errormessage,iWarn);///显示错误信息
		return RET_FAILED;
	}
	return RET_OK;
}
コード例 #5
0
ファイル: RxADO.cpp プロジェクト: ice98/mycode_bak
/*
 µ±nStale=1ʱ ×Ö·û×ֶηµ»Ø×Ö·û×Ö¶Î
 µ±nStale=2ʱ ÊýÖµ×ֶηµ»Ø×Ö·û×Ö¶Î
 µ±nStale=3ʱ ÈÕÆÚ×ֶηµ»Ø×Ö·û×Ö¶Î
*/
CString RxADO::FieldToOtherField(CString cDataBaseName, CString cFieldName, CString cValue, CString cReturnField, int nStale=1)
{
	CString sSQL,sRTValue;
	_RecordsetPtr Fieldrst;
	Fieldrst.CreateInstance(__uuidof(Recordset));
	Fieldrst.CreateInstance(__uuidof(Recordset));
	if(nStale==1)	//×Ö·û×ֶηµ»Ø×Ö·û×Ö¶Î
			sSQL.Format("SELECT * FROM %s WHERE %s='%s'",cDataBaseName,cFieldName,cValue);
	if(nStale==2)//ÊýÖµ×ֶηµ»Ø×Ö·û×Ö¶Î
			sSQL.Format("SELECT * FROM %s WHERE %s=%s",cDataBaseName,cFieldName,cValue);
	if(nStale==3)//ÈÕÆÚ×ֶηµ»Ø×Ö·û×Ö¶Î
			sSQL.Format("SELECT * FROM %s WHERE %s=#%s#",cDataBaseName,cFieldName,cValue);
	try{
		Fieldrst=cnn->Execute((_bstr_t)sSQL,NULL,adCmdText);
	}
	catch(_com_error&e)
	{
		GetADOErrors(e);
		return "";
	}
	if(GetRecordCount(Fieldrst)<=0)
		return "";
	_variant_t vValue=Fieldrst->GetCollect((_bstr_t)cReturnField);
	if(vValue.vt==VT_EMPTY)
		return "";
	sRTValue=(char*)(_bstr_t)vValue;
	sRTValue.TrimRight();
	sRTValue.TrimLeft();
	return sRTValue;
}
コード例 #6
0
ファイル: main-server.cpp プロジェクト: cice/ODBCSocketServer
///////////////////////////////////////////////////////
//
//	Name: GetADOError
//	Params: Conn1 - connection pointer
//	Returns: ADO error string
//	Description: determines ADO error(s) that occurred 
///////////////////////////////////////////////////////
std::string GetADOError(_ConnectionPtr Conn1)
{
	USES_CONVERSION;
   ErrorsPtr   Errs1 = NULL;
    ErrorPtr    Err1  = NULL;

	std::string sRet("ADO Error. Description: ");
    long        nCount;

   try
    {
	    if( Conn1 == NULL ) return sRet + (std::string)"NULL Connection";
  
		// Enumerate Errors Collection and display properties of each object.
        Errs1  = Conn1->GetErrors();
        nCount = Errs1->GetCount();

        // Loop through Errors Collection
        for( long i = 0; i < nCount; i++ )
        {
            // Get Error Item
            Err1 = Errs1->GetItem((_variant_t)((long)i) );
			sRet += (std::string)" Description: " + (std::string)OLE2T(Err1->GetDescription());
		}
	
		if( Errs1 != NULL )  Errs1->Release(); 
		if( Err1  != NULL )  Err1->Release();  
   }
   catch(...)
   {
	   sRet += " Unknown Error";
   }
	
   return sRet;
}
コード例 #7
0
ファイル: SpermView.cpp プロジェクト: niepp/sperm-x
CString GetConnectIP()
{
	CString  bstr = (char*)theConnection->GetConnectionString();
	int nl = bstr.Find("Data Source=") + strlen("Data Source=");
	int nr = bstr.Find(";", nl);
	return bstr.Mid(nl, nr-nl);
}
コード例 #8
0
ファイル: adoConnectSQL.cpp プロジェクト: mz247/C-C-
//断开连接
void ExitConnect(void)
{
	if(m_pRecordset!=NULL){
		m_pRecordset->Close();
		m_pConnection->Close();
	}
	::CoUninitialize();  //释放环境
}
コード例 #9
0
ファイル: ADOConn.cpp プロジェクト: owenyang0/ADOConn
// //封闭ADO类,方便以后使用
void ADOConn::OnInitADOConn(void)
{
::CoInitialize(NULL);
try
{
//创建connection对象
m_pConnection.CreateInstance("ADODB.Connection");
//设置连接字符串
_bstr_t strConnect="uid=;pwd=;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=Grades.mdb;";
//SERVER和UID,PWD的设置根据实际情况来设置"
/*m_pConnection->Open(strConnect,_T("admin"),_T("owenyang"),adModeUnknown);*/
m_pConnection->Open(strConnect,"admin","owenyang",adModeUnknown);
}
catch (_com_error e)
{
//显示错误信息
AfxMessageBox(e.Description());
}
}
コード例 #10
0
DWORD CNHSQLServerDBO::CloseDB(_ConnectionPtr &pConnection)
{
    //assert(NULL != pConnection);

    DWORD dwReturn(0x00);

    try
    {
        //关闭连接
        if (NULL!=pConnection && adStateClosed!=pConnection->State)
        {
            pConnection->Close();
        }
        if (NULL != pConnection)
        {
            pConnection.Release();
            pConnection = NULL;
        }
    }
    catch (_com_error &e)
    {
//#ifdef _DEBUG
        // 输出错误信息到输出窗口
        OutputDebugStringW(L"\t");
        OutputDebugStringW(L"CNHSQLServerDBO::CloseDB发生错误。");
        OutputDebugStringW(L"\n");
        // 输出错误信息到日志文件
        if (0 != wcscmp(m_wchLogFilePath, L""))
        {
            // 当日志文件路径不为空时,写日志
            CNHLogAPI::WriteLogEx(m_wchLogFilePath, LOG_ERR, L"NHSQLServerDBO", L"CNHSQLServerDBO::CloseDB发生错误。");
        }
        OutputDBErrMsg(e);
//#endif
        dwReturn = 0x01;
    }

    // 卸载COM组件
    CoUninitialize();

    return dwReturn;
}
コード例 #11
0
ファイル: ADOConn.cpp プロジェクト: owenyang0/ADOConn
void ADOConn::ExitConnect(void)
{
//关闭记录集和连接
if (m_pRecordset!=NULL)
{
m_pRecordset->Close();
 
}
m_pConnection->Close();
::CoUninitialize();
}
コード例 #12
0
ファイル: adoConnectSQL.cpp プロジェクト: mz247/C-C-
//连接SQL
void Connect()
  {
	  try{
		  ::CoInitialize(NULL);  //初始化COM环境
		  m_pConnection.CreateInstance(__uuidof(Connection));  //创建连接对象
		  //通过DSN数据源对任何支持ODBC的数据库进行连接
		  //m_pConnection->ConnectionString="Provider=SQLOLEDB.1; Persist Security Info=True; User ID=sa; Password=a1!; Initial Catalog=InTouch; Data Source=WIN-P6OLLUM9PDM"; //请将数据库相应ID与Password更改
          //不通过DSN对SQL SERVER数据库进行连接
		  m_pConnection->ConnectionString="driver={SQL Server};Server=127.0.0.1;DATABASE=InTouch;UID=sa;PWD=a1!";
		  //连接服务器和数据库
          HRESULT hr=m_pConnection->Open("", "", "", 0);
		  if(hr!=S_OK)
			    cout<<"Can not connect to the specified database!"<<endl;

	  }
	  catch(_com_error e){

		  cout<<e.Description()<<endl;
	  }
          
}
コード例 #13
0
ファイル: RxADO.cpp プロジェクト: ice98/mycode_bak
void RxADO::GetADOErrors(_com_error eErrors)
{
	ErrorsPtr pErrors=cnn->GetErrors();
	if (pErrors->GetCount()==0)	
		MessageBox(NULL,eErrors.ErrorMessage(),"´í  Îó",MB_OK|MB_ICONEXCLAMATION);	
	else
	{
		for (int i=0;i<pErrors->GetCount();i++)
		{
			_bstr_t desc=pErrors->GetItem((long)i)->GetDescription();
			MessageBox(NULL,desc,"´í  Îó",MB_OK|MB_ICONEXCLAMATION);
		}
	}
}
コード例 #14
0
ファイル: CommDBOper.cpp プロジェクト: uesoft/AutoPHS
//断开指定数据库连接对象连接
int CCommDBOper::ADOCloseConnectDB(_ConnectionPtr &pCon,int iWarn)
{
	if ((pCon != NULL) && (pCon->State == adStateOpen) )
	{
		try
		{
			pCon->Close();
		}
		catch (_com_error &e)
		{
			CString strMsg;
			strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description());
			AfxMessageBox(strMsg);
		}
	}
	return RET_OK;
}
コード例 #15
0
ファイル: adoConnectSQL.cpp プロジェクト: mz247/C-C-
_RecordsetPtr& GetRecordset(_bstr_t SQL)
{
	m_pRecordset=NULL;
	try{
		if(m_pConnection==NULL)
			//连接
			Connect();
		m_pRecordset.CreateInstance(__uuidof(Recordset));
		m_pRecordset->Open((_bstr_t)SQL, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
	}
	catch(_com_error e){
		cout<<e.Description()<<endl;
        m_pRecordset=NULL;
        return m_pRecordset;
	}
	return m_pRecordset;
}
コード例 #16
0
DWORD CNHSQLServerDBO::ExecuteDML(const _ConnectionPtr &pConnection, const wchar_t *const pwchSQL, int *const pnRowsInvolved/*=NULL*/)
{
    assert(NULL != pConnection);
    assert(NULL != pwchSQL);

    DWORD dwReturn(0x00);

    try
    {
        _variant_t vRA;
        pConnection->Execute((_bstr_t)pwchSQL, &vRA, adCmdText);
        if (NULL != pnRowsInvolved)
        {
            *pnRowsInvolved = static_cast<int>(vRA);
        }
    }
    catch (_com_error &e)
    {
//#ifdef _DEBUG
        const int nErrMsgLength(MAX_PATH);
        wchar_t *pwchErrMsg = new wchar_t[nErrMsgLength]();
        _snwprintf_s(pwchErrMsg, nErrMsgLength, _TRUNCATE, L"CNHSQLServerDBO::ExecuteDML发生错误(执行%s)。", pwchSQL);
        // 输出错误信息到输出窗口
        OutputDebugStringW(L"\t");
        OutputDebugStringW(pwchErrMsg);
        OutputDebugStringW(L"\n");
        // 输出错误信息到日志文件
        if (0 != wcscmp(m_wchLogFilePath, L""))
        {
            // 当日志文件路径不为空时,写日志
            CNHLogAPI::WriteLogEx(m_wchLogFilePath, LOG_ERR, L"NHSQLServerDBO", pwchErrMsg);
        }
        if (NULL != pwchErrMsg)
        {
            delete[] pwchErrMsg;
            pwchErrMsg = NULL;
        }
        OutputDBErrMsg(e);
//#endif
        dwReturn = 0x01;
    }

    return dwReturn;
}
コード例 #17
0
void CDlgHistory::OnBnClickedButtonSearch()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
	GetDlgItem(IDC_BUTTON_SEARCH)->EnableWindow(FALSE);
	CString AntID,SensorID,StrStartTime,StrStopTime;
	m_CtlChart.GetToolBar(0).DoButtonClickResume();
	m_CtlChart.GetYAxis(0).SetSpan(100);
	m_CtlChart.GetYAxis(0).SetMin(0);
	m_CtlChart.GetXAxis(0).SetMin(72686);
	m_CtlChart.GetXAxis(0).SetSpan(0.00694444444444444);
	m_CtlChart.GetChannel(0).Clear();

	AntID.Format("%d",nIndexAnt+1);
	AntID="天线"+AntID;
	SensorID.Format("%d",nIndexSensor+1);
	SensorID="传感器"+SensorID;
	StrStartTime.Format("%f",m_DataBegin);
	StrStopTime.Format("%f",m_DataEnding);

	_bstr_t bstrSQLdata ="SELECT Temperature,RecordTime FROM DB_Data where ReaderID='"+strReader+"' and AntID='"+AntID+"' and SensorID='"+SensorID+"' and RecordTime<"+StrStopTime+" and RecordTime>"+StrStartTime+" and (Notes='正常') order by DataID;";
	_RecordsetPtr m_pRecordsetch;
	m_pRecordsetch.CreateInstance(__uuidof(Recordset));
	m_pRecordsetch->Open(bstrSQLdata,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
	if (!m_pRecordsetch->adoEOF)
	{
		while(!m_pRecordsetch->adoEOF)
		{
			CString temper=(LPCSTR)(_bstr_t)m_pRecordsetch->GetCollect("Temperature");
			CString time=(LPCSTR)(_bstr_t)m_pRecordsetch->GetCollect("RecordTime");
			temper.ReleaseBuffer();
			m_CtlChart.GetChannel(0).AddXY(atof(time), atof(temper) / 10);
			m_pRecordsetch->MoveNext();
		}
		GetDlgItem(IDC_BUTTON_SEARCH)->EnableWindow(TRUE);
		m_CtlChart.GetYAxis(0).ZoomToFitFast();
	} 
	else
	{
		GetDlgItem(IDC_BUTTON_SEARCH)->EnableWindow(TRUE);
		AfxMessageBox("查询不到数据!");
	}
	m_pRecordsetch->Close();
}
コード例 #18
0
ファイル: newproject.cpp プロジェクト: uesoft/AutoIPED
BOOL newproject::tableExists(_ConnectionPtr pCon, CString tbn)
{
    if(pCon==NULL || tbn=="")
        return false;
    _RecordsetPtr rs;
    if(tbn.Left(1)!="[")
        tbn="["+tbn;
    if(tbn.Right(1)!="]")
        tbn+="]";
    try {
        rs=pCon->Execute(_bstr_t(tbn),NULL,adCmdTable);
        rs->Close();
        return true;
    }
    catch(_com_error e)
    {
        return false;
    }

}
コード例 #19
0
ファイル: ADOConn.cpp プロジェクト: owenyang0/ADOConn
// 打开记录集
_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
//TODO: insert return statement here
try
{
if (m_pConnection==NULL)
{
OnInitADOConn();
}
//创建记录对象
m_pRecordset.CreateInstance(__uuidof(Recordset));
//取得表中记录
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,
adLockOptimistic,adCmdText);
}
catch (_com_error e)
{
e.Description();
}
return m_pRecordset;
}
コード例 #20
0
ファイル: MorphaResDlg.cpp プロジェクト: niepp/sperm-x
void CMorphaResDlg::GetRecordSet(_RecordsetPtr &rs, int row1, int row2)
{
	ASSERT(row1>=0&&row2>=0&&row1<=row2);
	CString strSQL;
	CString tablename;
	if(((CMorphaDataRetriveDlg*)(GetParent()->GetParent()->GetParent()))->IsInqueryState())
		tablename = "morphaforinquery";
	else
		tablename = "morphafordisplay";
	if(row1 == 0 )
	{
		strSQL.Format("select  * from (select top %d * from %s) a "
			,row2,tablename);
	}
	else
	{
		strSQL.Format("select  * from (select top %d * from %s) a \
			where pdetectno not in(select top %d pdetectno from %s)"
			,row2,tablename,row1,tablename);
	}
	if(rs == NULL)
		rs.CreateInstance("adodb.recordset");
	rs = theConnection->Execute((LPCSTR)strSQL,NULL,adCmdText);
}
コード例 #21
0
ファイル: RxADO.cpp プロジェクト: ice98/mycode_bak
void RxADO::Close()
{
	cnn->Close();
}
コード例 #22
0
ファイル: ImportAutoPD.cpp プロジェクト: uesoft/AutoIPED
//------------------------------------------------------------------
// DATE         :[2005/09/30]
// Parameter(s) :
// Return       :
// Remark       :将EXCEL文件导出到ACCESS数据库表中
//------------------------------------------------------------------
BOOL CImportAutoPD::ImportExcelToAccess(CString strExcelFileName, CString strWorksheetName, _ConnectionPtr pConDes, CString strTblName,CString strCurProID,CString KeyFieldName,CString ProFieldName)
{
	CString		strSQL;					//SQL语句
	_ConnectionPtr pConExcel;			//连接EXCEL文件
	_RecordsetPtr  pRsExcel;
	_RecordsetPtr  pRsAccess;
	_RecordsetPtr  pRsTmp;
	pConExcel.CreateInstance(__uuidof(Connection));
	pRsExcel.CreateInstance(__uuidof(Recordset));
	pRsAccess.CreateInstance(__uuidof(Recordset));
	pRsTmp.CreateInstance(__uuidof(Recordset));
	STRUCT_ENG_ID listID[10];		//不同工程的最大序号和工程名称
	int	 nProCount=0;		//不同工程的个数
	CString strTemp;
	int Rj=0;				//工程号在Excel中的列
	int ProjNum=1;
	int ProjIndex=0;
	int	ID;

	if (NULL == pConDes)
	{
		return FALSE;
	}
	try
	{
		EDIBgbl::CAPTION2FIELD* pFieldStruct=NULL;
		_variant_t varTmp;
		//获得EXCEL中的字段名和ACCESS中的字段的对应值,返回字段个数
		int nFieldCount = GetField2Caption(pFieldStruct);
		if (nFieldCount <= 0)
		{
			return FALSE;
		}
		
		strSQL = CONNECTSTRING_EXCEL + strExcelFileName;//连接EXCEL文件
		pConExcel->Open(_bstr_t(strSQL), "", "", -1);

		//打开Excel工作表,加一个符号$如果出错再重试不加$再打开一次.
		strSQL = "SELECT * FROM ["+strWorksheetName+"$]";
		try
		{
			pRsExcel->Open(_variant_t(strSQL), pConExcel.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText);
		}
		catch (_com_error)
		{
			strSQL = "SELECT * FROM ["+strWorksheetName+"]";
			pRsExcel->Open(_variant_t(strSQL), pConExcel.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText);
		}

		if (pRsExcel->adoEOF && pRsExcel->BOF)
		{
			AfxMessageBox("文件中没有记录!");
			return FALSE;
		}
		//打开Access表
		strSQL = "SELECT * FROM ["+strTblName+"] WHERE "+ProFieldName+"='"+strCurProID+"' ORDER BY "+KeyFieldName+" ";
		
		pRsAccess->Open(_variant_t(strSQL), pConDes.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText);
		
		if (pRsAccess->adoEOF && pRsAccess->BOF)
		{
			ID=0;
		}
		else
		{
			pRsAccess->MoveLast();
			ID = vtoi(pRsAccess->GetCollect(_variant_t(KeyFieldName)));
		}
		ID++;
		listID[0].ID = ID;		//当前工程最大的序号
		listID[0].EnginID = strCurProID;

		for(;Rj < nFieldCount;Rj++)
		{
			if( !ProFieldName.CompareNoCase(pFieldStruct[Rj].strField) )
			{
				break;
			}
		}
		_RecordsetPtr pRsTmp;
		pRsTmp.CreateInstance(__uuidof(Recordset));

		CString strGroup;		//作为关键字的所有字段组合
		//strGroup = "[管道外径/规格], [管道壁厚], [管内压力], [介质温度], [管道材质]";

/*		strGroup = "[卷册号],[色环],[管道/设备名称],[管道外径/规格],[管道壁厚],[介质温度],[安装地点],[管道材质],[备注],\
					[内保温层材料名称],[外保温层材料名称],[保护层材料名称],[风速],[热价比主汽价],[年运行小时数],\
					[油管道保温厚],[管内压力],[管内介质],[工程代号]";
		
		strSQL = "SELECT "+strGroup+" FROM ["+strTblName+"] WHERE "+ProFieldName+"="+strCurProID+" ";
		pRsTmp->Open(_variant_t(strSQL), pConDes.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText);
		if (pRsTmp->adoEOF && pRsTmp->BOF)
		{
			variant_t var = pRsTmp->GetCollect(_variant_t("enginid"));
		}
*/		//复制数据到ACCESS数据库中。 
		while (!pRsExcel->adoEOF)
		{
			pRsAccess->AddNew();
			for (int i=0; i < nFieldCount; i++)
			{
				try
				{
					if (pFieldStruct[i].strCaption.IsEmpty())
					{
						continue;
					}
					varTmp = pRsExcel->GetCollect(_variant_t(pFieldStruct[i].strCaption));
				}catch (_com_error& e) 
				{
					if (e.Error() == -2146825023)
					{
						strTemp = "原始数据表中没有字段 '"+pFieldStruct[i].strCaption+"' 。";
						AfxMessageBox(strTemp);
						pFieldStruct[i].strCaption.Empty();
						continue;
					}
					AfxMessageBox(e.Description());
					return FALSE;
				}
				
				if (Rj < nFieldCount && i == Rj)	//工程名称的字段
				{
					strTemp = vtos(varTmp);
					for(int c=0; c<ProjNum; c++)
					{
						if( !strTemp.CompareNoCase(listID[c].EnginID) || (c==0 && strTemp.IsEmpty()))
						{
							ProjIndex = c;
							break;
						}
					}
					if( c == ProjNum )		//不同的工程找出最大的序号.
					{
						listID[c].EnginID = strTemp;
						strSQL = "SELECT * FROM ["+strTblName+"] \
							WHERE "+ProFieldName+"='"+listID[c].EnginID+"' ORDER BY "+KeyFieldName+" ";
						if(pRsTmp->State == adStateOpen)
							pRsTmp->Close();
						pRsTmp->Open(_variant_t(strSQL), pConDes.GetInterfacePtr(), adOpenStatic, adLockOptimistic, adCmdText);
						if( pRsTmp->adoEOF && pRsTmp->BOF )
						{
							ID = 0;
						}
						else
						{
							pRsTmp->MoveLast();
							varTmp = pRsTmp->GetCollect(_variant_t(KeyFieldName));
							ID = vtoi(varTmp);
						}
						//最大的序号,将记录加到末尾.
						listID[c].ID = ++ID;
						ProjIndex = c;
						ProjNum++; 
					}
				}
				
				pRsAccess->PutCollect(_variant_t(pFieldStruct[i].strField),varTmp);
			}
			//设置关键值和工程ID
			pRsAccess->PutCollect(_variant_t(KeyFieldName), _variant_t((long)listID[ProjIndex].ID++));
			pRsAccess->PutCollect(_variant_t(ProFieldName),_variant_t(listID[ProjIndex].EnginID));
			pRsAccess->PutCollect(_variant_t("c_bImport"),_variant_t((short)1));	//导入标志
			pRsAccess->PutCollect(_variant_t("c_CalInThi"),_variant_t((short)1));	//是否自动计算内保温的厚度 1:不计算
			pRsAccess->PutCollect(_variant_t("c_CalPreThi"),_variant_t((short)1));	//是否自动计算外保温的厚度


			pRsAccess->Update();
			pRsExcel->MoveNext();
		}
コード例 #23
0
void CDlgHistory::OnBnClickedButtonExport()
{
	// TODO: 在此添加控件通知处理程序代码
	UpdateData(TRUE);
	GetDlgItem(IDC_BUTTON_EXPORT)->EnableWindow(FALSE);
	COleVariant covTrue((short)TRUE),covFalse((short)FALSE),covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR); 
	book.PrintPreview(_variant_t(false));
	CFileDialog FileDialog(FALSE,"xlsx",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT, _T("Microsoft Excel 2007(*.xlsx)|*.xlsx|所有文件(*.*)"),this); 
	if(FileDialog.DoModal()!=IDOK) 
	{
		GetDlgItem(IDC_BUTTON_EXPORT)->EnableWindow(TRUE);
		return; 
	}
	CString cStrFile=FileDialog.GetPathName();  //选择保存路径名称
	if(::PathFileExists(cStrFile)) 
		DeleteFile(cStrFile); 
	CString AntID,SensorID,StrStartTime,StrStopTime,tmpData,passWord,StartTime,StopTime,message,strRecordTime,rowCount,strRow,strLimit;
	StrStartTime.Format("%f",m_DataBegin);
	StrStopTime.Format("%f",m_DataEnding);
	CTime m_Startdate;
	m_CtlDateTimeStartTime.GetTime(m_Startdate);
	StartTime.Format("%d%02d%02d",m_Startdate.GetYear(), m_Startdate.GetMonth(),m_Startdate.GetDay());
	_RecordsetPtr m_pRecordsetch;
	m_pRecordsetch.CreateInstance(__uuidof(Recordset));
	books = app.get_Workbooks();
	book = books.Add(covOptional);
	sheets = book.get_Worksheets();
	sheets.Add(vtMissing,vtMissing,vtMissing,vtMissing);
	int nCount;
	char cCell;
	for(int i=1;i<5;i++)
	{
		tmpData.Format("%d",i);
		AntID = "天线"+tmpData; 
		sheet = sheets.get_Item(COleVariant((short)i)); //得到第一个工作表
		sheet.put_Name(AntID);
		for(int j=1;j<13;j++)
		{
			nCount = 3;
			tmpData.Format("%d",j);
			SensorID = "传感器"+tmpData;
			cCell = 'A' + 2*(j-1);
			rowCount.Format(_T("%c"),cCell);
			rowCount+="1";
			range = sheet.get_Range(COleVariant(rowCount),COleVariant(rowCount)); 
			range.put_Value2(COleVariant(SensorID));
			rowCount.Format(_T("%c"),cCell);
			rowCount+="2";
			range = sheet.get_Range(COleVariant(rowCount),COleVariant(rowCount)); 
			range.put_Value2(COleVariant("时间"));
			rowCount.Format(_T("%c"),cCell+1);
			rowCount+="2";
			range = sheet.get_Range(COleVariant(rowCount),COleVariant(rowCount)); 
			range.put_Value2(COleVariant("温度"));
			_bstr_t bstrSQLdata ="SELECT Temperature,RecordTime FROM DB_Data where ReaderID='"+strReader+"' and AntID='"+AntID+"' and SensorID='"+SensorID+"' and RecordTime<"+StrStopTime+" and RecordTime>"+StrStartTime+" and (Notes='正常' or Notes='超限') order by DataID;";
			m_pRecordsetch->Open(bstrSQLdata,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
			while(!m_pRecordsetch->adoEOF)
			{
				CString temper=(LPCSTR)(_bstr_t)m_pRecordsetch->GetCollect("Temperature");
				CString time=(LPCSTR)(_bstr_t)m_pRecordsetch->GetCollect("RecordTime");
				COleDateTime t=atof(time);
				strRecordTime=t.Format("%Y-%m-%d %H:%M:%S");
				rowCount.Format(_T("%c"),cCell);
				strRow.Format(_T("%d"),nCount);
				rowCount+=strRow;
				range = sheet.get_Range(COleVariant(rowCount),COleVariant(rowCount));
				range.put_NumberFormat(COleVariant("hh:mm:ss"));
				range.put_Value2(COleVariant(strRecordTime));  //设置时间
				rowCount.Format(_T("%c"),cCell+1);
				rowCount+=strRow;
				range = sheet.get_Range(COleVariant(rowCount),COleVariant(rowCount));  
				range.put_Value2(COleVariant(temper));  //设置温度
				time.ReleaseBuffer();
				temper.ReleaseBuffer();
				m_pRecordsetch->MoveNext();
				nCount++;
			}
			m_pRecordsetch->Close();
		}
		range = sheet.get_Range(COleVariant("A3"),COleVariant("A3"));
		COleVariant vResult =range.get_Value2();
		if(vResult.vt==VT_EMPTY)
		{
			passWord="******";
		}
		else
		{
			SYSTEMTIME st;
			VariantTimeToSystemTime(vResult.date, &st);
			passWord.Format("%d%02d%02d",st.wYear,st.wMonth,st.wDay);
			passWord+="hshiot";
		}
		sheet.Protect(_variant_t(passWord),vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);
	}
	book.SaveCopyAs(COleVariant(cStrFile)); //保存到cStrFile文件
	book.put_Saved(true);
	books.Close();
	book.ReleaseDispatch();
	books.ReleaseDispatch(); 
	app.ReleaseDispatch();
	app.Quit();
	message = "已导出数据,文件位置 :"+cStrFile;
	AfxMessageBox(message);
	GetDlgItem(IDC_BUTTON_EXPORT)->EnableWindow(TRUE);
} 
コード例 #24
0
ファイル: CommDBOper.cpp プロジェクト: uesoft/AutoPHS
int CCommDBOper::ADOOpenDBCon(_ConnectionPtr &pCon,const CString strDB,CString &strPassword,int iWarn)
{
	//函数功能   打开指定数据库
	//输入参数说明   pCon 要打开的数据库对象,strDB 要连接的ACCESS数据库文件全路径
	//	strPassword  密码 iWarn 出错警告方式  0,不警告,1,警告,2,警告且退出程序
	//作者  LFX
	CString strCon;
	_TCHAR dbConnectionString[]=_T("Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=%s;Jet OLEDB:Database Password=%s");
	strCon.Format(dbConnectionString,strDB,strPassword);
	if(!PathFileExists(_T(strDB)))
	{
		WarnMessage("要打开的数据库文件名不存在!!!",iWarn);
		return RET_FAILED;
	}

	if (pCon == NULL)
	{
		pCon.CreateInstance(__uuidof(Connection) );
	}
	else
	{
		ADOCloseConnectDB(pCon,0);
	}
	int iLoop = 0;
	while (true)
	{
		//连接ACCESS数据库
		iLoop++;
		//如果没密码,且为第一次循环
		if ( strPassword.IsEmpty() && (iLoop <= 1))   
		{
			try
			{
				pCon->Open(_bstr_t(strCon),"","",-1);         
			}
			catch(_com_error &e)
			{
				CString strTemp;
				CInputBox inputBox;
				inputBox.m_bIsProtected = TRUE;
				strTemp.LoadString(IDS_NEEDPASSWORD);
				inputBox.m_strWndText.Format("%s%s",strDB,strTemp);
				inputBox.m_strTitle.LoadString(IDS_PLEASEINPUTDBPASSWORD);
				if (inputBox.DoModal() != IDOK)
				{
					WarnMessage("密码错误,打开数据库失败!!!",iWarn);	
					return RET_FAILED;
				}
				else
				{
					strPassword = inputBox.m_strValue;
				}
			}
			break;
		}
		//如果有密码
		try
		{
			pCon->Open(_bstr_t(strCon),"","",-1); 
		}
		catch (_com_error &e)
		{
			CString strMsg;
			strMsg.Format("%s:%d %s", __FILE__, __LINE__, (LPSTR)e.Description());
			AfxMessageBox(strMsg);
			CString errormessage;
			errormessage.Format("打开数据库 %s 失败!\r\n错误信息:%s",strDB,e.ErrorMessage());
			WarnMessage(errormessage,iWarn);
			return RET_FAILED;			
		}
		break;
		
	} //END while(true)

	return RET_OK;
}
コード例 #25
0
DWORD CNHSQLServerDBO::OpenDB(_ConnectionPtr &pConnection)
{
    DWORD dwReturn(0x00);

    // 读配置文件,获取数据库连接信息
    // 获取exe(dll)文件绝对路径
    wchar_t wchPath[MAX_PATH];
    ZeroMemory(wchPath, sizeof(wchPath));
    if (0x00 != CNHCommonAPI::GetHLDFilePath(L"Config", L"DataBase.ini", wchPath))
    {
        return 0x01;
    }

    // 获取数据库连接信息
    wchar_t wchSource[MAX_PATH];
    ZeroMemory(wchSource, sizeof(wchSource));
    wchar_t wchCatalog[MAX_PATH];
    ZeroMemory(wchCatalog, sizeof(wchCatalog));
    wchar_t wchUserID[MAX_PATH];
    ZeroMemory(wchUserID, sizeof(wchUserID));
    wchar_t wchPassword[MAX_PATH];
    ZeroMemory(wchPassword, sizeof(wchPassword));
    GetPrivateProfileString(L"Database", L"DataSource", L"", wchSource, MAX_PATH, wchPath);
    GetPrivateProfileString(L"Database", L"InitialCatalog", L"", wchCatalog, MAX_PATH, wchPath);
    GetPrivateProfileString(L"Database", L"UserID", L"", wchUserID, MAX_PATH, wchPath);
    GetPrivateProfileString(L"Database", L"Password", L"", wchPassword, MAX_PATH, wchPath);

    wchar_t wchSql[MAX_PATH];
    ZeroMemory(wchSql, sizeof(wchSql));

    // 加载COM组件
    CoInitialize(NULL);
    try
    {
        _snwprintf_s(wchSql, _countof(wchSql), _TRUNCATE, L"Provider=SQLOLEDB; Data Source=%s; Initial Catalog=%s; User ID=%s; Password=%s;",
                     wchSource,
                     wchCatalog,
                     wchUserID,
                     wchPassword);

        pConnection.CreateInstance(L"ADODB.Connection");
        //pConnection->ConnectionTimeout = 5;
        //pConnection->CommandTimeout = 5;
        pConnection->Open((_bstr_t)wchSql, L"", L"", adModeUnknown);
    }
    catch (_com_error &e)
    {
//#ifdef _DEBUG
        const int nErrMsgLength(MAX_PATH);
        wchar_t *pwchErrMsg = new wchar_t[nErrMsgLength]();
        _snwprintf_s(pwchErrMsg, nErrMsgLength, _TRUNCATE, L"CNHSQLServerDBO::OpenDB发生错误(执行%s)。", wchSql);
        // 输出错误信息到输出窗口
        OutputDebugStringW(L"\t");
        OutputDebugStringW(pwchErrMsg);
        OutputDebugStringW(L"\n");
        // 输出错误信息到日志文件
        if (0 != wcscmp(m_wchLogFilePath, L""))
        {
            // 当日志文件路径不为空时,写日志
            CNHLogAPI::WriteLogEx(m_wchLogFilePath, LOG_ERR, L"NHSQLServerDBO", pwchErrMsg);
        }
        if (NULL != pwchErrMsg)
        {
            delete[] pwchErrMsg;
            pwchErrMsg = NULL;
        }
        OutputDBErrMsg(e);
//#endif
        dwReturn = 0x01;
    }

    return dwReturn;
}
コード例 #26
0
void CBacilusDetectDoc::SaveSlideData()
{
	CString sql;
    m_pRs->raw_Close();
	sql.Format(_T("select *from BacilusDetect.dbo.PatientPerInfo where SlideID = '%s'"),m_SlideBoxData.SlideInfo.strSlideID);
	m_pRs->Open((_variant_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
	
	if(m_pRs->adoEOF)//如果之前没有SlideID信息则
	{

	try
		{		
			m_pRs->raw_Close();
	        //病人个人信息表
			m_pRs->Open("SELECT * FROM BacilusDetect.dbo.PatientPerInfo",_variant_t((IDispatch*)m_pCon),adOpenStatic,adLockOptimistic,adCmdText); 
		    m_pRs->AddNew();//添加一条新记录
		   	m_pRs->Fields->GetItem(_variant_t("Name"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strName;
			m_pRs->Fields->GetItem(_variant_t("PatientID"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strPatientID;
			m_pRs->Fields->GetItem(_variant_t("Department"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strDepartment;
			m_pRs->Fields->GetItem(_variant_t("BedID"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strBedID;
			m_pRs->Fields->GetItem(_variant_t("Gender"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.nGender;
			m_pRs->Fields->GetItem(_variant_t("Year"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.nYear;
			m_pRs->Fields->GetItem(_variant_t("Occupation"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strOccupation;
			m_pRs->Fields->GetItem(_variant_t("Telephone"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strTelephone;
			m_pRs->Fields->GetItem(_variant_t("Address"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strAddress;
			m_pRs->Fields->GetItem(_variant_t("SlideID"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strSlideID;
			m_pRs->Update();
		 AfxMessageBox(_T("病人个人信息表保存成功!"));
		}
	   catch(...)
	   {
		AfxMessageBox(_T("病人个人信息表保存失败!"));
	   }
	   
	   try
		{		
			m_pRs->raw_Close();
	        //病人玻片信息表
			m_pRs->Open("SELECT * FROM BacilusDetect.dbo.PatientSlideInfo",_variant_t((IDispatch*)m_pCon),adOpenStatic,adLockOptimistic,adCmdText); 
		    m_pRs->AddNew();//添加一条新记录
		   	m_pRs->Fields->GetItem(_variant_t("SlideID"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strSlideID;
			m_pRs->Fields->GetItem(_variant_t("Type"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strType;
			
			_variant_t var;
			var.vt=VT_DATE;
			var.date=int(m_SlideBoxData.SlideInfo.dtDetectData); 
			m_pRs->Fields->GetItem(_variant_t("DetectData"))->Value=(_bstr_t)var;
			
			_variant_t vart;
			vart.vt=VT_DATE;
			vart.date=DATE(m_SlideBoxData.SlideInfo.dtDetectTime); 
			m_pRs->Fields->GetItem(_variant_t("DetectTime"))->Value=(_bstr_t)vart;
			m_pRs->Fields->GetItem(_variant_t("Quantity"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strQuantity;
			m_pRs->Fields->GetItem(_variant_t("StayTime"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strStayTime;
			m_pRs->Fields->GetItem(_variant_t("Method"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strMethod;
			m_pRs->Fields->GetItem(_variant_t("SendDoctor"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strSendDoctor;
			m_pRs->Fields->GetItem(_variant_t("Judge"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strJudge;
			m_pRs->Fields->GetItem(_variant_t("DetectResult"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strDetectResult;
			m_pRs->Fields->GetItem(_variant_t("BacilusDensity"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strBacilusDensity;
			m_pRs->Fields->GetItem(_variant_t("FOVCount"))->Value=(_bstr_t)m_SlideBoxData.nFOVCount;
			m_pRs->Fields->GetItem(_variant_t("bScan"))->Value=(_bstr_t)m_SlideBoxData.bScan;
			m_pRs->Fields->GetItem(_variant_t("bJudge"))->Value=(_bstr_t)m_SlideBoxData.bJudge;
			m_pRs->Fields->GetItem(_variant_t("TargetCount"))->Value=(_bstr_t)GetTargetCountInSlide();
			m_pRs->Fields->GetItem(_variant_t("JudgedTargetCount"))->Value=(_bstr_t)GetJudgedTargetCountInSlide();
			m_pRs->Update();
		 AfxMessageBox(_T("病人玻片信息表保存成功!"));
		}
	   catch(...)
	   {
		AfxMessageBox(_T("病人玻片信息表保存失败!"));
	   }


	   try
		{		
			m_pRs->raw_Close();
	        //病人报告信息表
			m_pRs->Open("SELECT * FROM BacilusDetect.dbo.PatientRepInfo",_variant_t((IDispatch*)m_pCon),adOpenStatic,adLockOptimistic,adCmdText); 
		    m_pRs->AddNew();//添加一条新记录
		   	m_pRs->Fields->GetItem(_variant_t("ReportDoctor"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strReportDoctor;

			_variant_t varr;
			varr.vt=VT_DATE;
			varr.date=int(m_SlideBoxData.SlideInfo.dtReportData); 
			m_pRs->Fields->GetItem(_variant_t("ReportData"))->Value=(_bstr_t)varr;

			m_pRs->Fields->GetItem(_variant_t("CompareJudge"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strCompareJudge;
			m_pRs->Fields->GetItem(_variant_t("CompareDetectResult"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strCompareDetectResult;
			m_pRs->Fields->GetItem(_variant_t("CompareBacilusDensity"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strCompareBacilusDensity;
			m_pRs->Fields->GetItem(_variant_t("SlideID"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strSlideID;
			_variant_t var;
			var.vt=VT_DATE;
			var.date=int(m_SlideBoxData.SlideInfo.dtDetectData); 
			m_pRs->Fields->GetItem(_variant_t("DetectData"))->Value=(_bstr_t)var;
			
			_variant_t vart;
			vart.vt=VT_DATE;
			vart.date=DATE(m_SlideBoxData.SlideInfo.dtDetectTime); 
			m_pRs->Fields->GetItem(_variant_t("DetectTime"))->Value=(_bstr_t)vart;

			//添加系统时间
			COleDateTime   oletimeVar=COleDateTime::GetCurrentTime();
			_variant_t   vars;   					
			vars.vt=VT_DATE;   
			vars.date=DATE(oletimeVar);   // 给oletimeVar赋值;   
			m_pRs->Fields->GetItem(_variant_t("ReportTime"))->Value=_bstr_t(vars);
			m_pRs->Update();
		 AfxMessageBox(_T("病人报告信息表保存成功!"));
		}
	   catch(...)
	   {
		AfxMessageBox(_T("病人报告信息表保存失败!"));
	   }
	   	
	 //图片信息表

	  //     LARGE_INTEGER       t0;
		 //  LARGE_INTEGER       t1;
		 //  LARGE_INTEGER       frequency;
		 //  QueryPerformanceFrequency(&frequency);
		 //  QueryPerformanceCounter(&t0);
	  //    for(int nFOVIndex=0;nFOVIndex<m_SlideBoxData[nWorkPositionIndex].nFOVCount;nFOVIndex++)
		 // { 
			//try
			//{
			///*	CString str;
			//	str.Format(_T("\\%d.JPG"), nFOVIndex);*/
			//	
			//	CFile f;
			//	CFileException e;
			//	CString str;
	
			//	str.Format(_T("\\%d.JPG"), nFOVIndex);
			//	f.Open((GetDirectory(nWorkPositionIndex)+str), CFile::modeRead | CFile::typeBinary, &e); //打开指定的图像文件
			//
			//	int nSize = f.GetLength();          //先得到 图像 文件长度
			//		
			//	BYTE* pBuffer = new BYTE [nSize];   //按文件的大小在堆上申请一块内存 pBuffer
			//	
			//	if (f.Read(pBuffer, nSize) > 0 )
			//	{
			//		//BYTE* pBuf = pBuffer;			//下面这一大段是把pBuffer里的图像数据放到库中
			//		//VARIANT	varBLOB;		
			//		//SAFEARRAY *psa;
			//		//SAFEARRAYBOUND rgsabound[1];
			//		//if(pBuf)
			//		//{    
			//		//	rgsabound[0].lLbound = 0;
			//		//	rgsabound[0].cElements = nSize;
			//		//							
			//		//	psa = SafeArrayCreate(VT_UI1, 1, rgsabound); // 创建 SAFEARRAY 对象 psa
			//		//	for (long i = 0; i < (long)nSize; i++)
			//		//	SafeArrayPutElement (psa, &i, pBuf++);	 // 将 bBuf 指向的二进制数据
			//		//												// 保存到 psa 中
			//		//	varBLOB.vt = VT_ARRAY | VT_UI1;	// 将 varBLOB 类型设为 BYTE 类型数组
			//		//	varBLOB.parray = psa;			// 保存 psa 到 varBLOB
			//		//}   
			//			CString strbyte;
			//			strbyte.Format(_T("%s"),pBuffer);

			//			_variant_t var;
			//			var.vt=VT_DATE;
			//			var.date=int(m_SlideBoxData[nWorkPositionIndex].SlideInfo.dtDetectData); 

			//			_variant_t vart;
			//			vart.vt=VT_DATE;
			//			vart.date=DATE(m_SlideBoxData[nWorkPositionIndex].SlideInfo.dtDetectTime);

	  // 					m_pRs->raw_Close();
			//			sql.Format(_T("insert into BacilusDetect.dbo.PictureInfo values('%s','%s','%s',%d,%d,%d,%d,%f,%f,%f,CAST('%s' as image))"),
			//						   m_SlideBoxData[nWorkPositionIndex].SlideInfo.strSlideID,(LPCTSTR)(_bstr_t)var,(LPCTSTR)(_bstr_t)vart,nFOVIndex,GetTargetCountInFOV(nWorkPositionIndex, nFOVIndex),
			//						   GetJudgedTargetCountInFOV(nWorkPositionIndex, nFOVIndex),GetFOVCheckedStatus(nWorkPositionIndex, nFOVIndex),
			//						   m_SlideBoxData[nWorkPositionIndex].TargetInFOV[nFOVIndex].FOVPosition.x,m_SlideBoxData[nWorkPositionIndex].TargetInFOV[nFOVIndex].FOVPosition.y,
			//						   m_SlideBoxData[nWorkPositionIndex].TargetInFOV[nFOVIndex].FOVPosition.z,strbyte);
			//			/*m_pRs->raw_Close();
			//			sql.Format(_T("insert into BacilusDetect.dbo.Text values(newid (),1,CAST('%s' as varbinary(max)))"),(GetDirectory(nWorkPositionIndex)+str));*/
			//			m_pRs->Open((_bstr_t)sql,m_pCon.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);
			//    }
			//}
			//catch(...)
			//{
			//	AfxMessageBox(_T("图片信息表保存失败!"));
			//}	
		 // }
		 //   QueryPerformanceCounter(&t1);
			//double  timespan = (double) (t1.QuadPart - t0.QuadPart) / frequency.QuadPart;
			//CString string;
			//string.Format(_T("%f"), timespan);
			//AfxMessageBox(string);


    LARGE_INTEGER       t0;
	LARGE_INTEGER       t1;
	LARGE_INTEGER       frequency;
	QueryPerformanceFrequency(&frequency);
	QueryPerformanceCounter(&t0);
	 m_pRs->raw_Close();	 
	 m_pRs->Open ("ChartInfo", _variant_t((IDispatch *) m_pCon, true), adOpenStatic, adLockOptimistic, adCmdTable);
	/* for(int nFOVIndex=0;nFOVIndex<m_SlideBoxData[nWorkPositionIndex].nFOVCount;nFOVIndex++)
	 {	*/     
		 //try
		 //    {	
			//  				
			//	CString str;	
			//	str.Format(_T("\\%d.JPG"), nFOVIndex);//GetDirectory(nWorkPositionIndex)+str			
			//
			//		    
			//		    
			//			//图片信息表				
			//			
			//			m_pRs->AddNew();//添加一条新记录               
			//			
		 //  				m_pRs->Fields->GetItem(_variant_t("SlideID"))->Value=(_bstr_t)m_SlideBoxData[nWorkPositionIndex].SlideInfo.strSlideID;
			//			
			//			_variant_t var;
			//			var.vt=VT_DATE;
			//			var.date=int(m_SlideBoxData[nWorkPositionIndex].SlideInfo.dtDetectData); 
			//			m_pRs->Fields->GetItem(_variant_t("DetectData"))->Value=(_bstr_t)var;
			//
			//			_variant_t vart;
			//			vart.vt=VT_DATE;
			//			vart.date=DATE(m_SlideBoxData[nWorkPositionIndex].SlideInfo.dtDetectTime); 
			//			m_pRs->Fields->GetItem(_variant_t("DetectTime"))->Value=(_bstr_t)vart;
			//			m_pRs->Fields->GetItem(_variant_t("PictureID"))->Value=(_bstr_t)nFOVIndex;
			//			m_pRs->Fields->GetItem(_variant_t("TargetCount"))->Value=(_bstr_t)GetTargetCountInFOV(nWorkPositionIndex, nFOVIndex);
			//			m_pRs->Fields->GetItem(_variant_t("JudgedTargetCount"))->Value=(_bstr_t)GetJudgedTargetCountInFOV(nWorkPositionIndex, nFOVIndex);
			//			m_pRs->Fields->GetItem(_variant_t("bChecked"))->Value=(_bstr_t)GetFOVCheckedStatus(nWorkPositionIndex, nFOVIndex);
			//			
			//			m_pRs->Fields->GetItem(_variant_t("FOVPositionX"))->Value=(_bstr_t)m_SlideBoxData[nWorkPositionIndex].TargetInFOV[nFOVIndex].FOVPosition.x;
			//	        m_pRs->Fields->GetItem(_variant_t("FOVPositionY"))->Value=(_bstr_t)m_SlideBoxData[nWorkPositionIndex].TargetInFOV[nFOVIndex].FOVPosition.y;
			//	        m_pRs->Fields->GetItem(_variant_t("FOVPositionZ"))->Value=(_bstr_t)m_SlideBoxData[nWorkPositionIndex].TargetInFOV[nFOVIndex].FOVPosition.z;
			//									
			//			m_pRs->Update(); 

			//			if(nFOVIndex==m_SlideBoxData[nWorkPositionIndex].nFOVCount-1)
			//			{
			//				AfxMessageBox(_T("图片信息表保存成功!"));
			//			}
			//			
			//			
			//	}		   

			//   catch(...)
			//   {
			//	 AfxMessageBox(_T("图片信息表保存失败!"));
			//   }

			SQLCHAR transactionToken[32];
    
			SQLHANDLE henv  = SQL_NULL_HANDLE;
			SQLHANDLE hdbc  = SQL_NULL_HANDLE;
			SQLHANDLE hstmt = SQL_NULL_HANDLE;

			LARGE_INTEGER  t3,t4, Frequency;
			double totaltime = 0;
			QueryPerformanceFrequency(&Frequency);
			QueryPerformanceCounter(&t3);
	
			try
			{
						//These statements Initialize ODBC for the client application and
						//connect to the database.

						if ( SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv) != SQL_SUCCESS )
							throw new ODBCErrors(__LINE__, SQL_HANDLE_ENV, henv);

						if ( SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3, NULL) != SQL_SUCCESS )
							throw new ODBCErrors(__LINE__, SQL_HANDLE_ENV, henv);

						if ( SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc) != SQL_SUCCESS )
							throw new ODBCErrors(__LINE__, SQL_HANDLE_ENV, henv);

						//This code assumes that the dataset name "Sql Server FILESTREAM"
						//has been previously created on the client computer system. An
						//ODBC DSN is created with the ODBC Data Source item in
						//the Windows Control Panel.

						if ( SQLConnect(hdbc, TEXT("BacilusDetect"),//这里是数据源
								SQL_NTS, NULL, 0, NULL, 0) <= 0 )
							throw new ODBCErrors(__LINE__, SQL_HANDLE_DBC, hdbc);

						//FILESTREAM requires that all read and write operations occur
						//within a transaction.
						if ( SQLSetConnectAttr(hdbc,
							SQL_ATTR_AUTOCOMMIT,
							(SQLPOINTER)SQL_AUTOCOMMIT_OFF,
							SQL_IS_UINTEGER) != SQL_SUCCESS )
							throw new ODBCErrors(__LINE__, SQL_HANDLE_DBC, hdbc);

						if ( SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt) != SQL_SUCCESS )
							throw new ODBCErrors(__LINE__, SQL_HANDLE_DBC, hdbc);

						SQLUSMALLINT mode = SQL_COMMIT;
						SQLINTEGER cbTransactionToken;
						TCHAR dstFilePath[1024];
						SQLINTEGER cbDstFilePath;
						wchar_t sqlDBQuery[1024];

						for ( int nFOVIndex=0;nFOVIndex<m_SlideBoxData.nFOVCount;nFOVIndex++)
						{
							_variant_t var;
							var.vt=VT_DATE;
							var.date=int(m_SlideBoxData.SlideInfo.dtDetectData); 
			
							_variant_t vart;
							vart.vt=VT_DATE;
							vart.date=DATE(m_SlideBoxData.SlideInfo.dtDetectTime); 

							CString str;	
			                str.Format(_T("\\%d.JPG"), nFOVIndex);//GetDirectory(nWorkPositionIndex)+str
							
							//swprintf_s(sqlDBQuery, 1024, L"INSERT INTO BacilusDetect.dbo.ChartInfo(SlideID,DetectData,DetectTime,PictureID,TargetCount,JudgedTargetCount,bChecked,FOVPositionX,FOVPositionY,FOVPositionZ,Id,Chart)\
							//			OUTPUT GET_FILESTREAM_TRANSACTION_CONTEXT(), inserted.Chart.PathName()\
							//			VALUES (%s,CONVERT(date, '%s'),CONVERT(datetime, '%s'),%d,%d,%d,%d,%f,%f,%f,newid(), CONVERT(VARBINARY, '**Temp**'))",m_SlideBoxData[nWorkPositionIndex].SlideInfo.strSlideID,
							//			m_SlideBoxData[nWorkPositionIndex].SlideInfo.dtDetectData,m_SlideBoxData[nWorkPositionIndex].SlideInfo.dtDetectTime,nFOVIndex,GetTargetCountInFOV(nWorkPositionIndex, nFOVIndex),
							//			GetJudgedTargetCountInFOV(nWorkPositionIndex, nFOVIndex),GetFOVCheckedStatus(nWorkPositionIndex, nFOVIndex),m_SlideBoxData[nWorkPositionIndex].TargetInFOV[nFOVIndex].FOVPosition.x,
							//			m_SlideBoxData[nWorkPositionIndex].TargetInFOV[nFOVIndex].FOVPosition.y,m_SlideBoxData[nWorkPositionIndex].TargetInFOV[nFOVIndex].FOVPosition.z);

							swprintf_s(sqlDBQuery, 1024, L"INSERT INTO Archive.dbo.Records2(Id,SerialNumber,Chart,date1)\
										OUTPUT GET_FILESTREAM_TRANSACTION_CONTEXT(), inserted.Chart.PathName()\
										VALUES (newid(),23,CONVERT(VARBINARY, '**Temp**'),CONVERT(date, '2012-12-14'))");

							if ( SQLExecDirect(hstmt, sqlDBQuery, SQL_NTS) != SQL_SUCCESS )
								throw new ODBCErrors(__LINE__, SQL_HANDLE_STMT, hstmt);

							//Retrieve the transaction token.
							if ( SQLFetch(hstmt) != SQL_SUCCESS )
								throw new ODBCErrors(__LINE__, SQL_HANDLE_STMT, hstmt);

    						if ( SQLGetData(hstmt, 1,
								SQL_C_BINARY,
								transactionToken,
								sizeof(transactionToken),
								&cbTransactionToken) != SQL_SUCCESS )
								throw new ODBCErrors(__LINE__, SQL_HANDLE_STMT, hstmt);

							//Retrieve the file path for the inserted record.
							if ( SQLGetData(hstmt, 2, SQL_C_TCHAR, dstFilePath, sizeof(dstFilePath), &cbDstFilePath) != SQL_SUCCESS )
								throw new ODBCErrors(__LINE__, SQL_HANDLE_STMT, hstmt);

    						if ( SQLCloseCursor(hstmt) != SQL_SUCCESS )
								throw new ODBCErrors(__LINE__, SQL_HANDLE_STMT, hstmt);

							QueryPerformanceCounter(&t0);
							//if ( ! CopyFileToSQL( (LPTSTR)(LPCTSTR)(GetDirectory(nWorkPositionIndex)+str), dstFilePath, transactionToken, cbTransactionToken) )
							//{
							//	mode = SQL_ROLLBACK;
							//	break;
							//}
							QueryPerformanceCounter(&t1);
							double  timespan = (double) (t1.QuadPart - t0.QuadPart) / Frequency.QuadPart;
							totaltime += timespan;
						}
	
						SQLEndTran(SQL_HANDLE_DBC, hdbc, mode);	
					}
					catch(ODBCErrors *pErrors)
					{
						pErrors->Print();
						delete pErrors;
					}

					if ( hstmt != SQL_NULL_HANDLE )
						SQLFreeHandle(SQL_HANDLE_STMT, hstmt);

					if ( hdbc != SQL_NULL_HANDLE )
						SQLDisconnect(hdbc);

					if ( hdbc != SQL_NULL_HANDLE )
						SQLFreeHandle(SQL_HANDLE_DBC, hdbc); 

					if ( henv != SQL_NULL_HANDLE )
						SQLFreeHandle(SQL_HANDLE_ENV, henv);
	
					QueryPerformanceCounter(&t4);
					//wprintf_s(TEXT("Time: %f\n"), (double) (t4.QuadPart - t3.QuadPart) / Frequency.QuadPart);
					//wprintf_s(TEXT("Time: %f\n"), totaltime);
	
					if (m_pRs)
						if (m_pRs->State == adStateOpen)
							m_pRs->Close();
					if (m_pCon)
						if (m_pCon->State == adStateOpen)
							m_pCon->Close();
	
					::CoUninitialize();
					// TODO: 在此添加控件通知处理程序代码
					AfxMessageBox(_T("图像保存结束"));
	  
           
	 
      //细菌信息表
	  for(int nFOVIndex=0;nFOVIndex<m_SlideBoxData.nFOVCount;nFOVIndex++)
	 {	     
		     
		 for(int TargetCountIndex=0; TargetCountIndex<GetTargetCountInFOV( nFOVIndex);TargetCountIndex++)  
		 {
			 try
		    {	
				m_pRs->raw_Close();
				//细菌信息表
				m_pRs->Open("SELECT * FROM BacilusDetect.dbo.BacilusInfo",_variant_t((IDispatch*)m_pCon),adOpenStatic,adLockOptimistic,adCmdText); 
				m_pRs->AddNew();//添加一条新记录
		   		m_pRs->Fields->GetItem(_variant_t("SlideID"))->Value=(_bstr_t)m_SlideBoxData.SlideInfo.strSlideID;
						
				_variant_t var;
				var.vt=VT_DATE;
				var.date=int(m_SlideBoxData.SlideInfo.dtDetectData); 
				m_pRs->Fields->GetItem(_variant_t("DetectData"))->Value=(_bstr_t)var;
			
				_variant_t vart;
				vart.vt=VT_DATE;
				vart.date=DATE(m_SlideBoxData.SlideInfo.dtDetectTime); 
				m_pRs->Fields->GetItem(_variant_t("DetectTime"))->Value=(_bstr_t)vart;
				m_pRs->Fields->GetItem(_variant_t("PictureID"))->Value=(_bstr_t)nFOVIndex;
				m_pRs->Fields->GetItem(_variant_t("BacilusID"))->Value=(_bstr_t)TargetCountIndex;				
				//m_pRs->Fields->GetItem(_variant_t("RPositionX"))->Value=(_bstr_t)m_SlideBoxData[nWorkPositionIndex].TargetInFOV[nFOVIndex].rectTarget[TargetCountIndex].x;
				//m_pRs->Fields->GetItem(_variant_t("RPositionY"))->Value=(_bstr_t)m_SlideBoxData[nWorkPositionIndex].TargetInFOV[nFOVIndex].rectTarget[TargetCountIndex].y;
				//m_pRs->Fields->GetItem(_variant_t("RPositionWidth"))->Value=(_bstr_t)m_SlideBoxData[nWorkPositionIndex].TargetInFOV[nFOVIndex].rectTarget[TargetCountIndex].width;
				//m_pRs->Fields->GetItem(_variant_t("RPositionHeight"))->Value=(_bstr_t)m_SlideBoxData[nWorkPositionIndex].TargetInFOV[nFOVIndex].rectTarget[TargetCountIndex].height;
				m_pRs->Update();
			}

			catch(...)
			{
				AfxMessageBox(_T("信息保存失败!"));
			}	   		 
		 }
	  }
	  AfxMessageBox(_T("信息保存成功!"));

	  }
	  else
	{
コード例 #27
0
bool SqlServer::connect(connection_info const& info)
{    
# ifdef _FREETDS
    RETCODE sta;
    LOGINREC* login = dblogin();
    
    sta = DBSETLUSER(login, info.user.c_str());
    if (sta == FAIL)
        return false;
    
    sta = DBSETLPWD(login, info.passwd.c_str());
    if (sta == FAIL)
        return false;
    
    DBPROCESS* proc = dbopen(login, info.url.c_str());
    if (proc == NULL)
        return false;
    
    sta = dbuse(proc, info.database.c_str());
    if (sta == FAIL)
        return false;
    
    d_ptr->proc = proc;
    
# endif

# ifdef _MSSQL

	_ConnectionPtr conn;
	HRESULT sta = conn.CreateInstance(__uuidof(Connection));
	if (FAILED(sta)) 
	{
		MessageBox(NULL, _W("failed to instance a new connection."), NULL, MB_OK);
		return false;
	}

	core::stringstream ss;
	ss << "Driver={SQL Server};" <<
		"Server=" << info.url << ";" << 
		"Database=" << info.database << ";" <<
		"UID=" << info.user << ";" <<
		"PWD=" << info.passwd << ";";
	core::string str_conn = ss.str();

	try
	{
		sta = conn->Open(str_conn.c_str(), "", "", adModeUnknown);
	}
	catch (_com_error& NNTDEBUG_EXPRESS(er))
	{
		trace_msg((char const*)er.ErrorMessage());
		return false;
	}
	catch (...)
	{
		trace_msg("failed to open database.");
		return false;
	}

	this->close();
	d_ptr->conn = conn;
 
# endif
    
    return true;
}
コード例 #28
0
ファイル: RxADO.cpp プロジェクト: ice98/mycode_bak
/*
	µ±nStyle=1ʱ Éú³ÉÊý×Ö±àºÅ
	µ±nStyle=2ʱ Éú³ÉÁ÷Ë®ÕʺÅ
	µ±nStyle=3ʱ Éú³ÉÈÕÆÚʱ¼ä±àºÅ
*/
CString RxADO::AutoNumber(CString sTable, CString sFieldName, CString sCode, int nStyle)
{
 	_RecordsetPtr AutoNumberrst;
 	CString sTempNewNumber,sNewNumber,sSQL,sMaxNumber,sOldNumber;
 	AutoNumberrst.CreateInstance(__uuidof(Recordset));
 	sSQL.Format("SELECT MAX(%s) as ×î´ó±àºÅ FROM %s",sFieldName,sTable);
	try{
	AutoNumberrst=cnn->Execute((_bstr_t)sSQL,NULL,adCmdText);		
	}
	catch(_com_error & e)
	{
		GetADOErrors(e);
	}
	if(nStyle==1) //Êý×Ö±àºÅ
 	{
 		if(GetRecordCount(AutoNumberrst)<1)
			sNewNumber.Format("1");
		else
	{
		AutoNumberrst->MoveFirst();
		_variant_t vtext;
		vtext=AutoNumberrst->GetCollect("×î´ó±àºÅ");
		if(vtext.vt==VT_EMPTY||vtext.vt==VT_NULL)
		{
			sNewNumber.Format("1");
			goto end;
		}
		sMaxNumber=(char*)(_bstr_t)AutoNumberrst->GetCollect("×î´ó±àºÅ");
			sNewNumber.Format("%d",atoi(sMaxNumber)+1);
		}
	}
	if(nStyle==2)//Á÷Ë®ÕʺÅ
	{
		if(GetRecordCount(AutoNumberrst)<1)
			sNewNumber.Format("%s00000001",sCode);
		else
 		{
			AutoNumberrst->MoveFirst();
			_variant_t _bOldNumber=AutoNumberrst->GetCollect("×î´ó±àºÅ");
			if(_bOldNumber.vt==VT_NULL || _bOldNumber.vt==VT_EMPTY)
			{
				sNewNumber.Format("%s00000001",sCode);
				goto end;
			}
			sOldNumber=(char*)(_bstr_t) _bOldNumber;
			sMaxNumber=sOldNumber.Mid(3); 
			sTempNewNumber.Format("%d",atoi(sMaxNumber)+1);
			sNewNumber.Format("%s%s",sCode,Padl(sTempNewNumber,8,"0",1));
		}

	}
	if(nStyle==3)//ÈÕÆÚʱ¼ä±àºÅ
	{
		int nYear,nDay,nMonth;
		CString sYear,sDay,sMonth;
		CTime tTime;
 		tTime=tTime.GetCurrentTime(); 
		nYear=tTime.GetYear();
		nDay=tTime.GetDay();
		nMonth=tTime.GetMonth();
		sYear.Format("%d",nYear);
		sDay.Format("%d",nDay);
		sMonth.Format("%d",nMonth);
 		
		sYear=sYear.Mid(2);
		sDay=Padl(sDay,2,"0",1);
		sMonth=Padl(sMonth,2,"0",1);
 		if(GetRecordCount(AutoNumberrst)<1)
			sNewNumber.Format("%s%s%s%s-000001  ",sCode,sYear,sMonth,sDay);
		else
		{
			_variant_t bh=AutoNumberrst->GetCollect("×î´ó±àºÅ");
			if(bh.vt==VT_EMPTY||bh.vt==VT_NULL)
			{
				sNewNumber.Format("%s%s%s%s-000001  ",sCode,sYear,sMonth,sDay);
				goto end;
			}
			CString sOldDate,sNewDate;
			AutoNumberrst->MoveFirst();
 			sOldNumber=(char*)(_bstr_t)AutoNumberrst->GetCollect("×î´ó±àºÅ");
 			sOldDate=sOldNumber.Mid(2,6);
			sNewDate.Format("%s%s%s",sYear,sMonth,sDay);
			if(sOldDate==sNewDate)
			{
				sMaxNumber=sOldNumber.Mid(9);
				sTempNewNumber.Format("%d",atoi(sMaxNumber)+1);
				sNewNumber.Format("%s%s%s%s-%s",sCode,sYear,sMonth,sDay,Padl(sTempNewNumber,6,"0",1));
 			}
 			else
				sNewNumber.Format("%s%s%s%s-000001  ",sCode,sYear,sMonth,sDay);		
		}
 	}
end: 	return sNewNumber;
}
コード例 #29
0
ファイル: MorphaResDlg.cpp プロジェクト: niepp/sperm-x
BOOL CMorphaResDlg::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	CMainFrame* pMainFrm=(CMainFrame*)AfxGetMainWnd();
	CMorphaDataRetriveDlg& dlg = *(pMainFrm->m_pWndMorphadlg);
	
	CString strSQLCRMfi("select morpharesult.* into morphafordisplay \
	    from morpharesult,basicinfo,morphaimage,spermchait,morpharesultratio \
		where morpharesult.pdetectno = basicinfo.pdetectno \
		  and morpharesult.pdetectno = morphaimage.pdetectno \
		  and morpharesult.pdetectno = spermchait.pdetectno \
		  and morpharesult.pdetectno = morpharesultratio.pdetectno");

	try
	{
		if(IsTableExist(theConnection, "morphafordisplay") == true)
		{
			theConnection->Execute((LPCTSTR)"drop table morphafordisplay",NULL,adCmdText);
		}
		theConnection->Execute((LPCTSTR)strSQLCRMfi,NULL,adCmdText);

		CString strGetN("select count(*) from morphafordisplay");
		_RecordsetPtr rs=theConnection->Execute((LPCSTR)strGetN,NULL,adCmdText);
		
		dlg.m_dp[0].nCurPage = 1;
		dlg.m_dp[0].nTotalRecord=rs->GetCollect((long)0).iVal;
		dlg.m_dp[0].nPageRecord = NUMPERPAGE;
		dlg.m_dp[0].nTotalPage = dlg.m_dp[0].nTotalRecord / dlg.m_dp[0].nPageRecord +
							 (dlg.m_dp[0].nTotalRecord % dlg.m_dp[0].nPageRecord!=0);
		CString queryinfo;
 		queryinfo.Format("共查询到%d条记录",dlg.m_dp[0].nTotalRecord);
 		dlg.SetDlgItemText(IDC_STATIC_QUERY,queryinfo);
		if(dlg.m_dp[0].nTotalRecord == 0 ) 
		{
			CMainFrame* pMainFrm=(CMainFrame*)AfxGetMainWnd();
			pMainFrm->m_pWndMorphadlg->GetDlgItem(IDC_BTN_FIRSTPAGE)->EnableWindow(FALSE);
			pMainFrm->m_pWndMorphadlg->GetDlgItem(IDC_BTN_PREPAGE)->EnableWindow(FALSE);
			pMainFrm->m_pWndMorphadlg->GetDlgItem(IDC_BTN_NEXTPAGE)->EnableWindow(FALSE);
			pMainFrm->m_pWndMorphadlg->GetDlgItem(IDC_BTN_LASTPAGE)->EnableWindow(FALSE);
			pMainFrm->m_pWndMorphadlg->GetDlgItem(IDC_PAGENUM)->EnableWindow(FALSE);
			return FALSE;
		}
		
		int lowRow, upRow;
		dlg.GetPageBound(1,lowRow,upRow,dlg.m_dp[0]);


		GetRecordSet(rs,lowRow,upRow);
		int n=dlg.m_resdlg.m_wndMorphaDataList.SetData(rs);
		
		queryinfo.Format("第 %d / %d 页",dlg.m_dp[0].nCurPage,dlg.m_dp[0].nTotalPage);
		dlg.SetDlgItemText(IDC_PAGENUM,queryinfo);
		
		dlg.GetDlgItem(IDC_BTN_FIRSTPAGE)->EnableWindow(dlg.m_dp[dlg.IsInqueryState()].nCurPage != 1);
		dlg.GetDlgItem(IDC_BTN_PREPAGE)->EnableWindow(dlg.m_dp[dlg.IsInqueryState()].nCurPage != 1);
		dlg.GetDlgItem(IDC_BTN_NEXTPAGE)->EnableWindow(dlg.m_dp[dlg.IsInqueryState()].nCurPage != dlg.m_dp[dlg.IsInqueryState()].nTotalPage);
		dlg.GetDlgItem(IDC_BTN_LASTPAGE)->EnableWindow(dlg.m_dp[dlg.IsInqueryState()].nCurPage != dlg.m_dp[dlg.IsInqueryState()].nTotalPage );

	}
	catch (_com_error& e)
	{
		MessageBox(e.Description());
		return FALSE;
	}	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
コード例 #30
0
ファイル: MorphaResDlg.cpp プロジェクト: niepp/sperm-x
void CMorphaResDlg::OnClickListMorphadata(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_LISTVIEW*   pNMListView = (NM_LISTVIEW*)pNMHDR; 

	LV_COLUMN  lc;
	lc.mask  = LVCF_TEXT ;
	TCHAR pszText[40];
	lc.pszText =  pszText;
	lc.cchTextMax = sizeof(pszText)/sizeof(pszText[0]);
	int nCol = 0;
	while (m_wndMorphaDataList.GetColumn(nCol,&lc))
	{
		if(CString(lc.pszText) == TEXT("检测号"))
			break;
		++nCol;
	}
	CString str=m_wndMorphaDataList.GetItemText(pNMListView->iItem,nCol);
	if(str == "") return;
	CString strSQLinfo("select distinct *,basicinfo.pdetectno as 'pDetectno' from basicinfo,spermchait\
		where basicinfo.pdetectno=spermchait.pdetectno and \
		basicinfo.pdetectno='");
	strSQLinfo= strSQLinfo + str + CString("'");

	CPropertySheet* pSheet=(CPropertySheet*)GetParent();
	CStatic* pStatic=(CStatic*)pSheet->GetParent();
	CMorphaDataRetriveDlg* pDlg=(CMorphaDataRetriveDlg*)pStatic->GetParent();
	
	try
	{
		_variant_t var;
		COleDateTime pddt;
		_RecordsetPtr rs=theConnection->Execute((LPCTSTR)strSQLinfo,NULL,adCmdText);
		var = rs->GetCollect("pDetectno");
		pDlg->m_strEditDetectNO = (char*)(_bstr_t)var;
// 		pDlg->m_strEditDetectNO.TrimLeft();
// 		pDlg->m_strEditDetectNO.TrimRight();
		var = rs->GetCollect("pCaseNO");
		pDlg->m_strEditCaseNO = (char*)(_bstr_t)var;
// 		pDlg->m_strEditCaseNO.TrimLeft();
// 		pDlg->m_strEditCaseNO.TrimRight();
		var = rs->GetCollect("pname");
		pDlg->m_strEditName = (char*)(_bstr_t)var;
// 		pDlg->m_strEditName.TrimLeft();
// 		pDlg->m_strEditName.TrimRight();
		var = rs->GetCollect("pspermvolume");
		pDlg->m_strEditSpermVolume = (char*)(_bstr_t)var;
// 		pDlg->m_strEditSpermVolume.TrimLeft();
// 		pDlg->m_strEditSpermVolume.TrimRight();
		var = rs->GetCollect("page");
		pDlg->m_strEditAge = (char*)(_bstr_t)var;
// 		pDlg->m_strEditAge.TrimLeft();
// 		pDlg->m_strEditAge.TrimRight();
		pddt=rs->GetCollect("pdetectdatetime");
		pDlg->m_oledateDetectDate.SetDate(pddt.GetYear(),pddt.GetMonth(),pddt.GetDay());
		pDlg->m_oletimeDetectTime.SetTime(pddt.GetHour(),pddt.GetMinute(),pddt.GetSecond());
		var = rs->GetCollect("pSampleNO");
		pDlg->m_strEditSampleNO = (char*)(_bstr_t)var;
// 		pDlg->m_strEditSampleNO.TrimLeft();
// 		pDlg->m_strEditSampleNO.TrimRight();
		var = rs->GetCollect("pdilutionratio");
		pDlg->m_strEditDilutionRatio = (char*)(_bstr_t)var;
// 		pDlg->m_strEditDilutionRatio.TrimLeft();
// 		pDlg->m_strEditDilutionRatio.TrimRight();
		var = rs->GetCollect("pShape");
		pDlg->m_strEditShape = (char*)(_bstr_t)var;
// 		pDlg->m_strEditShape.TrimLeft();
// 		pDlg->m_strEditShape.TrimRight();
		pddt=rs->GetCollect("pspermgetdatetime");
		pDlg->m_oledateSpermGetDate.SetDate(pddt.GetYear(),pddt.GetMonth(),pddt.GetDay());
		pDlg->m_oletimeSpermGetTime.SetTime(pddt.GetHour(),pddt.GetMinute(),pddt.GetSecond());
		var = rs->GetCollect("pcolor");
		pDlg->m_strEditSpermColor =  (char*)(_bstr_t)var;
// 		pDlg->m_strEditSpermColor.TrimLeft();
// 		pDlg->m_strEditSpermColor.TrimRight();
		var = rs->GetCollect("pcohesion");
		pDlg->m_strEditCohension =  (char*)(_bstr_t)var;
// 		pDlg->m_strEditCohension.TrimLeft();
// 		pDlg->m_strEditCohension.TrimRight();
		var = rs->GetCollect("pRoomTempera");
		pDlg->m_strEditRoomTempera = (char*)(_bstr_t)var;
// 		pDlg->m_strEditRoomTempera.TrimLeft();
// 		pDlg->m_strEditRoomTempera.TrimRight();
		var = rs->GetCollect("pdaysofabstinency");
		pDlg->m_strEditAbstinency = (char*)(_bstr_t)var;
// 		pDlg->m_strEditAbstinency.TrimLeft();
// 		pDlg->m_strEditAbstinency.TrimRight();
		var = rs->GetCollect("pliquifystate");
		pDlg->m_strEditLiquifyState = (char*)(_bstr_t)var;
// 		pDlg->m_strEditLiquifyState.TrimLeft();
// 		pDlg->m_strEditLiquifyState.TrimRight();
		var = rs->GetCollect("psmell");
		pDlg->m_strEditSmell = (char*)(_bstr_t)var;
// 		pDlg->m_strEditSmell.TrimLeft();
// 		pDlg->m_strEditSmell.TrimRight();
		var = rs->GetCollect("pthickness");
		pDlg->m_strEditThickness = (char*)(_bstr_t)var;
// 		pDlg->m_strEditThickness.TrimLeft();
// 		pDlg->m_strEditThickness.TrimRight();
		var = rs->GetCollect("pph");
		pDlg->m_strEditPH = (char*)(_bstr_t)var;
// 		pDlg->m_strEditPH.TrimLeft();
// 		pDlg->m_strEditPH.TrimRight();
		var = rs->GetCollect("pspermmethod");
		pDlg->m_strEditSpermWay = (char*)(_bstr_t)var;
// 		pDlg->m_strEditSpermWay.TrimLeft();
// 		pDlg->m_strEditSpermWay.TrimRight();
		var = rs->GetCollect("pliquifytime");
		pDlg->m_strEditLiquifyTime = (char*)(_bstr_t)var;
// 		pDlg->m_strEditLiquifyTime.TrimLeft();
// 		pDlg->m_strEditLiquifyTime.TrimRight();
		pDlg->UpdateData(FALSE);
	}
	catch (_com_error& e)
	{
		AfxMessageBox(e.Description());
		return;
	}
	
	//
	str.Format("select * from morphasperminfo where pid like('%s%%')", pDlg->m_strEditDetectNO);
	try
	{
		_RecordsetPtr rs=theConnection->Execute((LPCTSTR)str,NULL,adCmdText);
		_variant_t vt;
		SingleSpermInfo ssInfo;

		pDlg->m_vSpermInfo.clear();

		while(!rs->EndOfFile)
		{
			vt = rs->GetCollect("x");
			ssInfo.pos.x = (long)vt;
			vt = rs->GetCollect("y");
			ssInfo.pos.y = (long)vt;

			vt = rs->GetCollect("pid");
			CString cs;
			cs = (char*)(_bstr_t)vt;

			int nl = cs.ReverseFind('_');
			nl = cs.GetLength()-nl-1;
			cs = cs.Right(nl);
			ssInfo.nSpermNO = atol((LPCTSTR)cs);

			vt = rs->GetCollect("IsNormal");
			ssInfo.bIsNormal = (bool)vt;

			vt = rs->GetCollect("m_length");
			ssInfo.smPara.m_length = (double)vt;
			vt = rs->GetCollect("m_width");
			ssInfo.smPara.m_width = (double)vt;
			vt = rs->GetCollect("m_area");
			ssInfo.smPara.m_area = (double)vt;
			
			vt = rs->GetCollect("m_ellipticity");
			ssInfo.smPara.m_ellipticity = (double)vt;
			vt = rs->GetCollect("m_perfor_area");
			ssInfo.smPara.m_perfor_area = (double)vt;
			vt = rs->GetCollect("m_head_area");
			ssInfo.smPara.m_head_area = (double)vt;
			vt = rs->GetCollect("m_perimeter");
			ssInfo.smPara.m_perimeter = (double)vt;
			vt = rs->GetCollect("m_head_perfor_area");
			ssInfo.smPara.m_head_perfor_area = (double)vt;
			
			vt = rs->GetCollect("m_tail_length");
			ssInfo.smPara.m_tail_length = (double)vt;
			vt = rs->GetCollect("m_tail_width");
			ssInfo.smPara.m_tail_width = (double)vt;
			vt = rs->GetCollect("m_tail_angle");
			ssInfo.smPara.m_tail_angle = (double)vt;

			vt = rs->GetCollect("m_extension");
			ssInfo.smPara.m_extension = (double)vt;
			vt = rs->GetCollect("m_symmetry");
			ssInfo.smPara.m_symmetry = (double)vt;
			vt = rs->GetCollect("m_ruga");
			ssInfo.smPara.m_ruga = (double)vt;
	
			pDlg->m_vSpermInfo.push_back(ssInfo);
			
			rs->MoveNext();

		}

		// Update UI button
		UINT uSelectedCount = m_wndMorphaDataList.GetSelectedCount();
		BOOL enable = uSelectedCount>=1 ? TRUE : FALSE;
		CDialog *pdlg = ((CMainFrame*)AfxGetMainWnd())->m_pWndMorphadlg;

		::SendMessage(pdlg->GetSafeHwnd(), USER_MSG_SHOW_PRINT_BTN, (WPARAM)enable, 0);
		::SendMessage(pdlg->GetSafeHwnd(), USER_MSG_SHOW_MOPHY_DEL_SEL_BTN, (WPARAM)enable, 0);

	}
	catch (_com_error& e)
	{
		MessageBox(e.Description());
		return;
	}

	*pResult = 0;
}