📄 managerview.cpp
字号:
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 + -