topical media & game development
basic-program-solutions-19-Ch19-Soln-3-StockView.c
? /
basic-program-solutions-19-Ch19-Soln-3-StockView.c
// CStockView implementation
include <stdafx.h>
include <resource.h>
include <OurConstants.h>
include <Mainfrm.h>
include <StockView.h>
include <StockSet.h>
include <DBSampleDoc.h>
IMPLEMENT_DYNCREATE(CStockView, CRecordView)
CStockView::CStockView(): CRecordView(CStockView::IDD), m_pSet(NULL)
, m_StockStatus(_T(""))
{
}
CStockSet* CStockView::GetRecordset()
{
ASSERT(m_pSet != NULL);
return m_pSet;
}
CRecordset* CStockView::OnGetRecordset()
{
return m_pSet;
}
void CStockView::DoDataExchange(CDataExchange* pDX)
{
CRecordView::DoDataExchange(pDX);
m_StockStatus = "Situation normal";
long StockBalance = m_pSet->m_UnitsInStock - m_pSet->m_ReorderLevel;
if(m_pSet->m_ReorderLevel != 0)
{
if((StockBalance > 0) && (StockBalance < 11))
m_StockStatus = "*Warning: low stock*";
if(StockBalance < 1)
m_StockStatus = "**Urgent: reorder now**";
}
DDX_FieldText(pDX, IDC_STOCKNAME, m_pSet->m_ProductName, m_pSet);
DDX_FieldText(pDX, IDC_STOCKID, m_pSet->m_ProductID, m_pSet);
DDX_FieldText(pDX, IDC_STOCKUNITPRICE, m_pSet->m_UnitPrice, m_pSet);
DDX_FieldText(pDX, IDC_STOCKUNITSINSTOCK, m_pSet->m_UnitsInStock, m_pSet);
DDX_FieldText(pDX, IDC_STOCKREORDERLEVEL, m_pSet->m_ReorderLevel, m_pSet);
DDX_Text(pDX, IDC_STOCKSTATUS, m_StockStatus);
}
// COrderView diagnostics
ifdef _DEBUG
void CStockView::AssertValid() const
{
CRecordView::AssertValid();
}
void CStockView::Dump(CDumpContext& dc) const
{
CRecordView::Dump(dc);
}
endif //_DEBUG
BEGIN_MESSAGE_MAP(CStockView, CRecordView)
ON_BN_CLICKED(IDC_STOCKPRODUCTS, &CStockView::OnProducts)
END_MESSAGE_MAP()
void CStockView::OnProducts()
{
static_cast<CMainFrame*>(GetParentFrame())->SelectView(PRODUCT_VIEW);
}
void CStockView::OnInitialUpdate()
{
BeginWaitCursor();
CDBSampleDoc* pDoc = static_cast<CDBSampleDoc*>(GetDocument());
m_pSet = &(pDoc->m_StockSet);
m_pSet->m_pDatabase = pDoc->m_DBSampleSet.m_pDatabase;
// Set the current Product ID as the parameter
m_pSet->m_ProductIDparam = pDoc->m_DBSampleSet.m_ProductID;
// Filter on the Product ID field
m_pSet->m_strFilter = "ProductID = ?";
CRecordView::OnInitialUpdate();
if (m_pSet->IsOpen())
{
CString strTitle = m_pSet->m_pDatabase->GetDatabaseName();
CString strTable = m_pSet->GetTableName();
if (!strTable.IsEmpty())
strTitle += _T(":") + strTable;
GetDocument()->SetTitle(strTitle);
}
EndWaitCursor();
}
void CStockView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView)
{
if(bActivate)
{
CDBSampleDoc* pDoc = static_cast<CDBSampleDoc*>(GetDocument());
// Set current Product ID as parameter and requery the database
m_pSet->m_ProductIDparam = pDoc->m_DBSampleSet.m_ProductID;
m_pSet->Requery();
CRecordView::OnInitialUpdate();
}
CRecordView::OnActivateView(bActivate, pActivateView, pDeactiveView);
}
(C) Æliens
20/2/2008
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.