void ExcelControllerImpl08::DoSaveDocumentAs(IDispatchPtr spDocument, const CStdString& sNewFileName, MetawallBackEnd::wsFileFormat eFormat)
{
   if (spDocument == 0)	
      throw Workshare::Com::ComException(_T("The word document instance was null"), E_INVALIDARG);

   if (MetawallBackEnd::WSEXCELDOCUMENT != eFormat)
      throw Workshare::Com::ComException(_T("The format specified for SaveDocumentAs was invalid."), E_INVALIDARG);

   Excel::_WorkbookPtr pExcelDocument = spDocument;
   _variant_t vtFileName(sNewFileName.c_str());
   _variant_t vtFormat((long)(Excel::xlWorkbookNormal));
   _variant_t vtFalse(VARIANT_FALSE);
   _variant_t	vtEmpty(_T(""));

   HRESULT hr = pExcelDocument->SaveAs(&vtFileName, &vtFormat, &vtEmpty, &vtEmpty, &vtFalse, &vtFalse, Excel::xlNoChange);
   if (FAILED(hr))
      throw Workshare::Com::ComException(_T("Failed to save the workbook with the following file name:") + sNewFileName, hr);
}
Example #2
0
long CADOUtil::RunCommand_ReturnLong(_bstr_t CmdText, CParamArray *ParamArray)
{
	if(!CheckCurrentProcess())
		throw ERR_NEW_PROCESS_DETECTED;

	DWORD			dRet = 0;
	_ConnectionPtr	pConn  = NULL;
	_CommandPtr		pComm = NULL;
	_ParameterPtr	pPrm  = NULL;
	ErrorPtr		pErr  = NULL;
	CParam*			pr    = NULL;
	_variant_t		vIndex;
	_variant_t		vValue;
	long			ErrSQLState = 0;
	long			ErrorCode = 0;
	_bstr_t			bsEpmty;

	long count;

	//********************************************************************
	//Connectin to Pool
	try
	{
		_bstr_t bstrConnString(szConnectionString);
		pConn.CreateInstance(__uuidof(Connection));
		if(pConn == NULL)
		{
			throw(ErrorCode = ERR_UNABLE_CREATE_CONN);
		}
		pConn->ConnectionTimeout = 7;
		pConn->Open(bstrConnString, L"", L"", adConnectUnspecified);
	}
	catch(...)
	{
		Beep(2000,100);
		//m_ExternalLink.Add2Log(WL_ERROR_LEVEL1,"Unable set connection to SQL Error = Unknown");
		ErrorCode = ERR_UNABLE_CREATE_CONN;
	}

	if(ErrorCode != 0)
		throw ErrorCode;

	//Execute Command
	try
	{
		pComm.CreateInstance(__uuidof(Command));
		if(pComm == NULL)
		{
			throw(ErrorCode = ERR_UNABLE_CREATE_COMM);
		}

		pComm->ActiveConnection = pConn;
		pComm->CommandText = CmdText;

		if (ParamArray != NULL)
		{
			for (int i=0; i < ParamArray->GetSize(); i++)
			{
				pr = (*ParamArray)[i];
				pPrm = pComm->CreateParameter(bsEpmty, pr->Type, pr->Direction, pr->Size, pr->Value);
				pComm->Parameters->Append(pPrm);
			}
		}

		pConn->Errors->Clear();

		_variant_t  vtEmpty (DISP_E_PARAMNOTFOUND, VT_ERROR);
		_variant_t  vtEmpty2(DISP_E_PARAMNOTFOUND, VT_ERROR);

		_RecordsetPtr reader = pComm->Execute(&vtEmpty, &vtEmpty2, adCmdText);

		int nFieldCount = reader->Fields->GetCount();

		if(nFieldCount > 0)
		{
			dRet = (DWORD) reader->Fields->GetItem(_variant_t((long)0))->Value;
		}
	}
	catch(_com_error)
	{
		try
		{
			count = pConn->Errors->Count;
			if(count)
			{
				vIndex = _variant_t((LONG)0);
				pErr = pConn->Errors->GetItem(vIndex);
				ErrSQLState = atol((LPCSTR)pErr->SQLState);
				/*
				//m_ExternalLink.Add2Log(WL_ERROR_LEVEL3,
				"SQL (LONG) Error %d [Error #%d Description \"%s\" (Source: %s)"
				"(SQL State: %s)](NativeError: %s)",
				e.Error(),
				pErr->Number,
				(LPCSTR)pErr->Description,
				(LPCSTR)pErr->Source,
				(LPCSTR)pErr->SQLState,
				(LPCSTR)pErr->NativeError);*/

			}
			pConn->Close();
			if (pComm->ActiveConnection != NULL)
			{
				pComm->PutRefActiveConnection(NULL);
			}
		}
		catch(...)
		{
			ErrSQLState = 1;
		}
	}
	catch(long errorCode)
	{
		//m_ExternalLink.Add2Log(WL_ERROR_LEVEL3,"SQL (LONG) Error Unable Create Command object");
		pConn->Close();
		throw(errorCode);
	}
	catch(...)
	{
		//m_ExternalLink.Add2Log(WL_ERROR_LEVEL3,"SQL (LONG) Error Unknown");
		ErrSQLState = 1;
	}

	if(ErrSQLState)
	{
		switch(ErrSQLState)
		{
		case 23000: //Violation of PRIMARY KEY constraint
			throw (ErrorCode = ERR_PRIMARY_KEY_CONSTRAINT);
			break;
		default: //Code 
			throw (ErrorCode = ERR_SQL_UNKNOWN_PROBLEM);
			break;
		}
	}

	//----------------
	//Close Connection
	pComm->PutRefActiveConnection(NULL);
	pConn->Close();
	return dRet;
}