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

📄 managerview.cpp

📁 VC6数据库开发指南
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	else if(m_bIsMoney)
		m_moneySet.m_strSort=str;

	LoadDatabaseData(); // 更新列表框数据显示

	return;
}

//设置添加按钮状态
void CManagerView::OnUpdateAdd(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if(m_bIsOpen)
		pCmdUI->Enable(TRUE);
	else
		pCmdUI->Enable(FALSE);
}

//设置删除按钮状态
void CManagerView::OnUpdateDel(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if(m_bIsOpen)
		pCmdUI->Enable(TRUE);
	else
		pCmdUI->Enable(FALSE);
}

//设置修改按钮状态
void CManagerView::OnUpdateModify(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if(m_bIsOpen)
		pCmdUI->Enable(TRUE);
	else
		pCmdUI->Enable(FALSE);	
}

//处理数据库关闭
void CManagerView::OnFileClose() 
{
	// TODO: Add your command handler code here
	m_list.DeleteAllItems();//删除列表中的所有行

	//删除列表中的所有列
	while(m_list.DeleteColumn(0));

	m_bIsOpen=FALSE;
	m_bIsNewDatabase=FALSE;
	m_bIsAddress=FALSE;
	m_bIsMoney=FALSE;
	m_strTableName="";
}

//处理数据库打开
void CManagerView::OnFileOpen() 
{
	// TODO: Add your command handler code here
	CString	path;//文件路径
	
    CFileDialog	file(1, // 1-文件打开, 0-文件另存为
                         ".mdb|*.*",
						 NULL,
			OFN_OVERWRITEPROMPT ,
						 "Microsoft Access文件(*.mdb)|*.mdb|All Files (*.*)|*.*||",
						 NULL);

	if(file.DoModal()==IDOK)
	{
		path = file.GetPathName();//取得文件路径
	
	    m_strDatabaseName=path;//得到数据库文件的路径

	    m_list.DeleteAllItems();//删除列表中的所有行

	    //删除列表中的所有列
     	while(m_list.DeleteColumn(0));

	    m_bIsOpen=TRUE;
	    m_bIsNewDatabase=FALSE;
	    m_bIsAddress=FALSE;
	    m_bIsMoney=FALSE;
	    m_strTableName=_T("");

	    if(OpenDatabase())
		   LoadDatabaseData();
	}
}

//处理更新显示工具栏按钮
void CManagerView::OnUpdate() 
{
	// TODO: Add your command handler code here
	LoadDatabaseData();
}

//单击鼠标右键时显示快捷菜单
void CManagerView::OnContextMenu(CWnd* pWnd, CPoint point) 
{
	// TODO: Add your message handler code here
	if (point.x == -1 && point.y == -1)
	{
		CRect rect;
		GetClientRect(rect);
		ClientToScreen(rect);
		point = rect.TopLeft();
		point.Offset(5, 5);
	}

	CMenu menu;
	VERIFY(menu.LoadMenu(IDR_CONTEXT_MENU));//载入快捷菜单资源

	CMenu* pPopup = menu.GetSubMenu(0);
	ASSERT(pPopup != NULL);

	CWnd* pWndPopupOwner = this;//设置快捷菜单的主窗口

	while (pWndPopupOwner->GetStyle() & WS_CHILD)
		pWndPopupOwner = pWndPopupOwner->GetParent();

	pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,
		pWndPopupOwner);
}

//设置更新显示工具栏按钮状态
void CManagerView::OnUpdateUpdate(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if(m_bIsOpen)
		pCmdUI->Enable(TRUE);
	else
		pCmdUI->Enable(FALSE);	
}

//处理通讯录工具栏按钮命令
void CManagerView::OnAddress() 
{
	// TODO: Add your command handler code here
	char path[50];
    ::GetCurrentDirectory(50,path);
	strcat(path,"\\");
	m_strDatabaseName=_T(path);
	m_strDatabaseName+="Family.mdb";//得到数据库文件的路径

	m_list.DeleteAllItems();//删除列表中的所有行

	//删除列表中的所有列
	while(m_list.DeleteColumn(0));

	m_bIsOpen=FALSE;
	m_bIsNewDatabase=FALSE;

	//设置工具栏组框中的选项
    CMainFrame *pWnd=(CMainFrame *)AfxGetMainWnd();
	pWnd->m_wndComboBox.SelectString(0,"通讯录");

	if(OpenDatabase())
		LoadDatabaseData();
}

//设置通讯录工具栏按钮状态
void CManagerView::OnUpdateAddress(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if(m_bIsAddress)
		pCmdUI->SetCheck(TRUE);
	else
		pCmdUI->SetCheck(FALSE);
}

//更改帐簿记录
void CManagerView::ModifyMoney()
{
	CMoneySetup* dlg;
	int nItemIndex = -1;
	BOOL bFieldsHaveChanged = FALSE;


	// 如果选择了列表框中的某一行
	if((m_list.GetNextItem(-1,LVNI_SELECTED))!=-1)
	{
		try {
			if(!m_moneySet.IsOpen())
			   m_moneySet.Open();
			while((nItemIndex = m_list.GetNextItem(nItemIndex,LVNI_SELECTED))!=-1)
			{
				CString sqlSelect=
					CString("[合计]=")+
					CString(m_list.GetItemText(nItemIndex,3)); //设置查询条件
				if(m_moneySet.FindFirst(sqlSelect)) 
				{ 
					dlg=new CMoneySetup;
					dlg->m_date=m_moneySet.m_date;
					dlg->m_otherin=m_moneySet.m_otherIn;
					dlg->m_salaryin=m_moneySet.m_salaryIn;
					dlg->m_clothout=m_moneySet.m_clothOut;
					dlg->m_bigout=m_moneySet.m_bigOut;
					dlg->m_foodout=m_moneySet.m_foodOut;
					dlg->m_memo=m_moneySet.m_memo;
					if(dlg->DoModal()==IDOK)
					{
						m_moneySet.AddNew(); // 开始编辑数据库表
			            m_moneySet.m_date=dlg->m_date;
			            m_moneySet.m_salaryIn=dlg->m_salaryin;
			            m_moneySet.m_otherIn=dlg->m_otherin;
			            m_moneySet.m_clothOut=dlg->m_clothout;
			            m_moneySet.m_bigOut=dlg->m_bigout;
			            m_moneySet.m_foodOut=dlg->m_foodout;
						m_moneySet.m_memo=dlg->m_memo;
			            m_moneySet.m_sumIn=dlg->m_salaryin+dlg->m_otherin;
			            m_moneySet.m_sumOut=dlg->m_clothout+dlg->m_bigout+dlg->m_foodout;
			            m_moneySet.m_sumAll=m_moneySet.m_sumIn-m_moneySet.m_sumOut;
			            m_moneySet.Update(); // 储存修改
					}
					delete dlg; // 删除对话框
				}
				else
				{
					AfxMessageBox("内部错误\n\n在数据库中找不到指定记录\n或者数据库被损坏", MB_ICONSTOP );
				}
			}
			m_moneySet.Close(); // 关闭记录集
		}
		catch(CDaoException* e)
		{ 
			char szBuffer[256];
			CString strExceptDesc=
				CString("JET Database Engine Error:\n\n Error Code:")+
				CString(ltoa(e->m_pErrorInfo->m_lErrorCode,szBuffer,10))+
				CString("\nDescription:")+
				CString(e->m_pErrorInfo->m_strDescription);
			AfxMessageBox(strExceptDesc,MB_ICONEXCLAMATION);
			m_moneySet.Close();
			return;
		}
		if ( bFieldsHaveChanged )
		{
			LoadDatabaseData(); // 如果数据库被修改则更新列表框中的数据
		}
	}
	else 
	{ 
		AfxMessageBox("没有选择记录", MB_ICONEXCLAMATION);
	}
}

//添加帐簿记录
void CManagerView::AddMoney()
{
    CMoneySetup* dlg;
	dlg=new CMoneySetup;//创建对话框对象
	BOOL bFieldsHaveChanged = FALSE;

	try 
	{
		if(!m_moneySet.IsOpen())
			m_moneySet.Open();
		if(dlg->DoModal()==IDOK)
		{
			m_moneySet.AddNew(); // 开始编辑数据库
			m_moneySet.m_date=dlg->m_date;
			m_moneySet.m_salaryIn=dlg->m_salaryin;
			m_moneySet.m_otherIn=dlg->m_otherin;
			m_moneySet.m_clothOut=dlg->m_clothout;
			m_moneySet.m_bigOut=dlg->m_bigout;
			m_moneySet.m_foodOut=dlg->m_foodout;
			m_moneySet.m_memo=dlg->m_memo;
			m_moneySet.m_sumIn=dlg->m_salaryin+dlg->m_otherin;
			m_moneySet.m_sumOut=dlg->m_clothout+dlg->m_bigout+dlg->m_foodout;
			m_moneySet.m_sumAll=m_moneySet.m_sumIn-m_moneySet.m_sumOut;
			m_moneySet.Update(); // 存储编辑结果
			bFieldsHaveChanged = TRUE;//记录被改变 
		}
		delete dlg; // 删除对话框
	}
		
	catch(CDaoException* e)
	{ 
		char szBuffer[256];
		CString strExceptDesc=
			CString("JET Database Engine Error:\n\n Error Code:")+
			CString(ltoa(e->m_pErrorInfo->m_lErrorCode,szBuffer,10))+
			CString("\nDescription:")+
	    	CString(e->m_pErrorInfo->m_strDescription);
		AfxMessageBox(strExceptDesc,MB_ICONEXCLAMATION);
		m_moneySet.Close();
		return;
	}

	if ( bFieldsHaveChanged )
	{
		LoadDatabaseData(); // 如果记录被改变则更新列表框数据
	}
}

