📄 inexpview.cpp
字号:
// InExpView.cpp : implementation file
//
#include "stdafx.h"
#include "FinaceMIS.h"
#include "InExpView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CInExpView
IMPLEMENT_DYNCREATE(CInExpView, CFormView)
CInExpView::CInExpView()
: CFormView(CInExpView::IDD)
{
//{{AFX_DATA_INIT(CInExpView)
m_dtInfo = 0;
m_strDescrip = _T("");
m_nTypeSelected = 0;
m_dbMoney = 0.0;
//}}AFX_DATA_INIT
}
CInExpView::~CInExpView()
{
}
void CInExpView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CInExpView)
DDX_Control(pDX, IDC_LIST_INFO, m_listInfo);
DDX_DateTimeCtrl(pDX, IDC_DT_INFO, m_dtInfo);
DDX_Text(pDX, IDC_EDIT_DESCRIP, m_strDescrip);
DDX_Radio(pDX, IDC_RADIO1, m_nTypeSelected);
DDX_Text(pDX, IDC_EDIT_MONEY, m_dbMoney);
DDX_Control(pDX, IDC_ADODC1, m_adoCtrl);
DDX_Control(pDX, IDC_COMBO_TYPE, m_datacomboType);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CInExpView, CFormView)
//{{AFX_MSG_MAP(CInExpView)
ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)
ON_BN_CLICKED(IDC_BTN_DEL, OnBtnDel)
ON_BN_CLICKED(IDC_BTN_REFRESH, OnBtnRefresh)
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CInExpView diagnostics
#ifdef _DEBUG
void CInExpView::AssertValid() const
{
CFormView::AssertValid();
}
void CInExpView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CInExpView message handlers
void CInExpView::OnBtnAdd()
{
if(!g_adoDB.IsOpen()){
AfxMessageBox("数据库未打开");
return;
}
if(!UpdateData())
return;
CString type=m_datacomboType.GetText();
if(type.IsEmpty()){
AfxMessageBox("请选择收入或支出的类型");
return;
}
CString strID;
//获取最大的收支信息ID
g_adoDB.ExecuteQueryValue("select max(ix_id) "
"from in_exp_info_tab",strID);
int newID=atoi(strID)+1;
//插入新的收支信息
CString strDT=m_dtInfo.Format("%Y-%m-%d");
CString sql;
sql.Format("insert into in_exp_info_tab(ix_id,"
"ix_date,ix_type,ix_name,money,description) "
" values("
"%d,'%s',%d,'%s',%.2f,'%s')",
newID,strDT,m_nTypeSelected,type,m_dbMoney,m_strDescrip);
g_adoDB.Execute(sql);
InsertCtrlItem(Int2Str(newID),strDT,m_nTypeSelected==0?"收入":"支出",
type,float2Str(m_dbMoney),m_strDescrip);
}
void CInExpView::OnBtnDel()
{
if(!g_adoDB.IsOpen()){
AfxMessageBox("数据库未打开");
return;
}
int nItem=m_listInfo.GetNextItem(-1,LVNI_SELECTED);
if(nItem==-1){
AfxMessageBox("没有选定要删除的收支信息");
return;
}
//获取选择的收支信息ID
int id=atoi(m_listInfo.GetItemText(nItem,0));
CString sql;
//删除选择的收支信息
sql.Format("delete from in_exp_info_tab where ix_id=%d",id);
g_adoDB.Execute(sql);
m_listInfo.DeleteItem(nItem);
}
void CInExpView::OnBtnRefresh()
{
InitCtrlData();
}
void CInExpView::OnRadio1()
{
// TODO: Add your control notification handler code here
m_adoCtrl.SetRecordSource("Select * from in_type_tab");//设置记录源
m_adoCtrl.Refresh();//刷新ADO数据库
m_datacomboType.SetListField("name");//设置显示的字段名称
m_datacomboType.Refresh();//刷新控件显示数据
m_nTypeSelected=0;//设置选择单选按钮为第一个
}
void CInExpView::OnRadio2()
{
// 设置记录源
m_adoCtrl.SetRecordSource("select * from exp_type_tab");
m_adoCtrl.Refresh();//新ADO数据控件
m_datacomboType.SetListField("name");//设置要显示的字段
m_datacomboType.Refresh();//刷新要显示的数据
m_nTypeSelected=1;//设置选择单选按钮为第二个
}
void CInExpView::OnDraw(CDC* pDC)
{
if(m_nTypeSelected==0)//选择“收入”按钮时,在“选择类型”组合框中列出所有的收入类型
OnRadio1();
else //否则在“选择类型”组合框中列出所有的支出类型
OnRadio2();
}
void CInExpView::InitControl()
{
//设置列表框控件扩展风格
DWORD dwExStyle=LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES |
LVS_EX_HEADERDRAGDROP | LVS_EX_ONECLICKACTIVATE | LVS_EX_UNDERLINEHOT;
m_listInfo.SetExtendedStyle(dwExStyle);
//初始化收支信息列表框控件
m_listInfo.InsertColumn(0,"ID",LVCFMT_CENTER,80);
m_listInfo.InsertColumn(1,"日期",LVCFMT_CENTER,80);
m_listInfo.InsertColumn(2,"收入/支出",LVCFMT_CENTER,80);
m_listInfo.InsertColumn(3,"名称",LVCFMT_CENTER,100);
m_listInfo.InsertColumn(4,"金额",LVCFMT_CENTER,100);
m_listInfo.InsertColumn(5,"说明",LVCFMT_CENTER,120);
}
void CInExpView::InitCtrlData()
{
if(!g_adoDB.IsOpen())
return;
m_listInfo.DeleteAllItems();
CDStrs ixFields;
//获取收支信息表数据
g_adoDB.ExecuteQuery("select * from in_exp_info_tab order by ix_date",ixFields);
for(int i=0;i<ixFields.size();i++)
{
CStrs strs=ixFields[i];
InsertCtrlItem(strs[0],strs[1].Left(10),strs[2]=="0"?"收入":"支出",
strs[3],strs[4],strs[5]);
}
}
void CInExpView::InsertCtrlItem(CString item0,CString item1,CString item2,CString item3
,CString item4,CString item5)
{
//获取当前的记录条数
int nIndex=m_listInfo.GetItemCount();
LV_ITEM lvItem;
lvItem.mask=LVIF_TEXT;
lvItem.iItem=nIndex;
lvItem.iSubItem=0;
lvItem.pszText=(char*)(LPCTSTR)item0;//第一列
m_listInfo.InsertItem(&lvItem); //在最后一行插入记录值
//设置该行的其他列的值
m_listInfo.SetItemText(nIndex,1,item1);
m_listInfo.SetItemText(nIndex,2,item2);
m_listInfo.SetItemText(nIndex,3,item3);
m_listInfo.SetItemText(nIndex,4,item4);
m_listInfo.SetItemText(nIndex,5,item5);
}
void CInExpView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
//初始化列表框控件
InitControl();
InitCtrlData();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -