📄 giveback.cpp
字号:
// GiveBack.cpp : implementation file
//
#include "stdafx.h"
#include "FixedAssets.h"
#include "GiveBack.h"
#include "CRACK.h"
#include "PromptDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CGiveBack dialog
CGiveBack::CGiveBack(CWnd* pParent /*=NULL*/)
: CDialog(CGiveBack::IDD, pParent)
{
//{{AFX_DATA_INIT(CGiveBack)
m_strBorrower = _T("");
m_strDepartment = _T("");
m_GBDate = 0;
m_strName = _T("");
m_strRemark = _T("");
m_strReciever = _T("");
m_strAssetID = _T("");
//}}AFX_DATA_INIT
}
void CGiveBack::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGiveBack)
DDX_Control(pDX, IDC_GB_RECIEVER, m_CtrlCBReciever);
DDX_Control(pDX, IDC_GB_LIST, m_CtrlList);
DDX_Text(pDX, IDC_GB_BORROWER, m_strBorrower);
DDX_Text(pDX, IDC_GB_DEPARTMENT, m_strDepartment);
DDX_DateTimeCtrl(pDX, IDC_GB_GBDATE, m_GBDate);
DDX_Text(pDX, IDC_GB_NAME, m_strName);
DDX_Text(pDX, IDC_GB_REMARK, m_strRemark);
DDX_CBString(pDX, IDC_GB_RECIEVER, m_strReciever);
DDX_Text(pDX, IDC_GB_ASSETID, m_strAssetID);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CGiveBack, CDialog)
//{{AFX_MSG_MAP(CGiveBack)
ON_NOTIFY(LVN_ITEMCHANGED, IDC_GB_LIST, OnItemchangedGbList)
ON_BN_CLICKED(IDD_GIVEBACK, OnGiveBack)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CGiveBack message handlers
int CGiveBack::DoModal()
{
// TODO: Add your specialized code here and/or call the base class
return CDialog::DoModal();
}
BOOL CGiveBack::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
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_uaDepartment.Add(var.lVal);
var = m_pRecordset->GetFieldValue(1);
m_saDepartment.Add(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_CtrlCBReciever.AddString(CCrack::strVARIANT(var));
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
}
catch (CDaoException* e)
{
e->ReportError();
e->Delete();
return 0;
}
Refresh();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CGiveBack::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();
int nWidth;
for (int j=0; j < nFields; j++)
{
td.GetFieldInfo(j,fieldInfo);
nWidth = m_CtrlList.GetStringWidth(fieldInfo.m_strName) + 15;
if(j>=2)
m_CtrlList.InsertColumn(j+2,fieldInfo.m_strName, LVCFMT_LEFT, nWidth);
else
m_CtrlList.InsertColumn(j,fieldInfo.m_strName, LVCFMT_LEFT, nWidth);
}
nWidth=100;
m_CtrlList.InsertColumn(2,"资产编号", LVCFMT_LEFT, nWidth);
m_CtrlList.InsertColumn(3,"资产名称", LVCFMT_LEFT, nWidth);
}
catch (CDaoException* e)
{
e->ReportError();
e->Delete();
return;
}
td.Close();
int nItem = 0,i;
try
{
CString select,strSelect(_T("Select * From ["));
strSelect += m_strTableName;
strSelect += _T("]");
m_pRecordset->Open(dbOpenDynaset,strSelect);
while (!m_pRecordset->IsEOF())
{
COleVariant var;
var = m_pRecordset->GetFieldValue(11);
if(CCrack::strVARIANT(var)=="TRUE")
{
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>=2)
{
if(i==5)
{
int j;
for(j=0;j<m_uaDepartment.GetSize();j++)
{
if(m_uaDepartment[j]==unsigned(atoi(CCrack::strVARIANT(var)))) break;
}
m_CtrlList.SetItemText( nItem,i+2,m_saDepartment[j]);
continue;
}
m_CtrlList.SetItemText( nItem,i+2,CCrack::strVARIANT(var));
}
if(i==1)
m_CtrlList.SetItemText( nItem,i,CCrack::strVARIANT(var));
}
CDaoRecordset *m_pSet;
m_pSet=new CDaoRecordset(m_pDatabase);
var = m_pRecordset->GetFieldValue(1);
select.Format("select 资产编号,资产名称 from 资产信息 where 资产ID=%d",atoi(CCrack::strVARIANT(var)));
try{
m_pSet->Open(dbOpenDynaset,select);
var = m_pSet->GetFieldValue(0);
m_CtrlList.SetItemText( nItem,2,CCrack::strVARIANT(var));
var = m_pSet->GetFieldValue(1);
m_CtrlList.SetItemText( nItem,3,CCrack::strVARIANT(var));
m_pSet->Close();
}
catch(CDaoException* e){
m_CtrlList.SetItemText( nItem,2,"该项已删除");
m_CtrlList.SetItemText( nItem,3,"该项已删除");
e->Delete();}
m_pRecordset->MoveNext();
nItem++;
}
}
catch (CDaoException* e)
{
e->ReportError();
e->Delete();
return;
}
m_ID=_T("");
m_strName = _T("");
m_strBorrower=_T("");
m_strDepartment= _T("");
m_strAssetID = _T("");
m_strRemark = _T("");
m_strReciever= _T("");
m_GBDate=CTime::GetCurrentTime();
UpdateData(0);
}
BOOL CGiveBack::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
m_pDatabase->Close();
delete m_pDatabase;
m_pDatabase=NULL;
return CDialog::DestroyWindow();
}
void CGiveBack::OnItemchangedGbList(NMHDR* pNMHDR, LRESULT* pResult)
{
UpdateData(1);
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
if(pNMListView->uNewState&LVIS_SELECTED)
{
char pContent[50] ;
int iCurrent = pNMListView->iItem;
m_CtrlList.GetItemText(iCurrent,1,pContent,50);
m_ID.Format("%s", pContent);
m_CtrlList.GetItemText(iCurrent,2,pContent,50);
m_strAssetID.Format("%s", pContent);
m_CtrlList.GetItemText(iCurrent,3,pContent,50);
m_strName.Format("%s", pContent);
m_CtrlList.GetItemText(iCurrent,4,pContent,50);
m_strBorrower.Format("%s", pContent);
m_CtrlList.GetItemText(iCurrent,7,pContent,50);
m_strDepartment.Format("%s",pContent);
UpdateData(FALSE);
(CButton*)GetDlgItem(IDD_GIVEBACK)->EnableWindow(1);
(CEdit*)GetDlgItem(IDC_GB_REMARK)->EnableWindow(1);
(CComboBox*)GetDlgItem(IDC_GB_RECIEVER)->EnableWindow(1);
(CDateTimeCtrl*)GetDlgItem(IDC_GB_GBDATE)->EnableWindow(1);
}
else
{
if(m_CtrlList.GetSelectedCount()<=0)
{
(CButton*)GetDlgItem(IDD_GIVEBACK)->EnableWindow(0);
(CEdit*)GetDlgItem(IDC_GB_REMARK)->EnableWindow(0);
(CComboBox*)GetDlgItem(IDC_GB_RECIEVER)->EnableWindow(0);
(CDateTimeCtrl*)GetDlgItem(IDC_GB_GBDATE)->EnableWindow(0);
m_ID=_T("");
m_strName = _T("");
m_strBorrower=_T("");
m_strDepartment= _T("");
m_strAssetID = _T("");
m_strRemark = _T("");
m_strReciever= _T("");
m_GBDate=CTime::GetCurrentTime();
UpdateData(0);
}
}
*pResult = 0;
}
void CGiveBack::OnGiveBack()
{
UpdateData(1);
if(!m_pDatabase->IsOpen()) return;
if(!m_pRecordset) return;
if(m_pRecordset->IsOpen()) m_pRecordset->Close();
CString strSql;
//检查数据是否正确
if(m_strReciever.IsEmpty()) {AfxMessageBox("接收人不能为空!");m_CtrlCBReciever.SetFocus();return;}
CPromptDlg dlg;
dlg.m_Prompt="\n还入这些物品?";
if(dlg.DoModal()==IDCANCEL) return;
CString GBDate,useinfo="在库";
GBDate.Format("%d %d %d",m_GBDate.GetYear(),m_GBDate.GetMonth(),m_GBDate.GetDay());//归还日期
UINT uSelectedCount = m_CtrlList.GetSelectedCount();
int nItemIndex = -1,gb=1,nSelectIndex;
CString LoanGb;
// Update all of the selected items.
if (uSelectedCount > 0)
{
while((nItemIndex=m_CtrlList.GetNextItem(nItemIndex,LVNI_SELECTED ) ) != -1 )
{
LoanGb=m_CtrlList.GetItemText ( nItemIndex, 0 );//借出还入ID
nSelectIndex=nItemIndex;
m_ID=m_CtrlList.GetItemText ( nItemIndex, 1 ); //资产ID
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("Update 借出还入资产 set 还入时间='%s',接收人='%s',是否归还=%d where 借出还入ID=%d",GBDate,m_strReciever,gb,atoi(LoanGb));
m_pDatabase->Execute(strSql, dbDenyWrite|dbFailOnError);
}
}
catch(CDaoException* e){
e->ReportError();
e->Delete();}
}
}
(CButton*)GetDlgItem(IDD_GIVEBACK)->EnableWindow(0);
(CEdit*)GetDlgItem(IDC_GB_REMARK)->EnableWindow(0);
(CComboBox*)GetDlgItem(IDC_GB_RECIEVER)->EnableWindow(0);
(CDateTimeCtrl*)GetDlgItem(IDC_GB_GBDATE)->EnableWindow(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 + -