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

📄 repairmandlg.cpp

📁 用VC和SQL Server开发的固定资产管理系统
💻 CPP
字号:
// RepairManDlg.cpp : implementation file
//

#include "stdafx.h"
#include "AssetsMan.h"
#include "RepairManDlg.h"
#include "Repair.h"
#include "RepairEditDlg.h"
#include "columns.h"
#include "column.h"
#include "COMDEF.H"
#include "_recordset.h"

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

/////////////////////////////////////////////////////////////////////////////
// CRepairManDlg dialog


CRepairManDlg::CRepairManDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CRepairManDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CRepairManDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CRepairManDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CRepairManDlg)
	DDX_Control(pDX, IDC_TYPE_COMBO, m_Type);
	DDX_Control(pDX, IDC_ADODC1, m_Adodc);
	DDX_Control(pDX, IDC_DATAGRID1, m_DataGrid);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CRepairManDlg, CDialog)
	//{{AFX_MSG_MAP(CRepairManDlg)
	ON_BN_CLICKED(IDC_ADD_BUTTON, OnAddButton)
	ON_BN_CLICKED(IDC_MODI_BUTTON, OnModiButton)
	ON_BN_CLICKED(IDC_DEL_BUTTON, OnDelButton)
	ON_BN_CLICKED(IDC_FINISH_BUTTON, OnFinishButton)
	ON_CBN_SELCHANGE(IDC_TYPE_COMBO, OnSelchangeTypeCombo)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CRepairManDlg message handlers
void CRepairManDlg::Refreshdata()
{
	// 刷新记录
	CString csql,cSts;
	int iSel;
	csql = "SELECT r.Id, r.Aid AS 资产编号, a.Aname AS 资产名称, t.TypeName AS 类别,";
	csql += " r.RepairDate AS 维修日期, r.Unit AS 维修单位,";
	csql += " (CASE WHEN r.Status=0 Then '已经送修' Else '维修完毕' END) AS 状态,";
	csql += " r.Total AS 维修费用, r.PostDate AS 提交日期, r.Reason, r.Result, r.Status ";
	csql += " FROM Repair r, Assets a, Type t ";
	csql += "WHERE r.Aid=a.Aid AND a.TypeId = t.TypeId";
	if(m_Type.GetCurSel()!=0)
	{
		iSel = m_Type.GetCurSel()-1;
		cSts.Format("%d",iSel);
		csql += " And r.Status="+cSts;
	}
	m_Adodc.SetRecordSource(csql);
	m_Adodc.Refresh();
	// 设置列宽度
	_variant_t vIndex;
	vIndex = long(0);
	m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(0);
	vIndex = long(1);  // 资产编号
	m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(60);
	vIndex = long(2);
	m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(60);
	vIndex = long(3);
	m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(60);
	vIndex = long(4);
	m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(60);
	vIndex = long(5);
	m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(80);
	vIndex = long(6);
	m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(50);
	vIndex = long(7);
	m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(50);
	vIndex = long(8); // 费用
	m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(60);
	vIndex = long(9); // 原因
	m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(0);
	vIndex = long(10); // 结果
	m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(0);
	vIndex = long(11); // 状态值 
	m_DataGrid.GetColumns().GetItem(vIndex).SetWidth(0);
	EnableButton();
}

void CRepairManDlg::EnableButton()
{
	// 如果状态值为1或不存在记录,则不能修改、删除和更改记录状态
	if (m_Adodc.GetRecordset().GetEof())
	{
		GetDlgItem(IDC_MODI_BUTTON)->EnableWindow(FALSE);
		GetDlgItem(IDC_DEL_BUTTON)->EnableWindow(FALSE);
		GetDlgItem(IDC_FINISH_BUTTON)->EnableWindow(FALSE);
	}
	else
		if (atoi(m_DataGrid.GetItem(11)) == 1)
		{
			GetDlgItem(IDC_MODI_BUTTON)->EnableWindow(FALSE);
			GetDlgItem(IDC_DEL_BUTTON)->EnableWindow(FALSE);
			GetDlgItem(IDC_FINISH_BUTTON)->EnableWindow(FALSE);
		}
		else
		{
			GetDlgItem(IDC_MODI_BUTTON)->EnableWindow(TRUE);
			GetDlgItem(IDC_DEL_BUTTON)->EnableWindow(TRUE);
			GetDlgItem(IDC_FINISH_BUTTON)->EnableWindow(TRUE);
		}
}

BOOL CRepairManDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	m_Type.SetCurSel(0);
	Refreshdata();
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CRepairManDlg::OnAddButton() 
{
	CRepairEditDlg dlg;
	// 变量cRId=""表示添加新的记录
	dlg.cId = "";
	// 设置提交时间
	CTime t = CTime::GetCurrentTime();  //读取系统时间
	CString cPdate;
	cPdate.Format("%04d-%02d-%02d",t.GetYear(),t.GetMonth(),t.GetDay());
	dlg.m_PostDate = cPdate;
	dlg.m_RepairDate = t;				//设置维修日期为当天
	dlg.m_Status = "已经送修";
	if(dlg.DoModal()==IDOK)
		Refreshdata();	
}

void CRepairManDlg::OnModiButton() 
{
	if (m_Adodc.GetRecordset().GetEof()) 
	{
		MessageBox("请选择要修改的数据");
		return;
	}

	// 变量cRId表示记录编号
	CRepairEditDlg dlg;
	dlg.cId = m_DataGrid.GetItem(0);			//维修记录编号
	dlg.m_Aid = m_DataGrid.GetItem(1);			//固定资产编号
	dlg.m_Aname = m_DataGrid.GetItem(2);		//固定资产名称
	dlg.m_PostDate = m_DataGrid.GetItem(8);		//提交日期
	// 字符串转换为日期
	int yy, mm, dd;
	yy=atoi(m_DataGrid.GetItem(4).Left(4));		//维修日期
	mm=atoi(m_DataGrid.GetItem(4).Mid(6,2));
	dd=atoi(m_DataGrid.GetItem(4).Right(2));
	CTime tt(yy,mm,dd,0,0,0);
	dlg.m_RepairDate = tt;
	dlg.m_Unit = m_DataGrid.GetItem(5);			//维修单位
	dlg.m_Status = m_DataGrid.GetItem(6);		//当前状态
	dlg.m_Total = atof(m_DataGrid.GetItem(7));	//维修费用
	dlg.m_Reason = m_DataGrid.GetItem(9);		//维修原因
	dlg.m_Result = m_DataGrid.GetItem(10);		//维修结果
	if(dlg.DoModal()==IDOK)
		Refreshdata();	
}

void CRepairManDlg::OnDelButton() 
{
	if (m_Adodc.GetRecordset().GetEof()) 
	{
		MessageBox("请选择要删除的数据");
		return;
	}

	if (MessageBox("是否删除当前记录?","请确认", MB_YESNO) == IDYES)
	{
		CRepair obj;
		obj.sql_Delete(m_DataGrid.GetItem(0));
		Refreshdata();
	}		
}

void CRepairManDlg::OnFinishButton() 
{
	if (m_Adodc.GetRecordset().GetEof()) 
	{
		MessageBox("请选择数据");
		return;
	}

	if (MessageBox("维修完毕后记录将不能更改?","请确认", MB_YESNO) == IDYES)
	{
		CRepair obj;
		obj.UpdateStatus(m_DataGrid.GetItem(0));
		Refreshdata();
	}		
}

void CRepairManDlg::OnSelchangeTypeCombo() 
{
	// 更改查询条件同时刷新记录
	Refreshdata();	
}

BEGIN_EVENTSINK_MAP(CRepairManDlg, CDialog)
    //{{AFX_EVENTSINK_MAP(CRepairManDlg)
	ON_EVENT(CRepairManDlg, IDC_DATAGRID1, -600 /* Click */, OnClickDatagrid1, VTS_NONE)
	//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

void CRepairManDlg::OnClickDatagrid1() 
{
	EnableButton();	
}

⌨️ 快捷键说明

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