⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eq_statedlg.cpp

📁 自己编的设备管理系统
💻 CPP
字号:
// Eq_STATEDlg.cpp : implementation file
//

#include "stdafx.h"
#include "eq_manager_sys.h"
#include "Eq_STATEDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CEq_STATEDlg dialog


CEq_STATEDlg::CEq_STATEDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CEq_STATEDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CEq_STATEDlg)
	m_com2 = _T("");
	//}}AFX_DATA_INIT
}


void CEq_STATEDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEq_STATEDlg)
	DDX_Control(pDX, IDC_COMBO1, m_combo1);
	DDX_Control(pDX, IDC_COMBO2, m_combo2);
	DDX_Control(pDX, IDC_LIST1, m_list1);
	DDX_CBString(pDX, IDC_COMBO2, m_com2);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CEq_STATEDlg, CDialog)
	//{{AFX_MSG_MAP(CEq_STATEDlg)
	ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1)
	ON_CBN_SELCHANGE(IDC_COMBO2, OnSelchangeCombo2)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEq_STATEDlg message handlers

BOOL CEq_STATEDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	InitControl();//初始化control列
	ConnectDB();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CEq_STATEDlg::InitControl()//添加控件显示列
{
	DWORD dwExstyle=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES|LVS_EX_HEADERDRAGDROP|
		LVS_EX_ONECLICKACTIVATE|LVS_EX_UNDERLINEHOT;
	m_list1.SetExtendedStyle(dwExstyle);
	
	//初试化设备信息表列表框控件
	m_list1.InsertColumn(0,"设备编号",LVCFMT_CENTER,60);
	m_list1.InsertColumn(1,"设备名称",LVCFMT_CENTER,80);
	m_list1.InsertColumn(2,"类别编号",LVCFMT_CENTER,80);
	m_list1.InsertColumn(3,"规格型号",LVCFMT_CENTER,200);
	m_list1.InsertColumn(4,"设备数量",LVCFMT_CENTER,60);
	m_list1.InsertColumn(5,"设备状态",LVCFMT_CENTER,60);
	m_list1.InsertColumn(6,"购入日期",LVCFMT_CENTER,80);
	m_list1.InsertColumn(7,"安装日期",LVCFMT_CENTER,80);
	m_list1.InsertColumn(8,"部门编号",LVCFMT_CENTER,80);
	m_list1.InsertColumn(9,"原值",LVCFMT_CENTER,70);
	m_list1.InsertColumn(10,"安装地点",LVCFMT_CENTER,120);
	m_list1.InsertColumn(11,"生产厂家",LVCFMT_CENTER,150);
	m_list1.InsertColumn(12,"使用日期",LVCFMT_CENTER,80);
	m_list1.InsertColumn(13,"使用年限",LVCFMT_CENTER,60);
	m_list1.InsertColumn(14,"残值",LVCFMT_CENTER,80);
	m_list1.InsertColumn(15,"月折旧金额",LVCFMT_CENTER,80);
	m_list1.InsertColumn(16,"备注",LVCFMT_CENTER,200);

	m_list1.SetBkColor(RGB(255,255,200));
	m_list1.SetTextBkColor(RGB(255,221,221));

	m_combo1.SetCurSel(0);

	UpdateData(FALSE);
}

void CEq_STATEDlg::ConnectDB()//连接数据库函数
{
	TRY
	{
		 m_db.OpenEx("DSN=ORADB;UID=eq_system;PWD=eq_system",CDatabase::noOdbcDialog);
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox("问题出在连接数据库");
		AfxMessageBox(ex->m_strError);
		AfxMessageBox(ex->m_strStateNativeOrigin);
	}
	AND_CATCH(CMemoryException,pEx)
	{
		pEx->ReportError();
		AfxMessageBox("memory exception");
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox(szError);
	}
	END_CATCH

	InitCtrlData();
}
void CEq_STATEDlg::InitCtrlData()
{
	if(!m_db.IsOpen())
	{
		MessageBox("数据库没打开");
			return;
	}
	m_list1.DeleteAllItems();
	TRY
	{
		/*CRecordset rs(&m_db);
		rs.Open(CRecordset::dynaset,"select * from eq_info");
		while(!rs.IsEOF())
		{
			CString id,name,eq_class_id,eq_type,pur_date,install_date,dep_id,fix_place,manfac,use_date,remark;
			int eq_amount,eq_state,fix_year,rem_val,mon_val,eq_val;
			CDBVariant var;
			//获得字段直
			rs.GetFieldValue((short)0,id);
			rs.GetFieldValue((short)1,name);
			rs.GetFieldValue((short)2,eq_class_id);
			rs.GetFieldValue((short)3,eq_type);
			rs.GetFieldValue((short)4,var,SQL_C_SLONG);
			if(var.m_dwType!=DBVT_NULL)
				eq_amount=var.m_lVal;
			else
				eq_amount=0;
			var.Clear();
			rs.GetFieldValue((short)5,var,SQL_C_SLONG);
			if(var.m_dwType!=DBVT_NULL)
				eq_state=var.m_lVal;
			else
				eq_state=0;
			var.Clear();
			rs.GetFieldValue((short)6,pur_date);
			pur_date=pur_date.Mid(0,10);//节取字符串
			rs.GetFieldValue((short)7,install_date);
			install_date=pur_date.Mid(0,10);
			rs.GetFieldValue((short)8,dep_id);
			rs.GetFieldValue((short)9,var,SQL_C_SLONG);
			if(var.m_dwType!=DBVT_NULL)
				eq_val=var.m_lVal;
			else
				eq_val=0;
			var.Clear();
			rs.GetFieldValue((short)10,fix_place);
			rs.GetFieldValue((short)11,manfac);
			rs.GetFieldValue((short)12,use_date);
			use_date=pur_date.Mid(0,10);
			rs.GetFieldValue((short)13,var,SQL_C_SLONG);
			if(var.m_dwType!=DBVT_NULL)
				fix_year=var.m_lVal;
			else
				fix_year=0;
			var.Clear();
			rs.GetFieldValue((short)14,var,SQL_C_SLONG);
			if(var.m_dwType!=DBVT_NULL)
				rem_val=var.m_lVal;
			else
				rem_val=0;
			var.Clear();
			rs.GetFieldValue((short)15,var,SQL_C_SLONG);
			if(var.m_dwType!=DBVT_NULL)
				mon_val=var.m_lVal;
			else
				mon_val=0;
			var.Clear();
			rs.GetFieldValue((short)16,remark);
			//向控件加入一条
			InsertEq(id,name,eq_class_id,eq_type,eq_amount,eq_state,pur_date,install_date,dep_id,eq_val,fix_place,manfac,use_date,fix_year,rem_val,mon_val,remark);
			rs.MoveNext();
		}
		rs.Close();
		//更新数据
		if(!UpdateData())
			return;
		//RefreshComboNameData();*/
	}
	CATCH(CDBException,ex)
	{
		AfxMessageBox("问题出在初试化表格");
		AfxMessageBox(ex->m_strError);
		AfxMessageBox(ex->m_strStateNativeOrigin);
	}
	AND_CATCH(CMemoryException,pEx)
	{
		pEx->ReportError();
		AfxMessageBox("memory exception");
	}
	AND_CATCH(CException,e)
	{
		TCHAR szError[100];
		e->GetErrorMessage(szError,100);
		AfxMessageBox(szError);
	}
	END_CATCH
}

void CEq_STATEDlg::InsertEq(CString id,CString name,CString eq_class_id,CString eq_type,int eq_amount,int eq_state,CString pur_date,CString install_date,CString dep_id,int eq_val,CString fix_place,CString manfac,CString use_date,int fix_year,int rem_val,int mon_val,CString remark)
{
	int index=m_list1.GetItemCount();
	CString temp,temp1,temp2,temp3,temp4,temp5,temp6;
	temp.Format("%d",eq_amount);
	temp1.Format("%d元",eq_val);
	temp2.Format("%d年",fix_year);
	temp3.Format("%d元",rem_val);
	temp4.Format("%d元",mon_val);
	if(eq_state==1)
	{temp5.Format("安装");}
	else if(eq_state==2)
	{temp5.Format("使用");}
	else if(eq_state==3)
	{temp5.Format("维修");}
	else if(eq_state==4)
	{temp5.Format("报废");}
	LV_ITEM lvItem;
	lvItem.mask=LVIF_TEXT;
	lvItem.iItem=index;// 行数
	lvItem.iSubItem=0;
	lvItem.pszText=(char*)(LPCTSTR)id;//第一列
	//在最后一行插入记录直
	m_list1.InsertItem(&lvItem);
	//设置该行的其他列的直
	m_list1.SetItemText(index,1,name);
	m_list1.SetItemText(index,2,eq_class_id);
	m_list1.SetItemText(index,3,eq_type);
	m_list1.SetItemText(index,4,temp);
	m_list1.SetItemText(index,5,temp5);
	m_list1.SetItemText(index,6,pur_date);
	m_list1.SetItemText(index,7,install_date);
	m_list1.SetItemText(index,8,dep_id);
	m_list1.SetItemText(index,9,temp1);
	m_list1.SetItemText(index,10,fix_place);
	m_list1.SetItemText(index,11,manfac);
	m_list1.SetItemText(index,12,use_date);
	m_list1.SetItemText(index,13,temp2);
	m_list1.SetItemText(index,14,temp3);
	m_list1.SetItemText(index,15,temp4);
	m_list1.SetItemText(index,16,remark);
}

void CEq_STATEDlg::OnSelchangeCombo1() 
{
	// TODO: Add your control notification handler code here
	CRecordset rs(&m_db);
	rs.Open(CRecordset::dynaset,"select * from eq_info");
	if(m_combo1.GetCurSel ()==0)//部门编号
	{
		CString temp[100];
	    int count=0;
		m_combo2.ResetContent ();
		while(!rs.IsEOF())
		{
			CString dep_id;
			int j=0,flag=0;
			rs.GetFieldValue((short)8,dep_id);
			//向列表框中添加所有设备类别
			while(j<=count)
			{
				if(temp[j]==dep_id)
				{
					flag=1;
					break;
				}
				j++;
			}
			if(flag==0)
			{
				temp[count]=dep_id;
				count++;
				m_combo2.AddString(dep_id);
			}
			rs.MoveNext();
		}
	}
	else if(m_combo1.GetCurSel ()==1)//类别编号
	{
		CString temp[100];
	    int count=0;
		m_combo2.ResetContent ();
		while(!rs.IsEOF())
		{
			CString eq_class_id;
			int j=0,flag=0;
			rs.GetFieldValue((short)2,eq_class_id);
			//向列表框中添加所有设备类别 
			while(j<=count)
			{
				if(temp[j]==eq_class_id)
				{
					flag=1;
					break;
				}
				j++;
			}
			if(flag==0)
			{
				temp[count]=eq_class_id;
				count++;
				m_combo2.AddString(eq_class_id);
			}
			rs.MoveNext();
		}
	}
	else if(m_combo1.GetCurSel ()==2)//设备状态
	{
		m_combo2.ResetContent ();
		m_combo2.AddString ("安装");
		m_combo2.AddString ("使用");
		m_combo2.AddString ("维护");
		m_combo2.AddString ("报废");
	}
	rs.Close();
	//更新数据
	m_combo2.SetCurSel(0);
	if(!UpdateData())
	    return;
}

void CEq_STATEDlg::OnSelchangeCombo2() 
{
	// TODO: Add your control notification handler code here
	int com1,com2,query_state,temp_eq_state;
	CRecordset rs(&m_db);
	CString temp_eq_num;
	CString id,name,eq_class_id,eq_type,pur_date,install_date,dep_id,fix_place,manfac,use_date,remark;
	int eq_amount,eq_state,fix_year,rem_val,mon_val,eq_val;
	CDBVariant var;
	com1=m_combo1.GetCurSel ();
	com2=m_combo2.GetCurSel ();
	temp_eq_num=m_com2;//.GetWindowText (temp_eq_num,20);
	rs.Open(CRecordset::dynaset,"select * from eq_info");
	switch(com1)
	{
	case 0: //部门编号
		query_state=0;
		break;
	case 1: //类别编号
		query_state=1;
		break;
	case 2: //设备状态
		query_state=2;
		switch(com2)
		{
		case 0: //安装
			temp_eq_state=0;
			break;
		case 1: //使用
			temp_eq_state=1;
			break;
		case 2: //维护
			temp_eq_state=2;
			break;
		case 3: //报废
			temp_eq_state=3;
			break;
		default:
			break;
		}
		break;
	default:
		break;
	}
	while(!rs.IsEOF())
		{
			rs.GetFieldValue((short)0,id);
			rs.GetFieldValue((short)1,name);
			rs.GetFieldValue((short)2,eq_class_id);
			rs.GetFieldValue((short)3,eq_type);
			rs.GetFieldValue((short)4,var,SQL_C_SLONG);
			if(var.m_dwType!=DBVT_NULL)
				eq_amount=var.m_lVal;
			else
				eq_amount=0;
			var.Clear();
			rs.GetFieldValue((short)5,var,SQL_C_SLONG);
			if(var.m_dwType!=DBVT_NULL)
				eq_state=var.m_lVal;
			else
				eq_state=0;
			var.Clear();
			rs.GetFieldValue((short)6,pur_date);
			pur_date=pur_date.Mid(0,10);//节取字符串
			rs.GetFieldValue((short)7,install_date);
			install_date=install_date.Mid(0,10);
			rs.GetFieldValue((short)8,dep_id);
			rs.GetFieldValue((short)9,var,SQL_C_SLONG);
			if(var.m_dwType!=DBVT_NULL)
				eq_val=var.m_lVal;
			else
				eq_val=0;
			var.Clear();
			rs.GetFieldValue((short)10,fix_place);
			rs.GetFieldValue((short)11,manfac);
			rs.GetFieldValue((short)12,use_date);
			use_date=use_date.Mid(0,10);
			rs.GetFieldValue((short)13,var,SQL_C_SLONG);
			if(var.m_dwType!=DBVT_NULL)
				fix_year=var.m_lVal;
			else
				fix_year=0;
			var.Clear();
			rs.GetFieldValue((short)14,var,SQL_C_SLONG);
			if(var.m_dwType!=DBVT_NULL)
				rem_val=var.m_lVal;
			else
				rem_val=0;
			var.Clear();
			rs.GetFieldValue((short)15,var,SQL_C_SLONG);
			if(var.m_dwType!=DBVT_NULL)
				mon_val=var.m_lVal;
			else
				mon_val=0;
			var.Clear();
			rs.GetFieldValue((short)16,remark);
			//向控件加入一条
			if(query_state==2)
			{
				if(temp_eq_state==(eq_state-1))
					InsertEq(id,name,eq_class_id,eq_type,eq_amount,eq_state,pur_date,install_date,dep_id,eq_val,fix_place,manfac,use_date,fix_year,rem_val,mon_val,remark);
			}
			else if(query_state==1)
			{
				if(temp_eq_num==eq_class_id)
					InsertEq(id,name,eq_class_id,eq_type,eq_amount,eq_state,pur_date,install_date,dep_id,eq_val,fix_place,manfac,use_date,fix_year,rem_val,mon_val,remark);
			}
			else if(query_state==0)
			{
				if(temp_eq_num==dep_id)
					InsertEq(id,name,eq_class_id,eq_type,eq_amount,eq_state,pur_date,install_date,dep_id,eq_val,fix_place,manfac,use_date,fix_year,rem_val,mon_val,remark);
			}
			rs.MoveNext();
		}
	rs.Close();
	//更新数据
	if(!UpdateData())
		return;
}

void CEq_STATEDlg::OnOK() 
{
	// TODO: Add extra validation here
	m_list1.DeleteAllItems();
	UpdateData();
	//CDialog::OnOK();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -