?? loan1.cpp
字號:
// LOAN1.cpp : implementation file
//
#include "stdafx.h"
#include "FixedAssets.h"
#include "LOAN1.h"
#include "CRACK.h"
#include "PromptDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CLOAN dialog
CLOAN::CLOAN(CWnd* pParent /*=NULL*/)
: CDialog(CLOAN::IDD, pParent)
{
//{{AFX_DATA_INIT(CLOAN)
m_OutDate = -1;
m_strReason = _T("");
m_strRemark = _T("");
m_ReturnDate = -1;
m_strType = _T("");
m_strName = _T("");
m_strSort = _T("");
m_strBorrower = _T("");
m_strLender = _T("");
m_strRatifier = _T("");
m_strAssetID = _T("");
//}}AFX_DATA_INIT
}
void CLOAN::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLOAN)
DDX_Control(pDX, IDC_LN_RATIFIER, m_CtrlCBRatifier);
DDX_Control(pDX, IDC_LN_LENDER, m_CtrlCBLender);
DDX_Control(pDX, IDC_LN_BORROWER, m_CtrlCBBorrower);
DDX_Control(pDX, IDC_LN_REASON, m_CtrlEditReason);
DDX_Control(pDX, IDC_LN_LIST, m_CtrlList);
DDX_Control(pDX, IDC_LN_DEPARTMENT, m_CtrlCBDepartment);
DDX_DateTimeCtrl(pDX, IDC_LN_OUTDATE, m_OutDate);
DDX_Text(pDX, IDC_LN_REASON, m_strReason);
DDX_Text(pDX, IDC_LN_REMARK, m_strRemark);
DDX_DateTimeCtrl(pDX, IDC_LN_RETURNDATE, m_ReturnDate);
DDX_Text(pDX, IDC_LN_TYPE, m_strType);
DDX_Text(pDX, IDC_LN_NAME, m_strName);
DDX_Text(pDX, IDC_LN_SORT, m_strSort);
DDX_CBString(pDX, IDC_LN_BORROWER, m_strBorrower);
DDX_CBString(pDX, IDC_LN_LENDER, m_strLender);
DDX_CBString(pDX, IDC_LN_RATIFIER, m_strRatifier);
DDX_Text(pDX, IDC_LN_ASSETID, m_strAssetID);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLOAN, CDialog)
//{{AFX_MSG_MAP(CLOAN)
ON_BN_CLICKED(IDD_LOAN, OnLoan)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_LN_LIST, OnItemchangedLnList)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLOAN message handlers
int CLOAN::DoModal()
{
// TODO: Add your specialized code here and/or call the base class
return CDialog::DoModal();
}
BOOL CLOAN::OnInitDialog()
{
CDialog::OnInitDialog();
m_CtrlList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
//連接數據庫
m_pDatabase=new CDaoDatabase;
try{
m_pDatabase->Open("FixedAssets");
m_pRecordset=new CDaoRecordset(m_pDatabase);
}
catch(CDaoException *e)
{
e->ReportError();
delete m_pDatabase;
m_pDatabase=NULL;
e->Delete();
}
if(!m_pDatabase->IsOpen()) return 0;
if(!m_pRecordset) return 0;
if(m_pRecordset->IsOpen()) m_pRecordset->Close();
CString strSelect;
try
{ //保管人員
strSelect = _T("Select 保管人員ID,保管人員 From 保管人員");
m_pRecordset->Open(dbOpenDynaset,strSelect);
while (!m_pRecordset->IsEOF())
{
COleVariant var;
var = m_pRecordset->GetFieldValue(0);
m_uaKeeper.Add(var.lVal);
var = m_pRecordset->GetFieldValue(1);
m_saKeeper.Add(CCrack::strVARIANT(var));
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
// 部門
strSelect = _T("Select 部門ID,部門名稱 From 部門");
m_pRecordset->Open(dbOpenDynaset,strSelect);
while (!m_pRecordset->IsEOF())
{
COleVariant var;
var = m_pRecordset->GetFieldValue(0);
m_uaDepartment.Add(var.lVal);
var = m_pRecordset->GetFieldValue(1);
m_saDepartment.Add(CCrack::strVARIANT(var));
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
// 存放地點
strSelect = _T("Select 存放地點ID,存放地點 From 存放地點");
m_pRecordset->Open(dbOpenDynaset,strSelect);
while (!m_pRecordset->IsEOF())
{
COleVariant var;
var = m_pRecordset->GetFieldValue(0);
m_uaDepositary.Add(var.lVal);
var = m_pRecordset->GetFieldValue(1);
m_saDepositary.Add(CCrack::strVARIANT(var));
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
// 增加方式
strSelect = _T("Select 增加方式ID,增加方式 From 增加方式");
m_pRecordset->Open(dbOpenDynaset,strSelect);
while (!m_pRecordset->IsEOF())
{
COleVariant var;
var = m_pRecordset->GetFieldValue(0);
m_uaAddType.Add(var.lVal);
var = m_pRecordset->GetFieldValue(1);
m_saAddType.Add(CCrack::strVARIANT(var));
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
// 資產類別
strSelect = _T("Select 資產類別ID,資產類別 From 資產類別");
m_pRecordset->Open(dbOpenDynaset,strSelect);
while (!m_pRecordset->IsEOF())
{
COleVariant var;
var = m_pRecordset->GetFieldValue(0);
m_uaSort.Add(var.lVal);
var = m_pRecordset->GetFieldValue(1);
m_saSort.Add(CCrack::strVARIANT(var));
m_pRecordset->MoveNext();
}
// close recordset
m_pRecordset->Close();
strSelect = _T("Select DISTINCT 借用人 From 借出還入資產");
m_pRecordset->Open(dbOpenDynaset,strSelect);
while (!m_pRecordset->IsEOF())
{
COleVariant var;
var = m_pRecordset->GetFieldValue(0);
m_CtrlCBBorrower.AddString(CCrack::strVARIANT(var));
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
strSelect = _T("Select DISTINCT 出借人 From 借出還入資產");
m_pRecordset->Open(dbOpenDynaset,strSelect);
while (!m_pRecordset->IsEOF())
{
COleVariant var;
var = m_pRecordset->GetFieldValue(0);
m_CtrlCBLender.AddString(CCrack::strVARIANT(var));
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
strSelect = _T("Select DISTINCT 批復人 From 借出還入資產");
m_pRecordset->Open(dbOpenDynaset,strSelect);
while (!m_pRecordset->IsEOF())
{
COleVariant var;
var = m_pRecordset->GetFieldValue(0);
m_CtrlCBRatifier.AddString(CCrack::strVARIANT(var));
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
}
catch (CDaoException* e)
{
e->ReportError();
e->Delete();
return 0;
}
int nIndex,i;
for(i=0;i<m_saDepartment.GetSize();i++) //初始化 部門
{
nIndex =m_CtrlCBDepartment.AddString(m_saDepartment.GetAt(i));
m_CtrlCBDepartment.SetItemData(nIndex, m_uaDepartment.GetAt(i));
}
Refresh();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CLOAN::Refresh()//刷新
{
m_strTableName = _T("資產信息");
if(!m_pDatabase->IsOpen()) return;
if(!m_pRecordset) return;
if(m_pRecordset->IsOpen()) m_pRecordset->Close();
//清空list控件
m_CtrlList.DeleteAllItems();
while(m_CtrlList.DeleteColumn(0));
CDaoFieldInfo fieldInfo;
int nFields;
CDaoTableDef td(m_pDatabase);
try
{
td.Open(m_strTableName);
nFields = td.GetFieldCount();
for (int j=0; j < nFields; j++)
{
td.GetFieldInfo(j,fieldInfo);
int nWidth = m_CtrlList.GetStringWidth(fieldInfo.m_strName) + 15;
m_CtrlList.InsertColumn(j,fieldInfo.m_strName, LVCFMT_LEFT, nWidth);
}
}
catch (CDaoException* e)
{
e->ReportError();
e->Delete();
return;
}
td.Close();
int nItem = 0,i;
try
{
CString strSelect(_T("Select * From ["));
strSelect += m_strTableName;
strSelect += _T("]");
m_pRecordset->Open(dbOpenDynaset,strSelect);
while (!m_pRecordset->IsEOF())
{
COleVariant var;
var = m_pRecordset->GetFieldValue(14);
if(CCrack::strVARIANT(var)=="借出"||CCrack::strVARIANT(var)=="清理"||CCrack::strVARIANT(var)=="維修")
{
m_pRecordset->MoveNext();
continue;
}
var = m_pRecordset->GetFieldValue(0);
m_CtrlList.InsertItem(nItem,CCrack::strVARIANT(var));
for (i=0; i < nFields; i++)
{
var = m_pRecordset->GetFieldValue(i);
if(i==3||i==15||i==16||i==17||i==18)
{
CString item;
item=IdToString(atoi(CCrack::strVARIANT(var)),i);
m_CtrlList.SetItemText( nItem,i,item);
continue;
}
m_CtrlList.SetItemText( nItem,i,CCrack::strVARIANT(var));
}
nItem++;
m_pRecordset->MoveNext();
}
}
catch (CDaoException* e)
{
e->ReportError();
e->Delete();
return;
}
m_ID.Empty();
m_strAssetID.Empty();
m_strName.Empty();
m_strSort.Empty();
m_strType.Empty();
m_strRemark.Empty();
m_strReason.Empty();
m_strBorrower.Empty();
m_strLender.Empty();
m_strRatifier.Empty();
m_CtrlCBDepartment.SetCurSel(-1);
m_OutDate=CTime::GetCurrentTime();
m_ReturnDate=CTime::GetCurrentTime();
UpdateData(0);
}
CString CLOAN::IdToString(int ID,int Index) //將索引ID轉換為字符
{
CStringArray sa; //資產類別
CUIntArray ua;
bool flag=0;
switch(Index)
{
case 3:sa.Copy(m_saSort);ua.Copy(m_uaSort);break;//資產類別
case 15:sa.Copy(m_saDepartment);ua.Copy(m_uaDepartment);break;//使用部門
case 16:sa.Copy(m_saDepositary);ua.Copy(m_uaDepositary);break;//存放地點
case 17:sa.Copy(m_saAddType);ua.Copy(m_uaAddType);break;//增加方式
case 18:sa.Copy(m_saKeeper);ua.Copy(m_uaKeeper);break;//保管人員
}
int j;
for(j=0;j<ua.GetSize();j++)
{
if(ua[j]==unsigned(ID))
{
flag=1;
break;
}
}
if(flag)
return sa[j];
else
return "!!刪除!!";
}
void CLOAN::OnItemchangedLnList(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData(1);
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if(pNMListView->uNewState&LVIS_SELECTED)
{
char pContent[50] ;
int iCurrent = pNMListView->iItem;
m_CtrlList.GetItemText(iCurrent,0,pContent,50);
m_ID.Format("%s", pContent);
m_CtrlList.GetItemText(iCurrent,1,pContent,50);
m_strAssetID.Format("%s",pContent);
m_CtrlList.GetItemText(iCurrent,2,pContent,50);
m_strName.Format("%s", pContent);
m_CtrlList.GetItemText(iCurrent,3,pContent,50);
m_strSort.Format("%s",pContent);
m_CtrlList.GetItemText(iCurrent,4,pContent,50);
m_strType.Format("%s",pContent);
UpdateData(FALSE);
SetEditable(1);
}
else
{
if(m_CtrlList.GetSelectedCount()<=0)
{
SetEditable(0);
m_ID.Empty();
m_strAssetID.Empty();
m_strName.Empty();
m_strSort.Empty();
m_strType.Empty();
m_strRemark.Empty();
m_strReason.Empty();
m_strBorrower.Empty();
m_strLender.Empty();
m_strRatifier.Empty();
m_CtrlCBDepartment.SetCurSel(-1);
m_OutDate=CTime::GetCurrentTime();
m_ReturnDate=CTime::GetCurrentTime();
UpdateData(0);
}
}
*pResult = 0;
}
void CLOAN::SetEditable(bool label)
{
(CButton*)GetDlgItem(IDD_LOAN)->EnableWindow(label);
(CEdit*)GetDlgItem(IDC_LN_REASON)->EnableWindow(label);
(CEdit*)GetDlgItem(IDC_LN_REMARK)->EnableWindow(label);
(CComboBox*)GetDlgItem(IDC_LN_BORROWER)->EnableWindow(label);
(CComboBox*)GetDlgItem(IDC_LN_LENDER)->EnableWindow(label);
(CComboBox*)GetDlgItem(IDC_LN_RATIFIER)->EnableWindow(label);
(CComboBox*)GetDlgItem(IDC_LN_DEPARTMENT)->EnableWindow(label);
(CDateTimeCtrl*)GetDlgItem(IDC_LN_OUTDATE)->EnableWindow(label);
(CDateTimeCtrl*)GetDlgItem(IDC_LN_RETURNDATE)->EnableWindow(label);
}
BOOL CLOAN::DestroyWindow()
{
m_pDatabase->Close();
delete m_pDatabase;
m_pDatabase=NULL;
return CDialog::DestroyWindow();
}
void CLOAN::OnLoan()
{
UpdateData(1);
if(!m_pDatabase->IsOpen()) return;
if(!m_pRecordset) return;
if(m_pRecordset->IsOpen()) m_pRecordset->Close();
CString strSql;
UINT uSelectedCount = m_CtrlList.GetSelectedCount();
if (uSelectedCount <1) {MessageBox("請選擇記錄中的一項","借出提示");return;}
//檢查數據是否正確
if(m_CtrlCBDepartment.GetCurSel()==-1) {AfxMessageBox("借出部門不能為空!");m_CtrlCBDepartment.SetFocus();return;}
if(m_strBorrower.IsEmpty()) {AfxMessageBox("借用人不能為空!");m_CtrlCBBorrower.SetFocus();return;}
if(m_strLender.IsEmpty()) {AfxMessageBox("出借人不能為空!");m_CtrlCBLender.SetFocus();return;}
if(m_strReason.IsEmpty()) {AfxMessageBox("出借理由不能為空!");m_CtrlEditReason.SetFocus();return;}
if(m_strRatifier.IsEmpty()) {AfxMessageBox("批復人不能為空!");m_CtrlCBRatifier.SetFocus();return;}
CPromptDlg dlg;
dlg.m_Prompt="\n借出這些物品?";
if(dlg.DoModal()==IDCANCEL) return;
CString OutDate,ReturnDate,useinfo="借出";
OutDate.Format("%d %d %d",m_OutDate.GetYear(),m_OutDate.GetMonth(),m_OutDate.GetDay());//借出日期
ReturnDate.Format("%d %d %d",m_ReturnDate.GetYear(),m_ReturnDate.GetMonth(),m_ReturnDate.GetDay());//擬還日期
int Department,giveback=0;
Department=m_CtrlCBDepartment.GetItemData(m_CtrlCBDepartment.GetCurSel()); //借用部門
int nItemIndex = -1,nSelectIndex;
// Update all of the selected items.
if (uSelectedCount > 0)
{
while((nItemIndex=m_CtrlList.GetNextItem(nItemIndex,LVNI_SELECTED ) ) != -1 )
{
m_ID=m_CtrlList.GetItemText ( nItemIndex, 0 );
nSelectIndex=nItemIndex;
try{
if(m_pDatabase->CanUpdate())
{
strSql.Format("Update 資產信息 set 使用情況='%s' where 資產ID=%d",useinfo,atoi(m_ID));
m_pDatabase->Execute(strSql, dbDenyWrite|dbConsistent);
strSql.Format("Insert into 借出還入資產(資產ID,借用時間,借用部門ID,借用人,\
預計歸還時間,出借人,借用理由,批復人,是否歸還,備注)values(%d,'%s',%d,'%s','%s','%s','%s','%s',%d,\
'%s') ",atoi(m_ID),OutDate,Department,m_strBorrower,ReturnDate,m_strLender,m_strReason,\
m_strRatifier,giveback,m_strRemark);
m_pDatabase->Execute(strSql, dbDenyWrite|dbConsistent);
}
}
catch(CDaoException* e){
e->ReportError();
e->Delete();}
}
}
SetEditable(0);
Refresh();
m_CtrlList.EnsureVisible(nSelectIndex,nSelectIndex+1);
m_CtrlList.SetItemState(nSelectIndex, LVIS_SELECTED, LVIS_SELECTED);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -