📄 financeborrowdlg.cpp
字号:
m_sFinanceBorrow_Action=m_pSet.m_bAction;
m_dFinanceBorrow_Amount=m_pSet.m_bAmount ;
if(m_pSet.m_bAction==L"借入"||m_pSet.m_bAction==L"借出")
{
//借入借出的时候才有开始生效和结束生效时间
m_tFinanceBorrow_StartDate=m_pSet.m_bStartDate ;
m_tFinanceBorrow_EndDate=m_pSet.m_bEndDate ;
}
else
{ //否则用系统日期代替,千万不要用1970年。。。
m_tFinanceBorrow_StartDate=CTime::GetCurrentTime();
m_tFinanceBorrow_EndDate=CTime::GetCurrentTime() ;
}
m_tFinanceBorrow_Date=m_pSet.m_bDate ;
m_dFinanceBorrow_MoneyLeft=m_pSet.m_bMoneyLeft ;
m_sFinanceBorrow_Remark=m_pSet.m_bRemark ;
break;
}
m_pSet.MoveNext ();
}
m_pSet.Close ();//记得要关闭!
//下面弹出修改对话框,初始化数据由上面部分提供
CFinanceBorrowUpdateDlg dlg;
if(dlg.DoModal ()!=IDOK)
{
return ;//万一用户没有输入正确信息,则退出,不给修改
}
theApp.m_db.BeginTrans ();//开始事务处理
TRY
{
//先添加借贷表
m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,L"Select * from Borrow order by bDate");
m_pSet.m_strFilter.Empty ();
m_pSet.MoveFirst ();//刚开始移动到第一个位置
while(!m_pSet.IsEOF ())
{
if(m_pSet.m_bId ==m_iFinanceBorrow_Id)
{
m_pSet.Edit ();
m_pSet.m_bOtherName =dlg.m_sOtherName ;
m_pSet.m_bAction =dlg.m_sAction ;
m_pSet.m_bAmount =dlg.m_dAmount ;
if(dlg.m_sAction ==L"借入"||dlg.m_sAction ==L"借出")
{
m_pSet.m_bStartDate =dlg.m_tStartDate ;
m_pSet.m_bEndDate =dlg.m_tEndDate ;
}
m_pSet.m_bDate =dlg.m_tDate ;
m_pSet.m_bMoneyLeft =dlg.m_dMoneyLeft ;
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_sFinanceBorrow_Action==L"借出"||m_sFinanceBorrow_Action==L"还出")
MoneyLast+=m_dFinanceBorrow_Amount;//把借出或还出的钱“吐”出来,重新入现金
else
MoneyLast-=m_dFinanceBorrow_Amount;
if(dlg.m_sAction ==L"借出"||dlg.m_sAction ==L"还出")//都是从现金里要钱
MoneyLast-=dlg.m_dAmount ;
else
MoneyLast+=dlg.m_dAmount ;
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_cBorrowListCtrl.DeleteItem (nItem);
//再添加新的
m_cBorrowListCtrl.InsertItem(nItem,dlg.m_sOtherName ,0);
m_cBorrowListCtrl.SetItemText (nItem,1,dlg.m_sAction );
s.Format (L"%f",dlg.m_dAmount );
Length=s.GetLength ();
s.Delete (Length-4,4);
m_cBorrowListCtrl.SetItemText (nItem,2,s );
m_cBorrowListCtrl.SetItemText (nItem,5,FormatDate(dlg.m_tDate ) );
if(dlg.m_sAction ==L"借入"||dlg.m_sAction ==L"借出")
{
//只有在借入借出的时候不显示仍欠余额但是要显示有效日期
m_cBorrowListCtrl.SetItemText (nItem,6,L"");
m_cBorrowListCtrl.SetItemText (nItem,3,FormatDate(dlg.m_tStartDate ));
m_cBorrowListCtrl.SetItemText (nItem,4,FormatDate(dlg.m_tEndDate ) );
}
else
{
s.Format (L"%f",dlg.m_dMoneyLeft );
Length=s.GetLength ();
s.Delete (Length-4,4);
m_cBorrowListCtrl.SetItemText (nItem,6,s);
m_cBorrowListCtrl.SetItemText (nItem,3,L"");
m_cBorrowListCtrl.SetItemText (nItem,4,L"");
}
m_cBorrowListCtrl.SetItemText (nItem,7,dlg.m_sRemark );
s.Format (L"%d",m_iFinanceBorrow_Id );
m_cBorrowListCtrl.SetItemText (nItem,8,s);
}
}
void CFinanceBorrowDlg::OnBnClickedFinanceBorrowUpdateBt()
{
// TODO: 在此添加控件通知处理程序代码
Update();
}
void CFinanceBorrowDlg::Delete ()
{
POSITION pos = m_cBorrowListCtrl.GetFirstSelectedItemPosition();
if (pos == NULL)
{
MessageBox(L"\n你没有选中任何一个借贷,不可以删除!\n",L"提示",MB_ICONEXCLAMATION);
}
else
{
if(MessageBox(L"\n此操作将永久删除该项,确定吗?\n",L"删除提醒",MB_OKCANCEL|MB_ICONQUESTION|MB_DEFBUTTON2)==IDCANCEL)
return ;
while (pos)
{
int nItem = m_cBorrowListCtrl.GetNextSelectedItem(pos);
CString str;
str="Select * from Borrow order by bDate";
m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,str);
//获取该单词
int m_iId;
m_iId=_ttol(m_cBorrowListCtrl.GetItemText (nItem,8));
m_pSet.m_strFilter.Empty ();
m_pSet.MoveFirst ();//刚开始移动到第一个位置
while(!m_pSet.IsEOF ())
{
if(m_iId ==m_pSet.m_bId )
{
m_pSet.Delete ();
break;
}
m_pSet.MoveNext ();
}
if(!m_pSet.IsDeleted ())
{
MessageBox(L"\n删除失败!\n",L"错误", MB_ICONSTOP);
return ;
}
m_pSet.MoveNext ();
//数据库删除成功后就删除列表了
m_cBorrowListCtrl.DeleteItem (nItem);
m_pSet.Close ();
//现在在右边显示个数
m_iBorrowAmount--;
CString s;
s.Format (L"%d",m_iBorrowAmount);
SetDlgItemText(IDC_BORROW_AMOUNT_STATIC,s);//显示
}
}
}
void CFinanceBorrowDlg::OnBnClickedFinanceBorrowDeleteBt()
{
// TODO: 在此添加控件通知处理程序代码
Delete();
}
void CFinanceBorrowDlg::Search()
{
BeginWaitCursor();
int i=0;
int Length;
CString s;
CString SearchTime;
CString ODate;
CString StartDate;
CString EndDate;
CString str;
CFinanceBorrowSearchDlg dlg;
if(dlg.DoModal ()==IDOK)
{
m_cBorrowListCtrl.DeleteAllItems ();
switch(dlg.m_iItem )
{
case 0:
case 1:
if(m_pSet.IsOpen ())
m_pSet.Close ();
str="Select * from Borrow where ";
if(dlg.m_iItem==0)
str+="bOtherName";
else
str+="bAmount";
str+=" like '%";
str+=dlg.m_sKeyWord ;
str+="%' order by bDate";
m_pSet.Open (AFX_DB_USE_DEFAULT_TYPE,str);
m_pSet.m_strFilter .Empty ();
m_pSet.Requery ();
if(m_pSet.IsEOF ())
{
m_iBorrowAmount=i;
s.Format (L"%d",m_iBorrowAmount);
SetDlgItemText(IDC_BORROW_AMOUNT_STATIC,s);//显示
MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
m_pSet.Close ();
EndWaitCursor();
return ;
}
else
{
if(m_pSet.GetRecordCount ()==0)
{
m_iBorrowAmount=i;
s.Format (L"%d",m_iBorrowAmount);
SetDlgItemText(IDC_BORROW_AMOUNT_STATIC,s);//显示
MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
m_pSet.Close ();
EndWaitCursor();
return ;
}
m_pSet.MoveFirst ();
while (!m_pSet.IsEOF ())
{
m_cBorrowListCtrl.InsertItem(i,m_pSet.m_bOtherName ,0);
m_cBorrowListCtrl.SetItemText (i,1,m_pSet.m_bAction );
s.Format (L"%f",m_pSet.m_bAmount );
Length=s.GetLength ();
s.Delete (Length-4,4);
m_cBorrowListCtrl.SetItemText (i,2,s );
m_cBorrowListCtrl.SetItemText (i,5,FormatDate(m_pSet.m_bDate ) );
if(m_pSet.m_bAction ==L"借入"||m_pSet.m_bAction ==L"借出")
{//当借入借出的时候,不用显示扔欠余额,但是要显示有效日期
m_cBorrowListCtrl.SetItemText (i,6,L"");
m_cBorrowListCtrl.SetItemText (i,3,FormatDate(m_pSet.m_bStartDate ));
m_cBorrowListCtrl.SetItemText (i,4,FormatDate(m_pSet.m_bEndDate ) );
}
else//否则,刚好相反
{
s.Format (L"%f",m_pSet.m_bMoneyLeft);
Length=s.GetLength ();
s.Delete (Length-4,4);
m_cBorrowListCtrl.SetItemText (i,6,s);
m_cBorrowListCtrl.SetItemText (i,3,L"");
m_cBorrowListCtrl.SetItemText (i,4,L"");
}
m_cBorrowListCtrl.SetItemText (i,7,m_pSet.m_bRemark );
s.Format (L"%d",m_pSet.m_bId );
m_cBorrowListCtrl.SetItemText (i,8,s);
i++;
m_pSet.MoveNext ();
}
}
m_pSet.Close ();
break;
case 2://
case 3://
SearchTime=DateToString(dlg.m_tSearchDate );
if(m_pSet.IsOpen ())
m_pSet.Close ();
m_pSet.Open ();
m_pSet.m_strFilter .Empty ();
m_pSet.Requery ();
if(m_pSet.GetRecordCount ()==0)
{
m_iBorrowAmount=i;
s.Format (L"%d",m_iBorrowAmount);
SetDlgItemText(IDC_BORROW_AMOUNT_STATIC,s);//显示
MessageBox(L"\n不存在这样的记录!\n",L"提示",MB_ICONEXCLAMATION);
m_pSet.Close ();
EndWaitCursor();
return ;
}
m_pSet.MoveFirst ();
while (!m_pSet.IsEOF ())
{
//在这里来判断可以轻松地跳过CTime与CString的差别
if(dlg.m_iItem ==2)//查询动作时间
{
ODate=DateToString(m_pSet.m_bDate );
if(ODate==SearchTime)
{
m_cBorrowListCtrl.InsertItem(i,m_pSet.m_bOtherName ,0);
m_cBorrowListCtrl.SetItemText (i,1,m_pSet.m_bAction );
s.Format (L"%f",m_pSet.m_bAmount );
Length=s.GetLength ();
s.Delete (Length-4,4);
m_cBorrowListCtrl.SetItemText (i,2,s );
m_cBorrowListCtrl.SetItemText (i,5,FormatDate(m_pSet.m_bDate ) );
if(m_pSet.m_bAction ==L"借入"||m_pSet.m_bAction ==L"借出")
{//当借入借出的时候,不用显示扔欠余额,但是要显示有效日期
m_cBorrowListCtrl.SetItemText (i,6,L"");
m_cBorrowListCtrl.SetItemText (i,3,FormatDate(m_pSet.m_bStartDate ));
m_cBorrowListCtrl.SetItemText (i,4,FormatDate(m_pSet.m_bEndDate ) );
}
else//否则,刚好相反
{
s.Format (L"%f",m_pSet.m_bMoneyLeft);
Length=s.GetLength ();
s.Delete (Length-4,4);
m_cBorrowListCtrl.SetItemText (i,6,s);
m_cBorrowListCtrl.SetItemText (i,3,L"");
m_cBorrowListCtrl.SetItemText (i,4,L"");
}
m_cBorrowListCtrl.SetItemText (i,7,m_pSet.m_bRemark );
s.Format (L"%d",m_pSet.m_bId );
m_cBorrowListCtrl.SetItemText (i,8,s);
i++;
}
}
else
{
StartDate=DateToString(m_pSet.m_bStartDate );
EndDate=DateToString(m_pSet.m_bEndDate );
if(StartDate<=SearchTime&&EndDate>=SearchTime)
{
m_cBorrowListCtrl.InsertItem(i,m_pSet.m_bOtherName ,0);
m_cBorrowListCtrl.SetItemText (i,1,m_pSet.m_bAction );
s.Format (L"%f",m_pSet.m_bAmount );
Length=s.GetLength ();
s.Delete (Length-4,4);
m_cBorrowListCtrl.SetItemText (i,2,s );
m_cBorrowListCtrl.SetItemText (i,5,FormatDate(m_pSet.m_bDate ) );
if(m_pSet.m_bAction ==L"借入"||m_pSet.m_bAction ==L"借出")
{//当借入借出的时候,不用显示扔欠余额,但是要显示有效日期
m_cBorrowListCtrl.SetItemText (i,6,L"");
m_cBorrowListCtrl.SetItemText (i,3,FormatDate(m_pSet.m_bStartDate ));
m_cBorrowListCtrl.SetItemText (i,4,FormatDate(m_pSet.m_bEndDate ) );
}
else//否则,刚好相反
{
s.Format (L"%f",m_pSet.m_bMoneyLeft);
Length=s.GetLength ();
s.Delete (Length-4,4);
m_cBorrowListCtrl.SetItemText (i,6,s);
m_cBorrowListCtrl.SetItemText (i,3,L"");
m_cBorrowListCtrl.SetItemText (i,4,L"");
}
m_cBorrowListCtrl.SetItemText (i,7,m_pSet.m_bRemark );
s.Format (L"%d",m_pSet.m_bId );
m_cBorrowListCtrl.SetItemText (i,8,s);
i++;
}
}
m_pSet.MoveNext ();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -