⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 selectmdbview.cpp

📁 一个可以读取Access数据库表的简单实例.可应用于办公室系统中.
💻 CPP
字号:
// SelectmdbView.cpp : 实现文件
//

#include "stdafx.h"
#include "ReadAdress.h"
#include "SelectmdbView.h"
#include ".\selectmdbview.h"

#include "macro.h"


// CSelectmdbView

IMPLEMENT_DYNCREATE(CSelectmdbView, CFormView)

CSelectmdbView::CSelectmdbView()
	: CFormView(CSelectmdbView::IDD)
{
}

CSelectmdbView::~CSelectmdbView()
{
}

void CSelectmdbView::DoDataExchange(CDataExchange* pDX)
{
	CFormView::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_LIST_Field, lstbxField);
	DDX_Control(pDX, IDC_COMBO_Table, cmbTable);
}

BEGIN_MESSAGE_MAP(CSelectmdbView, CFormView)
	//ON_BN_CLICKED(IDC_BUTTON1, OnBnClickedButton1)
	ON_BN_CLICKED(IDC_SelectMdb, OnBnClickedSelectmdb)
	ON_EN_CHANGE(IDC_EDIT_mdb, OnEnChangeEditmdb)
	ON_STN_CLICKED(IDC_STATIC_Note, OnStnClickedStaticNote)
	ON_LBN_SELCHANGE(IDC_LIST_Field, OnLbnSelchangeListField)
	ON_CBN_SELCHANGE(IDC_COMBO_Table, OnCbnSelchangeComboTable)
END_MESSAGE_MAP()


// CSelectmdbView 诊断

#ifdef _DEBUG
void CSelectmdbView::AssertValid() const
{
	CFormView::AssertValid();
}

void CSelectmdbView::Dump(CDumpContext& dc) const
{
	CFormView::Dump(dc);
}
#endif //_DEBUG


// CSelectmdbView 消息处理程序
/*
void CSelectmdbView::OnBnClickedButton1()
{
	// TODO: 在此添加控件通知处理程序代码
}
*/
void CSelectmdbView::OnBnClickedSelectmdb()
{
	// TODO: Add your control notification handler code here
	CString str = "Txt File(*.mdb)|*.mdb|All Files(*.*)|*.*||"  ;
	
	CFileDialog FileDlg ( TRUE , NULL , NULL , OFN_HIDEREADONLY , str ) ;
	
	if ( FileDlg.DoModal () != IDOK )
		return ;

	m_editPath = FileDlg.GetPathName () ;	
	GetDlgItem ( IDC_EDIT_mdb ) -> SetWindowText ( m_editPath ) ;


	//Open Ado Coonet
	GETAPP ( app ) ;
	if ( !app->Ado.Open_Connect ( m_editPath ) )
	{
		Show_Msg ( "无法打开数据库:%s!" ,m_editPath  ) ;	
		return ;
	}
	app->Ado.Set_OpenMode ( adOpenStatic ) ;

	//delete org combo.
	int n = cmbTable.GetCount() ;
    for ( int i = 0 ; i < n ; i ++ )
		cmbTable.DeleteString ( 0 ) ;

	//add all table to combo
	CStringArray ay ;
	app->Ado.Get_Table_Name_Array ( ay ) ;

	n = ay.GetCount () ;
	for ( int i = 0 ; i < n ; i ++ )
	{
		cmbTable.AddString ( ay[ i ] ) ;
	}
	cmbTable.SetCurSel ( 0 ) ;

	//fill listbox.
	OnCbnSelchangeComboTable() ;

}


void CSelectmdbView::OnEnChangeEditmdb()
{
	// TODO:  如果该控件是 RICHEDIT 控件,则它将不会
	// 发送该通知,除非重写 CFormView::OnInitDialog()
	// 函数并调用 CRichEditCtrl().SetEventMask(),
	// 同时将 ENM_CHANGE 标志“或”运算到掩码中。

	// TODO:  在此添加控件通知处理程序代码
	//AfxMessageBox ("") ;

}

void CSelectmdbView::OnInitialUpdate()
{
	CFormView::OnInitialUpdate();

	// TODO: 在此添加专用代码和/或调用基类
}

void CSelectmdbView::OnStnClickedStaticNote()
{
	// TODO: 在此添加控件通知处理程序代码
}

void CSelectmdbView::OnLbnSelchangeListField()
{
	GETAPP ( app ) ;

	// TODO: 在此添加控件通知处理程序代码
	int sel = lstbxField.GetCurSel() ;
	CString strField ;
	lstbxField.GetText ( sel , strField ) ;
	//AfxMessageBox ( strField ) ;

	//read table
	
	CString strLine , strOut ;
	_variant_t va ; 
	app->Ado.To_First () ;
	CStringArray ayString ;
	
	do
	{	
		va = app->Ado.Get_Item ( strField ) ;
		strLine = ( ( LPCSTR )( _bstr_t ) va ) ;

		if ( ! Compare ( ayString , strLine ) ) 
		{
			ayString.Add ( strLine ) ;
			strOut += strLine ;
			strOut += "\r\n" ;
			//strOut += "\n" ;
		}
		
	} while ( app->Ado.To_Next () ) ;

	CEdit& theEdit = app->gEditView->GetEditCtrl();
	theEdit.SetWindowText ( strOut ) ;

}

BOOL CSelectmdbView :: Compare ( CStringArray & ary , CString & str ) 
{
	int count = ary.GetCount() ;
	for ( int i = 0 ; i < count ; i ++ )
	{
		if ( ary [ i ].Compare ( str ) == 0 )	
			return TRUE ;
	}
	return FALSE ;
}

void CSelectmdbView::OnCbnSelchangeComboTable()
{
	GETAPP ( app ) ;


	int n = cmbTable.GetCurSel () ;
	CString strTable ;
	cmbTable.GetLBText ( n , strTable ) ;
	if ( strTable.IsEmpty() )
		return ;
	
	if ( ! app->Ado.Open_Table ( strTable ) )
	{
		Show_Msg ( "无法打开表:%s" , strTable ) ;
		return ;
	}
	
	m_Field_Num = app->Ado.Get_Field_Count () ;

	//delete all org listbox.
	n = lstbxField.GetCount () ;
	for ( int i = 0 ; i < n ; i ++ )
		lstbxField.DeleteString ( 0 ) ;

	//add new in listbox.
	CString strName ;
	for ( int i = 0 ; i < m_Field_Num ; i ++ )
	{
		app->Ado.Get_Field_Name ( i , strName ) ;
		lstbxField.AddString( strName ) ;


	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -