📄 financebankdlg.cpp
字号:
//现在在右边显示个数
if(i==0)
{
m_iBankAmount=i;
s.Format (L"%d",m_iBankAmount);
SetDlgItemText(IDC_BANK_AMOUNT_STATIC,s);//显示
MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
EndWaitCursor();
return ;
}
m_iBankAmount=i;
s.Format (L"%d",m_iBankAmount);
SetDlgItemText(IDC_BANK_AMOUNT_STATIC,s);//显示
}
EndWaitCursor();
}
void CFinanceBankDlg::OnBnClickedFinanceBankSearchBt()
{
// TODO: 在此添加控件通知处理程序代码
Search();
}
void CFinanceBankDlg::Kind ()
{
CString s;
int Length;
int i=0;
CFinanceBankKindDlg dlg;
if(dlg.DoModal ()==IDOK)
{
BeginWaitCursor();
m_cBankListCtrl.DeleteAllItems ();
if(m_pSet.IsOpen ())
m_pSet.Close ();
m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Bank order by bODate");
m_pSet.m_strFilter .Empty ();
m_pSet.Requery ();
if(m_pSet.IsEOF ())
{
m_iBankAmount=i;
s.Format (L"%d",m_iBankAmount);
SetDlgItemText(IDC_BANK_AMOUNT_STATIC,s);//显示
MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
m_pSet.Close ();
EndWaitCursor();
return ;
}
else
{
if(m_pSet.GetRecordCount ()==0)
{
m_iBankAmount=i;
s.Format (L"%d",m_iBankAmount);
SetDlgItemText(IDC_BANK_AMOUNT_STATIC,s);//显示
MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
m_pSet.Close ();
EndWaitCursor();
return ;
}
m_pSet.MoveFirst ();
while (!m_pSet.IsEOF ())
{
if(!(dlg.m_iKind==0&&m_pSet.m_bAction ==true||dlg.m_iKind ==1&&m_pSet.m_bAction ==false))
{
m_pSet.MoveNext ();
continue;
}
m_cBankListCtrl.InsertItem(i,m_pSet.m_bCardId ,0);
if(m_pSet.m_bAction ==true)
m_cBankListCtrl.SetItemText (i,1,L"存");
else
m_cBankListCtrl.SetItemText (i,1,L"取");
s.Format (L"%f",m_pSet.m_bLastLeft );
Length=s.GetLength ();
s.Delete (Length-4,4);
m_cBankListCtrl.SetItemText (i,2,s );
s.Format (L"%f",m_pSet.m_bAccount );
Length=s.GetLength ();
s.Delete (Length-4,4);
m_cBankListCtrl.SetItemText (i,3,s);
s.Format (L"%f",m_pSet.m_bLeft );
Length=s.GetLength ();
s.Delete (Length-4,4);
m_cBankListCtrl.SetItemText (i,4,s);
m_cBankListCtrl.SetItemText (i,5,FormatDate(m_pSet.m_bODate ) );
m_cBankListCtrl.SetItemText (i,6,FormatDate(m_pSet.m_bRDate ) );
m_cBankListCtrl.SetItemText (i,7,m_pSet.m_bRemark );
s.Format (L"%d",m_pSet.m_bId );
m_cBankListCtrl.SetItemText (i,8,s);
m_pSet.MoveNext ();
i++;
}
m_pSet.Close ();
if(i==0)
{
m_iBankAmount=i;
s.Format (L"%d",m_iBankAmount);
SetDlgItemText(IDC_BANK_AMOUNT_STATIC,s);//显示
MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
m_pSet.Close ();
EndWaitCursor();
return ;
}
//现在在右边显示个数
m_iBankAmount=i;
s.Format (L"%d",m_iBankAmount);
SetDlgItemText(IDC_BANK_AMOUNT_STATIC,s);//显示
}
EndWaitCursor();
}
}
void CFinanceBankDlg::OnBnClickedBankKindBt()
{
// TODO: 在此添加控件通知处理程序代码
Kind();
}
void CFinanceBankDlg::Add()
{
CString s;
int Length;
CFinanceBankAddDlg dlg;
if(dlg.DoModal ()==IDOK)
{
if(!theApp.m_db.CanTransact ())
{
//虽然不支持事务处理的数据库很少,但是我强硬地不允许这种情况出现
MessageBox(L"\n系统不支持事务处理,添加不成功!\n",L"错误", MB_ICONSTOP);
return ;
}
theApp.m_db.BeginTrans ();//开始事务处理
TRY
{
//先保存银行信息
m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Bank order by bODate");
m_pSet.m_strFilter.Empty ();
m_pSet.AddNew ();
m_pSet.m_bCardId =dlg.m_sCardId ;
if(dlg.m_bAction ==false)
m_pSet.m_bAction =true;
else
m_pSet.m_bAction =false;
m_pSet.m_bLastLeft =dlg.m_dLastleft ;
m_pSet.m_bAccount =dlg.m_dAccount ;
m_pSet.m_bLeft =dlg.m_dLeft ;
m_pSet.m_bODate =dlg.m_tODate ;
//登记日期,由系统生成
m_pSet.m_bRDate =CTime::GetCurrentTime();
m_pSet.m_bRemark =dlg.m_sRemark ;
m_pSet.Update ();
m_pSet.MoveLast ();
m_pSet.Close ();
//再保存现金信息,如果不是消费的话,则默认是流入或流出到现金的
double MoneyLast;
if(m_pCashSet.IsOpen ())
m_pCashSet.Close ();
m_pCashSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Cash order by cDate ASC");
m_pCashSet.m_strFilter .Empty ();
if(m_pCashSet.GetRecordCount ()==0)
MoneyLast=0;
else
{
m_pCashSet.MoveLast ();
MoneyLast=m_pCashSet.m_cAmount ;
}
//如果是存,则现金必须减少
if(dlg.m_bAction ==false)
MoneyLast-=dlg.m_dAccount ;
else //如果是取,则现金必然增多
MoneyLast+=dlg.m_dAccount ;
m_pCashSet.AddNew ();
m_pCashSet.m_cAmount =MoneyLast;
m_pCashSet.m_cDate =CTime::GetCurrentTime();
m_pCashSet.Update();
m_pCashSet.MoveLast ();
m_pCashSet.Close ();
theApp.m_db.CommitTrans ();//添加成功了
}
CATCH_ALL(e)
{
theApp.m_db.Rollback ();
MessageBox(L"\n事务处理出错,添加失败!\n",L"错误", MB_ICONSTOP);
return;
}
END_CATCH_ALL
//添加成功了,就要在列表中显示出来
m_cBankListCtrl.InsertItem(0,dlg.m_sCardId ,0);
if(dlg.m_bAction ==false)
m_cBankListCtrl.SetItemText (0,1,L"存");
else
m_cBankListCtrl.SetItemText (0,1,L"取");
s.Format (L"%f",dlg.m_dLastleft );
Length=s.GetLength ();
s.Delete (Length-4,4);
m_cBankListCtrl.SetItemText (0,2,s );
s.Format (L"%f",dlg.m_dAccount );
Length=s.GetLength ();
s.Delete (Length-4,4);
m_cBankListCtrl.SetItemText (0,3,s);
s.Format (L"%f",dlg.m_dLeft );
Length=s.GetLength ();
s.Delete (Length-4,4);
m_cBankListCtrl.SetItemText (0,4,s);
m_cBankListCtrl.SetItemText (0,5,FormatDate(dlg.m_tODate ) );
m_cBankListCtrl.SetItemText (0,6,FormatDate(CTime::GetCurrentTime()) );
m_cBankListCtrl.SetItemText (0,7,dlg.m_sRemark );
s.Format (L"%d",m_pSet.m_bId );
m_cBankListCtrl.SetItemText (0,8,s);
//然后再在个数中加一,显示给用户
m_iBankAmount++;
s.Format (L"%d",m_iBankAmount);
SetDlgItemText(IDC_BANK_AMOUNT_STATIC,s);//显示
}
}
void CFinanceBankDlg::OnBnClickedFinanceBankAddBt()
{
// TODO: 在此添加控件通知处理程序代码
Add();
}
void CFinanceBankDlg::Update ()
{
CString s;
int Length;
POSITION pos = m_cBankListCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
{
MessageBox(L"你没有选择要修改的银行卡操作\n请在列表中选择要修改的银行卡操作!",L"提示",MB_ICONEXCLAMATION);
return ;//没有选择表项则不用做下面的事情
}
else
{
if(!theApp.m_db.CanTransact ())
{
//虽然不支持事务处理的数据库很少,但是我强硬地不允许这种情况出现
MessageBox(L"\n系统不支持事务处理,修改不成功!\n",L"错误", MB_ICONSTOP);
return ;
}
int nItem = m_cBankListCtrl.GetNextSelectedItem(pos);//列表中的项目序号也即数据库中的编号
//下面获取该表项的数据,用于在修改对话框中显示
int Id=_ttol(m_cBankListCtrl.GetItemText (nItem,8));
if(m_pSet.IsOpen ())
m_pSet.Close ();
m_pSet.Open ();
m_pSet.m_strFilter .Empty ();
m_pSet.MoveFirst ();
while(!m_pSet.IsEOF ())
{
if(m_pSet.m_bId ==Id)//说明找到了相应的那个字段
{
m_iFinanceBank_Id=m_pSet.m_bId ;
m_sFinanceBank_CardId=m_pSet.m_bCardId ;
m_bFinanceBank_Action=m_pSet.m_bAction ;
m_dFinanceBank_Lastleft=m_pSet.m_bLastLeft ;
m_dFinanceBank_Account=m_pSet.m_bAccount ;
m_dFinanceBank_Left=m_pSet.m_bLeft ;
m_tFinanceBank_ODate=m_pSet.m_bODate ;
m_tFinanceBank_RDate=m_pSet.m_bRDate ;
m_sFinanceBank_Remark=m_pSet.m_bRemark ;
break;
}
m_pSet.MoveNext ();
}
m_pSet.Close ();//记得要关闭!
//下面弹出修改对话框,初始化数据由上面部分提供
CFinanceBankUpdateDlg dlg;
if(dlg.DoModal ()!=IDOK)
{
return ;//万一用户没有输入正确信息,则退出,不给修改
}
theApp.m_db.BeginTrans ();//开始事务处理
TRY
{
//先保存银行信息
m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Bank order by bODate");
m_pSet.m_strFilter.Empty ();
m_pSet.MoveFirst ();//刚开始移动到第一个位置
while(!m_pSet.IsEOF ())
{
if(m_pSet.m_bId ==m_iFinanceBank_Id)
{
m_pSet.Edit ();
m_pSet.m_bCardId =dlg.m_sCardId ;
if(dlg.m_bAction ==false)
m_pSet.m_bAction =true;
else
m_pSet.m_bAction =false;
m_pSet.m_bLastLeft =dlg.m_dLastleft ;
m_pSet.m_bAccount =dlg.m_dAccount ;
m_pSet.m_bLeft =dlg.m_dLeft ;
m_pSet.m_bODate =dlg.m_tODate ;
//登记日期,由系统生成
m_pSet.m_bRDate =CTime::GetCurrentTime();
m_pSet.m_bRemark =dlg.m_sRemark ;
m_pSet.Update ();
m_pSet.Requery ();
m_pSet.MoveNext ();
break;
}
m_pSet.MoveNext ();
}
m_pSet.Close ();
//再保存现金信息,如果不是消费的话,则默认是流入或流出到现金的
double MoneyLast;
if(m_pCashSet.IsOpen ())
m_pCashSet.Close ();
m_pCashSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Cash order by cDate ASC");
m_pCashSet.m_strFilter .Empty ();
if(m_pCashSet.GetRecordCount ()==0)
MoneyLast=0;
else
{
m_pCashSet.MoveLast ();
//首先要对现金初始化
MoneyLast=m_pCashSet.m_cAmount ;
}
if(m_bFinanceBank_Action==true)//如果本来是存的,则必须把原来的钱“退出来”
MoneyLast+=m_dFinanceBank_Account;
else
MoneyLast-=m_dFinanceBank_Account;//否则必须把上次取的钱“还回去”
//如果是此次存,则现金必须减少
if(dlg.m_bAction ==false)
MoneyLast-=dlg.m_dAccount ;
else //如果是取,则现金必然增多
MoneyLast+=dlg.m_dAccount ;
m_pCashSet.AddNew ();
m_pCashSet.m_cAmount =MoneyLast;
m_pCashSet.m_cDate =CTime::GetCurrentTime();
m_pCashSet.Update();
m_pCashSet.MoveLast ();
m_pCashSet.Close ();
theApp.m_db.CommitTrans ();//修改成功了
}
CATCH_ALL(e)
{
theApp.m_db.Rollback ();
MessageBox(L"\n事务处理出错,修改失败!\n",L"错误", MB_ICONSTOP);
return;
}
END_CATCH_ALL
//修改成功了,就要把新的在列表中显示出来,同时去掉旧的
//先去掉旧的
m_cBankListCtrl.DeleteItem (nItem);
//再添加新的
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -