16,471
社区成员
发帖
与我相关
我的任务
分享
#pragma once
class COrderSet;
class CDBSampleDoc;
class COrderView:public CRecordView
{
DECLARE_DYNCREATE(COrderView)
protected:
virtual ~COrderView(){}
virtual void DoDataExchange(CDataExchange* pDX);
virtual void OnInitialUpdate();
public:
enum{ IDD = IDD_ORDERS_FORM };
COrderSet* m_pSet;
CDBSampleDoc* GetDocument() const
{
return reinterpret_cast<CDBSampleDoc*>(m_pDocument);
}
COrderSet* GetRecordSet();
COrderView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
};
#include "stdafx.h"
#include "DBSample.h"
#include "OrderSet.h"
#include "DBSampleDoc.h"
#include "OrderView.h"
IMPLEMENT_DYNCREATE(COrderView, CRecordView)
COrderView::COrderView()
: CRecordView(COrderView::IDD),m_pSet(NULL)
{
// TODO: 在此处添加构造代码
}
void COrderView::DoDataExchange(CDataExchange* pDX)
{
CRecordView::DoDataExchange(pDX);
// 可以在此处插入 DDX_Field* 函数以将控件“连接”到数据库字段,例如
// DDX_FieldText(pDX, IDC_MYEDITBOX, m_pSet->m_szColumn1, m_pSet);
// DDX_FieldCheck(pDX, IDC_MYCHECKBOX, m_pSet->m_bColumn2, m_pSet);
// 有关更多信息,请参阅 MSDN 和 ODBC 示例
DDX_FieldText(pDX,IDC_ORDERID,m_pSet ->m_OrderDetailsOrderID,m_pSet);
DDX_FieldText(pDX,IDC_CUSTOMERID,m_pSet ->m_OrdersCustomerID,m_pSet);
DDX_FieldText(pDX,IDC_PRODUCTID,m_pSet ->m_OrderDetailsProductID,m_pSet);
DDX_FieldText(pDX,IDC_QUANTITY,m_pSet ->m_OrderDetailsQuantity,m_pSet);
}
#ifdef _DEBUG
void COrderView::AssertValid() const
{
CRecordView::AssertValid();
}
void COrderView::Dump(CDumpContext& dc) const
{
CRecordView::Dump(dc);
}
#endif
COrderset* COrderView::GetRecordset()
{
ASSERT(m_pSet != NULL);
return m_pSet;
}
CRecordset* COrderView::OnGetRecordset()
{
return m_pSet;
}
// CProductSet.cpp : CProductSet 类的实现
//
#include "stdafx.h"
#include "DBSample.h"
#include "CProductSet.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CProductSet 实现
// 代码生成在 2011年8月5日 星期五, 12:32
IMPLEMENT_DYNAMIC(CProductSet, CRecordset)
CProductSet::CProductSet(CDatabase* pdb)
: CRecordset(pdb)
{
m_ProductID = 0;
m_ProductName = L"";
m_SupplierID = 0;
m_CategoryID = 0;
m_QuantityPerUnit = L"";
m_UnitPrice = 0.0;
m_UnitsInStock = 0;
m_UnitsOnOrder = 0;
m_ReorderLevel = 0;
m_Discontinued = FALSE;
m_nFields = 10;
m_nDefaultType = snapshot;
}
//#error 安全问题:连接字符串可能包含密码。
// 此连接字符串中可能包含明文密码和/或其他重要
// 信息。请在查看完此连接字符串并找到所有与安全
// 有关的问题后移除 #error。可能需要将此密码存
// 储为其他格式或使用其他的用户身份验证。
CString CProductSet::GetDefaultConnect()
{
return _T("DSN=Northwind;DBQ=D:\\Northwind.mdb;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;UID=admin;");
//return _T("ODBC;");//自己选择数据源
}
CString CProductSet::GetDefaultSQL()
{
return _T("[Products]");
}
void CProductSet::DoFieldExchange(CFieldExchange* pFX)
{
pFX->SetFieldType(CFieldExchange::outputColumn);
// RFX_Text() 和 RFX_Int() 这类宏依赖的是
// 成员变量的类型,而不是数据库字段的类型。
// ODBC 尝试自动将列值转换为所请求的类型
RFX_Long(pFX, _T("[ProductID]"), m_ProductID);
RFX_Text(pFX, _T("[ProductName]"), m_ProductName);
RFX_Long(pFX, _T("[SupplierID]"), m_SupplierID);
RFX_Long(pFX, _T("[CategoryID]"), m_CategoryID);
RFX_Text(pFX, _T("[QuantityPerUnit]"), m_QuantityPerUnit);
RFX_Double(pFX, _T("[UnitPrice]"), m_UnitPrice);
RFX_Int(pFX, _T("[UnitsInStock]"), m_UnitsInStock);
RFX_Int(pFX, _T("[UnitsOnOrder]"), m_UnitsOnOrder);
RFX_Int(pFX, _T("[ReorderLevel]"), m_ReorderLevel);
RFX_Bool(pFX, _T("[Discontinued]"), m_Discontinued);
}
/////////////////////////////////////////////////////////////////////////////
// CProductSet 诊断
#ifdef _DEBUG
void CProductSet::AssertValid() const
{
CRecordset::AssertValid();
}
void CProductSet::Dump(CDumpContext& dc) const
{
CRecordset::Dump(dc);
}
#endif //_DEBUG