Esempio n. 1
0
void CMedic::RefreshReport( CMedicSet *pMedicSet )
{
	CMainFrame *p = (CMainFrame *)AfxGetMainWnd();
	CXTPReportControl *pReport = p->m_wndReportCtrl;
	CXTPReportRecords *pRecords = pReport->GetRecords();
	pRecords->RemoveAll();

	CXTPReportRecord *pRecord;
	CXTPReportRecordItem *pItem;
	CString strPrice;
	while(!pMedicSet->IsEOF())
	{
		pRecord = new CXTPReportRecord();
		pRecord->AddItem(new CXTPReportRecordItemText(pMedicSet->m_MedicID));
		pRecord->AddItem(new CXTPReportRecordItemText(pMedicSet->m_MedicName));
		pRecord->AddItem(new CXTPReportRecordItemText(pMedicSet->m_MedicType));
		CTime ProduceData = pMedicSet->m_ProduceDate;
		pRecord->AddItem(new CXTPReportRecordItemText(ProduceData.Format(_T("%Y-%m-%d"))));
		if (0 == pMedicSet->m_MedicNumber)
		{
			pItem = pRecord->AddItem(new CXTPReportRecordItemNumber(pMedicSet->m_MedicNumber));
			pItem->SetBackgroundColor(RGB(255,0,0));
		}
		else
			pRecord->AddItem(new CXTPReportRecordItemNumber(pMedicSet->m_MedicNumber));
		strPrice.Format("%.2f",pMedicSet->m_MedicPrice);
		pRecord->AddItem(new CXTPReportRecordItemText(strPrice));
		pRecord->AddItem(new CXTPReportRecordItemNumber(pMedicSet->m_GuarantPeriod));
		pRecord->AddItem(new CXTPReportRecordItemText(pMedicSet->m_ProduceCompany));
		pReport->AddRecord(pRecord);
		pMedicSet->MoveNext();
	}
	pReport->Populate();
	
}
HRESULT CXTPReportDataManager::PrepareDeleteReportRecords(XTPREPORTADODB::_RecordsetPtr pRecordset)
{
    HRESULT hr = E_FAIL;

    try
    {
        if (m_pDeleteRecords)
            m_pDeleteRecords->RemoveAll();
        else
            m_pDeleteRecords = new CXTPReportRecords(TRUE);
        if (!m_pDeleteRecords)
            return E_FAIL;
        CXTPReportRecords* pRecords = m_pReportControl->GetRecords();
        if (!(pRecordset != NULL && pRecords))
            return E_FAIL;
        long lRecords;
        if (FAILED(hr = pRecordset->get_RecordCount(&lRecords)))
            return hr;
        if (lRecords <= 0)
            return E_FAIL;
        pRecordset->MoveFirst();
        VARIANT_BOOL vtRecordsEof;
        pRecordset->get_bEOF(&vtRecordsEof);
        while (!vtRecordsEof)
        {
            // get record bookmark
            VARIANT vtBookmark;
            if (FAILED(hr = pRecordset->get_Bookmark(&vtBookmark)))
                break;
            CXTPReportRecord* pRecord = pRecords->FindRecordByBookmark(vtBookmark, TRUE);
            if (pRecord)
                m_pDeleteRecords->Add(pRecord);
            pRecordset->MoveNext();
            pRecordset->get_bEOF(&vtRecordsEof);
        }

    }
    catch(_com_error &e)
    {
        TRACE_ProviderError(m_pConnection);
        TRACE_ComError(e);
        hr = FAILED(hr) ? hr : E_FAIL;
    }
    catch(...)
    {
        TRACE(_T("Unknown error in PrepareDeleteReportRecords()\n"));
        hr = FAILED(hr) ? hr : E_FAIL;
    }

    return FAILED(hr) ? hr : S_OK;
}
Esempio n. 3
0
CXTPMarkupContext* CXTPReportRecord::GetMarkupContext() const
{
	CXTPReportRecords* pRecords = m_pRecords;

	while (pRecords != NULL)
	{
		CXTPMarkupContext* pMarkupContext = pRecords->GetMarkupContext();
		if (pMarkupContext)
			return pMarkupContext;

		if (pRecords->m_pOwnerRecord)
			pRecords = pRecords->m_pOwnerRecord->GetRecords();
		else
			return NULL;
	}

	return NULL;
}
Esempio n. 4
0
void CSimpleReport::RowDown( bool (*copyFunc)(CSimpleReport*, CXTPReportRecord*, CXTPReportRecord*) )
{
	int rowidx = GetFocusedRow()->GetIndex();
	int recidx = GetFocusedRow()->GetRecord()->GetIndex();
	CXTPReportRecords* pRecs = GetRecords();
	if (!pRecs || recidx >= pRecs->GetCount() - 1)
		return;

	CXTPReportRecord* pRec = newRec();
	CXTPReportRecord* src = pRecs->GetAt(recidx);
	if (!pRec || !src)
		return;

	copyFunc(this, src, pRec);

	pRecs->RemoveAt(recidx);
	pRecs->InsertAt(recidx+1, pRec);

	Populate();
	SetFocusedRow(GetRows()->GetAt(rowidx+1));
	SetFocus();
}
HRESULT CXTPReportDataManager::UpdateReportRecords(XTPREPORTADODB::_RecordsetPtr pRecordset)
{
    HRESULT hr = E_FAIL;

    try
    {

        CXTPReportRecords* pRecords = m_pReportControl->GetRecords();
        if (!(pRecordset != NULL && pRecords))
            return E_FAIL;
        XTPREPORTADODB::FieldsPtr pFields;
        if (FAILED(hr = pRecordset->get_Fields(&pFields)) || pFields == NULL)
            return hr;
        long lFields;
        if (FAILED(hr = pFields->get_Count(&lFields)) || lFields == 0)
            return hr;
        long lRecords;
        if (FAILED(hr = pRecordset->get_RecordCount(&lRecords)))
            return hr;
        if (lRecords <= 0)
            return E_FAIL;
        pRecordset->MoveFirst();
        VARIANT_BOOL vtRecordsEof;
        pRecordset->get_bEOF(&vtRecordsEof);
        while (!vtRecordsEof)
        {
            // get record bookmark
            VARIANT vtBookmark;
            if (FAILED(hr = pRecordset->get_Bookmark(&vtBookmark)))
                break;
            CXTPReportRecord* pRecord = pRecords->FindRecordByBookmark(vtBookmark, TRUE);
            if (pRecord)
            {
                // get field values
                VARIANT vtIdx;
                vtIdx.vt = VT_I4;
                for (int i = 0; i < lFields; i++)
                {
                    vtIdx.lVal = i;
                    XTPREPORTADODB::FieldPtr pField;
                    if (FAILED(hr = pFields->get_Item(vtIdx, &pField)) || pField == NULL)
                        break;
                    VARIANT vtValue;
                    if (FAILED(hr = pField->get_Value(&vtValue)))
                        break;
                    CXTPReportRecordItemVariant* pItem = (CXTPReportRecordItemVariant*)pRecord->GetItem(i);
                    if (!pItem)
                        break;
                    pItem->SetValue(COleVariant(vtValue));
                }
                m_pReportControl->UpdateRecord(pRecord, TRUE);
            }
            pRecordset->MoveNext();
            pRecordset->get_bEOF(&vtRecordsEof);
        }
    }
    catch(_com_error &e)
    {
        TRACE_ProviderError(m_pConnection);
        TRACE_ComError(e);
        hr = FAILED(hr) ? hr : E_FAIL;
    }
    catch(...)
    {
        TRACE(_T("Unknown error in UpdateReportRecords()\n"));
        hr = FAILED(hr) ? hr : E_FAIL;
    }

    return FAILED(hr) ? hr : S_OK;
}
Esempio n. 6
0
void CSimpleReport::Paste()
{
	if (IsVirtualMode())
		return;

	CWaitCursor _WC;

	CLIPFORMAT uCF_Records = (CLIPFORMAT)::RegisterClipboardFormat(XTPREPORTCTRL_CF_RECORDS);

	CXTPReportRecords arRecords;
	BOOL bTryPasteFromText = TRUE;

	// Retrieve text from the clipboard
	if (!OpenClipboard())
		return;

	if (::IsClipboardFormatAvailable(uCF_Records))
	{
		HGLOBAL hPasteData = ::GetClipboardData(uCF_Records);

		if (hPasteData)
		{
			bTryPasteFromText = FALSE;

			const int cErrTextSize = 1024;
			TCHAR szErrText[cErrTextSize + 1];

			CSharedFile fileSahred;
			fileSahred.SetHandle(hPasteData, FALSE);
			CArchive ar(&fileSahred, CArchive::load);

			try
			{
				CXTPPropExchangeArchive px(ar);
				BOOL bread = FALSE;
			#if _XTPLIB_VERSION_PREFIX == 1502
				bread = _ReadRecordsFromData(&px, arRecords);
			#else
				bread = _ReadRecodsFromData(&px, arRecords);
			#endif
				if (!bread)
				{
					arRecords.RemoveAll();
				}
			}
			catch(CArchiveException* pE)
			{
				if (pE->GetErrorMessage(szErrText, cErrTextSize))
				{
					TRACE(_T("EXCEPTION: CXTPReportControl::Paste() - %s\n"), szErrText);
				}
				pE->Delete();
			}
			catch(CFileException* pE)
			{
				if (pE->GetErrorMessage(szErrText, cErrTextSize))
				{
					TRACE(_T("EXCEPTION: CXTPReportControl::Paste() - %s\n"), szErrText);
				}
				pE->Delete();
			}
			catch(...)
			{
				TRACE(_T("EXCEPTION: CXTPReportControl::Paste() - Unhandled Exception!\n"));
			}

			//*********
			ar.Close(); // detach from file
			fileSahred.Detach(); //detach from data
			::GlobalUnlock(hPasteData); // unlock data
		}
	}

	UINT uCF_TText = sizeof(TCHAR) == 2 ? CF_UNICODETEXT : CF_TEXT;

	if (bTryPasteFromText && ::IsClipboardFormatAvailable(uCF_TText))
	{
		// Try to get text data from the clipboard
		HGLOBAL hglbPaste = ::GetClipboardData(uCF_TText);

		// Import Text data into the control
		if (hglbPaste != NULL)
		{
			TCHAR* lpszClipboard = (TCHAR*)GlobalLock(hglbPaste);
			BOOL bRead = FALSE;
		#if _XTPLIB_VERSION_PREFIX == 1502	 
			bRead = _ReadRecordsFromText(lpszClipboard, arRecords);
		#else
			bRead = _ReadRecodsFromText(lpszClipboard, arRecords);
		#endif
			if (!bRead)
			{
				arRecords.RemoveAll();
			}
			::GlobalUnlock(hglbPaste);
		}
	}

	::CloseClipboard();
	//////////////////////////////////////////////////////////////////////////

	CUpdateContext updateContext(this);

	// Add and Populate records
	CXTPReportRow* pRow = GetFocusedRow();
	if (pRow == NULL)
		return;

	int n = pRow->GetRecord()->GetIndex();
	int nRecordsCount = arRecords.GetCount();
	if (nRecordsCount > 0) {
		for (int i = nRecordsCount - 1; i >= 0; i--) {
			CXTPReportRecord* pRecord = arRecords.GetAt(i);
			if (pRecord) {
				CMDTARGET_ADDREF(pRecord);
				if (m_bAdd)
					GetRecords()->Add(arRecords.GetAt(i));
				else
					GetRecords()->InsertAt(n, arRecords.GetAt(i));
			}
		}
		Populate();
		_SelectRows(&arRecords);
	}
	m_bAdd = false;
}
Esempio n. 7
-1
void CMedic::MedicSearchOutDate()
{
	CMainFrame *p = (CMainFrame *)AfxGetMainWnd();
	CXTPReportControl *pReport = p->m_wndReportCtrl;
	CXTPReportRecords *pRecords = pReport->GetRecords();
	pRecords->RemoveAll();
	

	CXTPReportRecord *pRecord;

	CMedicSet *pMedicSet = &p->medicSet;
	pMedicSet->m_strFilter = "";
	pMedicSet->Requery();
	CMedicManage ManMedic;
	CTime CurDate = CTime::GetCurrentTime();
	CString strPrice;
	while(!pMedicSet->IsEOF())
	{
		ManMedic.SetMedicSet(pMedicSet);
		CTime OutDate = ManMedic.GetOutDateTime();
		/*CString k = OutDate.Format(_T("%Y-%m-%d"));*/
		
		if (OutDate < CurDate)
		{
			pRecord = new CXTPReportRecord();
			pRecord->AddItem(new CXTPReportRecordItemText(pMedicSet->m_MedicID));
			pRecord->AddItem(new CXTPReportRecordItemText(pMedicSet->m_MedicName));
			pRecord->AddItem(new CXTPReportRecordItemText(pMedicSet->m_MedicType));
			CTime ProduceData = pMedicSet->m_ProduceDate;
			pRecord->AddItem(new CXTPReportRecordItemText(ProduceData.Format(_T("%Y-%m-%d"))));
			pRecord->AddItem(new CXTPReportRecordItemNumber(pMedicSet->m_MedicNumber));
			strPrice.Format("%.2f",pMedicSet->m_MedicPrice);
			pRecord->AddItem(new CXTPReportRecordItemText(strPrice));
			pRecord->AddItem(new CXTPReportRecordItemNumber(pMedicSet->m_GuarantPeriod));
			pRecord->AddItem(new CXTPReportRecordItemText(pMedicSet->m_ProduceCompany));
			pReport->AddRecord(pRecord);
		}
		pMedicSet->MoveNext();
	}
	pReport->Populate();
}