?? repairmandlg.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 + -