📄 ioview.cpp
字号:
// IOView.cpp : implementation file
//
#include "stdafx.h"
#include "FFMS.h"
#include "IOView.h"
#include "GeneralDef.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CIOView
IMPLEMENT_DYNCREATE(CIOView, CFormView)
CIOView::CIOView()
: CFormView(CIOView::IDD)
{
//{{AFX_DATA_INIT(CIOView)
m_dtIO = 0;
m_dbIOMon = 0.0f;
m_strIORmk = _T("");
m_nIOType = -1;
m_dbASSETMon = 0.0f;
m_dtASSET = 0;
m_strASSETRmk = _T("");
//}}AFX_DATA_INIT
}
CIOView::~CIOView()
{
}
void CIOView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CIOView)
DDX_Control(pDX, IDC_LIST_ASSET, m_listASSET);
DDX_Control(pDX, IDC_LIST_IO, m_listIO);
DDX_DateTimeCtrl(pDX, IDC_FNC_IODATE, m_dtIO);
DDX_Text(pDX, IDC_FNC_IOMON, m_dbIOMon);
DDX_Control(pDX, IDC_FNC_IONAME, m_strIOName);
DDX_Text(pDX, IDC_FNC_IORMK, m_strIORmk);
DDX_Control(pDX, IDC_FNC_IOUSER, m_strIOUser);
DDX_Radio(pDX, IDC_RADIO1, m_nIOType);
DDX_Control(pDX, IDC_ADODC1, m_adoCtrl);
DDX_Control(pDX, IDC_FNC_ASSETNAME, m_strASSETName);
DDX_Text(pDX, IDC_FNC_ASSETMON, m_dbASSETMon);
DDX_DateTimeCtrl(pDX, IDC_FNC_ASSETDATE, m_dtASSET);
DDX_Text(pDX, IDC_FNC_ASSETRMK, m_strASSETRmk);
DDX_Control(pDX, IDC_FNC_ASSETUSER, m_strASSETUser);
DDX_Control(pDX, IDC_ADODC3, m_adoAsset);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CIOView, CFormView)
//{{AFX_MSG_MAP(CIOView)
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
ON_BN_CLICKED(IDC_FNC_IOADD, OnFncIoadd)
ON_BN_CLICKED(IDC_FNC_IODEL, OnFncIodel)
ON_BN_CLICKED(IDC_FNC_IOFRS, OnFncIofrs)
ON_BN_CLICKED(IDC_FNC_ASSETADD, OnFncAssetadd)
ON_BN_CLICKED(IDC_FNC_ASSETDEL, OnFncAssetdel)
ON_BN_CLICKED(IDC_FNC_ASSETFRS, OnFncAssetfrs)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CIOView diagnostics
#ifdef _DEBUG
void CIOView::AssertValid() const
{
CFormView::AssertValid();
}
void CIOView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CIOView message handlers
void CIOView::InitControl()
{
DWORD dwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE;//|LVS_EX_UNDERLINEHOT
m_listIO.SetExtendedStyle(dwExStyle);
m_listIO.InsertColumn(0,"ID",LVCFMT_CENTER,80);
m_listIO.InsertColumn(1,"日期",LVCFMT_CENTER,100);
m_listIO.InsertColumn(2,"收入/支出",LVCFMT_CENTER,100);
m_listIO.InsertColumn(3,"名称",LVCFMT_CENTER,100);
m_listIO.InsertColumn(4,"使用者",LVCFMT_CENTER,100);
m_listIO.InsertColumn(5,"金额",LVCFMT_CENTER,100);
m_listIO.InsertColumn(6,"说明",LVCFMT_CENTER,120);
}
void CIOView::InsertIOCtrlItem(CString item0, CString item1, CString item2, CString item3, CString item4, CString item5,CString item6)
{
int nIndex=m_listIO.GetItemCount();
LV_ITEM lvItem;
lvItem.mask = LVIF_TEXT ;
lvItem.iItem = nIndex;
lvItem.iSubItem = 0;
lvItem.pszText = (char*)(LPCTSTR)item0;
m_listIO.InsertItem(&lvItem);
m_listIO.SetItemText(nIndex,1,item1);
m_listIO.SetItemText(nIndex,2,item2);
m_listIO.SetItemText(nIndex,3,item3);
m_listIO.SetItemText(nIndex,4,item4);
m_listIO.SetItemText(nIndex,5,item5);
m_listIO.SetItemText(nIndex,6,item6);
}
void CIOView::InitCtrlData()
{
if(!adoDB.IsOpen())
return;
m_listIO.DeleteAllItems();
CDStrs ioFields;
adoDB.ExecuteQuery("select * from FNC_IO order by io_date",ioFields);
for(int i=0;i<ioFields.size();i++)
{
CStrs strs=ioFields[i];
InsertIOCtrlItem(strs[0],strs[1],strs[2],strs[3],strs[4],strs[5],strs[6]);
}
}
void CIOView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
// TODO: Add your specialized code here and/or call the base class
InitControl();
InitASSET();
CString sql="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Finance;Data Source=(local)";
if(adoDB.Open(sql)==TRUE)
{
InitCtrlData();
InitAssetData();
}
}
void CIOView::OnRadio1()
{
// TODO: Add your control notification handler code here
m_adoCtrl.SetRecordSource("select * from MSG_IN");
m_adoCtrl.Refresh();
m_strIOName.SetListField("in_type");
m_strIOName.Refresh();
m_nIOType=0;
}
void CIOView::OnRadio2()
{
// TODO: Add your control notification handler code here
m_adoCtrl.SetRecordSource("select * from MSG_OUT");
m_adoCtrl.Refresh();
m_strIOName.SetListField("out_type");
m_strIOName.Refresh();
m_nIOType=1;
}
void CIOView::OnDraw(CDC* pDC)
{
// TODO: Add your specialized code here and/or call the base class
if(m_nIOType==0)
OnRadio1();
else
OnRadio2();
}
void CIOView::OnFncIoadd()
{
// TODO: Add your control notification handler code here
if(!adoDB.IsOpen())
{
AfxMessageBox("数据库未打开!");
return;
}
if(!UpdateData())
return;
if(m_dbIOMon<=0)
{
AfxMessageBox("金额必须大于0!");
return;
}
if(m_nIOType==-1)
{
AfxMessageBox("收入还是支出?");
return;
}
CString type=m_strIOName.GetText();
CString user=m_strIOUser.GetText();
if(type.IsEmpty())
{
AfxMessageBox("请选择收入或支出类型!");
return;
}
if(user.IsEmpty())
{
AfxMessageBox("请选择家庭成员!");
return;
}
CString strID;
adoDB.ExecuteQueryValue("select max(io_id) from FNC_IO",strID);
int newID=atoi(strID)+1;
CString strDT=m_dtIO.Format("%Y-%m-%d");
CString sql;
sql.Format("insert into FNC_IO(io_id,io_date,io_type,io_name,io_user,io_mon,io_remark)"
"values(%d,'%s','%s','%s','%s',%.2f,'%s')",
newID,strDT,m_nIOType==0?"收入":"支出",type,user,m_dbIOMon,m_strIORmk);
adoDB.Execute(sql);
InsertIOCtrlItem(Int2Str(newID),strDT,m_nIOType==0?"收入":"支出",type,user,float2Str(m_dbIOMon),m_strIORmk);
m_strIOName.SetText("");
m_strIOUser.SetText("");
GetDlgItem(IDC_FNC_IOMON)->SetWindowText("0");
}
void CIOView::OnFncIodel()
{
// TODO: Add your control notification handler code here
if(!adoDB.IsOpen())
{
AfxMessageBox("数据库未打开!");
return;
}
int nItem=m_listIO.GetNextItem(-1,LVNI_SELECTED);
if(nItem==-1)
{
AfxMessageBox("没有选定要删除的账户信息!");
return;
}
int id=atoi(m_listIO.GetItemText(nItem,0));
CString sql;
sql.Format("delete from FNC_IO where io_id=%d",id);
adoDB.Execute(sql);
m_listIO.DeleteItem(nItem);
}
void CIOView::OnFncIofrs()
{
// TODO: Add your control notification handler code here
InitCtrlData();
}
void CIOView::OnFncAssetadd()
{
// TODO: Add your control notification handler code here
if(!adoDB.IsOpen())
{
AfxMessageBox("数据库未打开!");
return;
}
if(!UpdateData())
return;
if(m_dbASSETMon<=0)
{
AfxMessageBox("金额必须大于0!");
return;
}
CString type=m_strASSETName.GetText();
CString user=m_strASSETUser.GetText();
if(user.IsEmpty())
{
AfxMessageBox("请选择家庭成员!");
return;
}
CString strID;
adoDB.ExecuteQueryValue("select max(asset_id) from FNC_ASSET",strID);
int newID=atoi(strID)+1;
CString strDT=m_dtASSET.Format("%Y-%m-%d");
CString sql;
sql.Format("insert into FNC_ASSET(asset_id,asset_date,asset_name,asset_user,asset_mon,asset_remark)"
"values(%d,'%s','%s','%s',%.2f,'%s')",
newID,strDT,type,user,m_dbASSETMon,m_strASSETRmk);
adoDB.Execute(sql);
InsertASSETItem(Int2Str(newID),strDT,type,user,float2Str(m_dbASSETMon),m_strASSETRmk);
m_strASSETName.SetText("");
m_strASSETUser.SetText("");
GetDlgItem(IDC_FNC_ASSETMON)->SetWindowText("0");
}
void CIOView::OnFncAssetdel()
{
// TODO: Add your control notification handler code here
if(!adoDB.IsOpen())
{
AfxMessageBox("数据库未打开!");
return;
}
int nItem=m_listASSET.GetNextItem(-1,LVNI_SELECTED);
if(nItem==-1)
{
AfxMessageBox("没有选定要删除的资产信息!");
return;
}
int id=atoi(m_listASSET.GetItemText(nItem,0));
CString sql;
sql.Format("delete from FNC_ASSET where asset_id=%d",id);
adoDB.Execute(sql);
m_listASSET.DeleteItem(nItem);
}
void CIOView::OnFncAssetfrs()
{
// TODO: Add your control notification handler code here
InitAssetData();
}
void CIOView::InitAssetData()
{
if(!adoDB.IsOpen())
return;
m_listASSET.DeleteAllItems();
CDStrs assetFields;
adoDB.ExecuteQuery("select * from FNC_ASSET order by asset_date",assetFields);
for(int i=0;i<assetFields.size();i++)
{
CStrs strs=assetFields[i];
InsertASSETItem(strs[0],strs[1],strs[2],strs[3],strs[4],strs[5]);
}
}
void CIOView::InsertASSETItem(CString item0, CString item1, CString item2, CString item3, CString item4, CString item5)
{
int nIndex=m_listASSET.GetItemCount();
LV_ITEM lvItem;
lvItem.mask = LVIF_TEXT ;
lvItem.iItem = nIndex;
lvItem.iSubItem = 0;
lvItem.pszText = (char*)(LPCTSTR)item0;
m_listASSET.InsertItem(&lvItem);
m_listASSET.SetItemText(nIndex,1,item1);
m_listASSET.SetItemText(nIndex,2,item2);
m_listASSET.SetItemText(nIndex,3,item3);
m_listASSET.SetItemText(nIndex,4,item4);
m_listASSET.SetItemText(nIndex,5,item5);
}
void CIOView::InitASSET()
{
DWORD dwExStyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|LVS_EX_ONECLICKACTIVATE;
m_listASSET.SetExtendedStyle(dwExStyle);
m_listASSET.InsertColumn(0,"ID",LVCFMT_CENTER,80);
m_listASSET.InsertColumn(1,"日期",LVCFMT_CENTER,100);
m_listASSET.InsertColumn(2,"名称",LVCFMT_CENTER,100);
m_listASSET.InsertColumn(3,"经手人",LVCFMT_CENTER,100);
m_listASSET.InsertColumn(4,"金额",LVCFMT_CENTER,100);
m_listASSET.InsertColumn(5,"说明",LVCFMT_CENTER,120);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -