www.pudn.com > vcprossceADO.rar > MyDoc.cpp


// MyDoc.cpp : implementation of the CMyDoc class 
// 
 
#include "stdafx.h" 
#include "My.h" 
 
#include "MyDoc.h" 
 
#ifdef _DEBUG 
#define new DEBUG_NEW 
#undef THIS_FILE 
static char THIS_FILE[] = __FILE__; 
#endif 
 
///////////////////////////////////////////////////////////////////////////// 
// CMyDoc 
 
IMPLEMENT_DYNCREATE(CMyDoc, CDocument) 
 
BEGIN_MESSAGE_MAP(CMyDoc, CDocument) 
	//{{AFX_MSG_MAP(CMyDoc) 
	ON_COMMAND(ID_BROWSE, OnBrowse) 
	//}}AFX_MSG_MAP 
END_MESSAGE_MAP() 
 
///////////////////////////////////////////////////////////////////////////// 
// CMyDoc construction/destruction 
 
CMyDoc::CMyDoc() 
{ 
	// TODO: add one-time construction code here 
 
} 
 
CMyDoc::~CMyDoc() 
{ 
	::CoUninitialize(); 
} 
 
BOOL CMyDoc::OnNewDocument() 
{ 
	if (!CDocument::OnNewDocument()) 
		return FALSE; 
	::CoInitialize(NULL); 
   
	try 
	{ 
		// 创建Connection对象 
		m_pConnection.CreateInstance("ADODB.Connection"); 
		// 设置连接字符串,必须是BSTR型或者_bstr_t类型 
		_bstr_t strConnect ="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Address1.mdb;"; 
 
		//"driver={SQL Server}; Server=jyc;Database=Address;UID=sa;PWD=123456;"; 
		//"Provider=SQLOLEDB; Server=jyc;Database=Address;UID=sa;PWD=123456;"; 
		 
		//通过Jet数据引擎对Access 2000数据库的连接 
		//"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=Address1.mdb;"; 
 
		//提供DSN数据源对任何支持ODBC的数据库进行连接//"DSN=通讯录;"; 
		                                             //"Data Source=通讯录;";  
 
		 
		m_pConnection->Open(strConnect,"","",adModeUnknown); 
	} 
	// 捕捉异常 
	catch(_com_error e) 
	{ 
		// 显示错误信息 
		AfxMessageBox(e.Description()); 
	} 
 
	return TRUE; 
} 
 
 
 
///////////////////////////////////////////////////////////////////////////// 
// CMyDoc serialization 
 
void CMyDoc::Serialize(CArchive& ar) 
{ 
	if (ar.IsStoring()) 
	{ 
		// TODO: add storing code here 
	} 
	else 
	{ 
		// TODO: add loading code here 
	} 
} 
 
///////////////////////////////////////////////////////////////////////////// 
// CMyDoc diagnostics 
 
#ifdef _DEBUG 
void CMyDoc::AssertValid() const 
{ 
	CDocument::AssertValid(); 
} 
 
void CMyDoc::Dump(CDumpContext& dc) const 
{ 
	CDocument::Dump(dc); 
} 
#endif //_DEBUG 
 
///////////////////////////////////////////////////////////////////////////// 
// CMyDoc commands 
 
void CMyDoc::OnBrowse()  
{ 
	m_pRecordset.CreateInstance(__uuidof(Recordset)); 
	m_pRecordset->CursorLocation=adUseClient; 
	m_pRecordset->Open("select * from Address order by ID",m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);	 
	long it=m_pRecordset->RecordCount; 
	m_pRecordset->MoveFirst(); 
	CString m_ID,Name,HomePhone,MobilePhone,OfficePhone,Address,PostAddress,PostID,Remark; 
	str=""; 
	_variant_t var; 
	 
	try 
	{ 
    	while(!m_pRecordset->adoEOF) 
		{ 
 
     		var=m_pRecordset->GetCollect("ID"); 
        	if(var.vt==VT_NULL) 
        		m_ID=""; 
        	else 
	        	m_ID.Format("%d",var.iVal); 
 
        	var=m_pRecordset->GetCollect("Name"); 
        	if(var.vt==VT_NULL) 
     	    	Name=""; 
        	else 
	        	Name=(LPCTSTR)(_bstr_t)var;  //.bstrVal 
 
        	var=m_pRecordset->GetCollect("Home_Phone"); 
          	if(var.vt==VT_NULL) 
	        	HomePhone=""; 
        	else 
	        	HomePhone=(LPCTSTR)(_bstr_t)var; 
	 
         	var=m_pRecordset->GetCollect("Mobile_Phone"); 
        	if(var.vt==VT_NULL) 
         		MobilePhone=""; 
        	else 
            	MobilePhone=(LPCTSTR)(_bstr_t)var; 
 
        	var=m_pRecordset->GetCollect("Office_Phone"); 
        	if(var.vt==VT_NULL) 
        		OfficePhone=""; 
        	else 
     	    	OfficePhone=(LPCTSTR)(_bstr_t)var; 
	 
        	var=m_pRecordset->GetCollect("Address"); 
        	if(var.vt==VT_NULL) 
        		Address=""; 
        	else 
	        	Address=(LPCTSTR)(_bstr_t)var; 
 
        	var=m_pRecordset->GetCollect("Post_Address"); 
        	if(var.vt==VT_NULL) 
    	    	PostAddress=""; 
        	else 
    	    	PostAddress=(LPCTSTR)(_bstr_t)var; 
 
        	var=m_pRecordset->GetCollect("Post_ID"); 
        	if(var.vt==VT_NULL) 
	        	PostID=""; 
	        else 
	        	PostID=(LPCTSTR)(_bstr_t)var; 
 
        	var=m_pRecordset->GetCollect("Remark"); 
        	if(var.vt==VT_NULL) 
            	Remark=""; 
         	else 
	        	Remark=(LPCTSTR)(_bstr_t)var; 
 
	    	 str+=m_ID+Name+HomePhone+MobilePhone+OfficePhone+Address+PostAddress+PostID+Remark+'\n'; 
	     	 m_pRecordset->MoveNext(); 
		} 
	} 
	catch(_com_error* e) 
	{ 
        AfxMessageBox(e->ErrorMessage()); 
	} 
 
	UpdateAllViews(NULL); 
}