//old code
CString CXTPReportRecordItemVariant::GetCaption(CXTPReportColumn* pColumn)
{
	if (!m_strCaption.IsEmpty())
		return m_strCaption;

	COleVariant var(m_oleValue);

	CXTPReportRecordItemEditOptions* pEditOptions = NULL;
	if (m_pEditOptions)
		pEditOptions = m_pEditOptions;
	else if (pColumn)
		pEditOptions = pColumn->GetEditOptions();

	BOOL bConstraintEdit = FALSE;
	if (pEditOptions)
		bConstraintEdit = pEditOptions->m_bConstraintEdit;

	TRY
	{
		if (var.vt == VT_DATE && !bConstraintEdit && m_strFormatString != _T("%s"))
		{
			COleDateTime dt(var);
			//return dt.Format(m_strFormatString);
			return CXTPReportControlLocale::FormatDateTime(dt, m_strFormatString);
		}
		if (var.vt == VT_NULL)
		{
			var.vt = VT_I4;
			var.lVal = 0;
		}
		else
		{
			if (bConstraintEdit)
				CXTPReportControlLocale::VariantChangeTypeEx(var, VT_I4);
			else
				CXTPReportControlLocale::VariantChangeTypeEx(var, VT_BSTR);
		}
	}
	CATCH_ALL(e)
	{
	}
	END_CATCH_ALL

	if (bConstraintEdit)
	{
		CXTPReportRecordItemConstraint* pConstraint = pEditOptions ? pEditOptions->FindConstraint(var.lVal) : NULL;
		return pConstraint ? pConstraint->m_strConstraint : _T("");
	}

	if (var.vt != VT_BSTR) //this function expected VT_BSTR only !?
		return _T("");

	CString strVariant(var.bstrVal);
	if (m_strFormatString == _T("%s"))
		return strVariant;

	CString strCaption;
	strCaption.Format(m_strFormatString, (LPCTSTR)strVariant);
	return strCaption;
}
Exemplo n.º 2
0
LPCTSTR COcsWmi::strVariantArray( VARIANT var)

{

    LONG dwSLBound = 0;

    LONG dwSUBound = 0;

    VARIANT v;
	VariantInit(&v);

    LONG i;

	static CString strRet;

	HRESULT hr;



    if(!V_ISARRAY(&var))

        return strVariant( var);



    //

    // Check that there is only one dimension in this array

    //



    if ((V_ARRAY(&var))->cDims != 1)

		return NULL;



	//

    // Check that there is atleast one element in this array

    //



    if ((V_ARRAY(&var))->rgsabound[0].cElements == 0)

		return NULL;



    //

    // We know that this is a valid single dimension array

    //



    hr = SafeArrayGetLBound( V_ARRAY(&var), 1, (long FAR *)&dwSLBound);

	if (FAILED( hr))

		return NULL;



    hr = SafeArrayGetUBound( V_ARRAY(&var), 1, (long FAR *)&dwSUBound);

    if (FAILED( hr))

		return NULL;



	strRet = _T( "");

    // VariantInit(&v);

	DECIMAL_SETZERO(v.decVal);

    for (i = dwSLBound; i <= dwSUBound; i++)

	{

        hr = SafeArrayGetElement( V_ARRAY(&var), (long FAR *)&i, &v);

        if (FAILED(hr))

            continue;



        if (i < dwSUBound)

		{

			strRet += strVariant( v);

			strRet += _T( ";");

		}

        else

		{

			strRet += strVariant( v);

        }

        // VariantClear(&v);

		DECIMAL_SETZERO(v.decVal);

    }

    return(strRet);

}