//删除帐簿记录
void CManagerView::DelMoney()
{
	BOOL bFieldsHaveChanged=FALSE;
	int nItemIndex=-1;

	if((m_list.GetNextItem(-1,LVNI_SELECTED))!=-1)
	{
		try {
			if(!m_moneySet.IsOpen())
				m_moneySet.Open();
			while((nItemIndex = m_list.GetNextItem(nItemIndex,LVNI_SELECTED))!=-1)
			{
				CString sqlSelect=
					CString("[合计]=")+
					CString(m_list.GetItemText(nItemIndex,3)); // 设置查询条件
				if(m_moneySet.FindFirst(sqlSelect))//根据查询条件定位记录 
				{ 
       				m_moneySet.Delete();//删除记录
					bFieldsHaveChanged=TRUE;//数据库表被改变
				}
				else
				{
					AfxMessageBox("内部错误\n\n数据库中不存在该记录\n或者数据库被损坏", MB_ICONSTOP );
				}
			}
			m_moneySet.Close(); // 关闭记录集
		}
		catch(CDaoException* e)
		{ 
			char szBuffer[256];
			CString strExceptDesc=
				CString("JET Database Engine Error:\n\n Error Code:")+
				CString(ltoa(e->m_pErrorInfo->m_lErrorCode,szBuffer,10))+
				CString("\nDescription:")+
				CString(e->m_pErrorInfo->m_strDescription);
			AfxMessageBox(strExceptDesc,MB_ICONEXCLAMATION);
			m_moneySet.Close();
			return;
		}
		if ( bFieldsHaveChanged )
		{
			LoadDatabaseData(); // 如果数据库表被改变则更新列表框数据
		}
	}
	else 
	{ 
		AfxMessageBox("没有选择记录", MB_ICONEXCLAMATION);
	}
}

//处理帐簿工具栏按钮命令
void CManagerView::OnMoney() 
{
	// TODO: Add your command handler code here
	char path[50];
    ::GetCurrentDirectory(50,path);
	strcat(path,"\\");
	m_strDatabaseName=_T(path);
	m_strDatabaseName+=_T("Family.mdb");//得到数据库文件的路径

	m_list.DeleteAllItems();//删除列表中的所有行

	//删除列表中的所有列
	while(m_list.DeleteColumn(0));

	m_bIsOpen=FALSE;

    CMainFrame *pWnd=(CMainFrame *)AfxGetMainWnd();
	pWnd->m_wndComboBox.SelectString(0,"帐簿");

	if(OpenDatabase())
		LoadDatabaseData();
}

//设置帐簿工具栏按钮状态
void CManagerView::OnUpdateMoney(CCmdUI* pCmdUI) 
{
	// TODO: Add your command update UI handler code here
	if(m_bIsMoney)
		pCmdUI->SetCheck(TRUE);
	else
		pCmdUI->SetCheck(FALSE);
	if(!m_bIsMoney && !m_bIsAddress)
		pCmdUI->Enable(FALSE);
}

void CManagerView::OnNewAddress()
{
	CString str;
    CMainFrame *pWnd=(CMainFrame *)AfxGetMainWnd();

	pWnd->m_wndComboBox.GetLBText(pWnd->m_wndComboBox.GetCurSel(),str);

	if(OpenDatabase())
		LoadDatabaseData();
}

void CManagerView::OnNewDatabase() 
{
	// TODO: Add your command handler code here
	closeDatabase(&m_pDatabase);
	OnFileClose();
	CDAOTableDlg dlg;
	dlg.DoModal();
}

⌨️ 快捷键说明

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