?? addmodifyassets.cpp
字號:
CString CAddModifyAssets::IdToString(int ID,int Index) //將索引ID轉換為字符
{
CStringArray sa;
CUIntArray ua;
bool flag=0; //flang用于標識,是否通過索引找到了對應值
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 CAddModifyAssets::OnAddModify()
{
UpdateData(1);
if(!AddModify)//修改
{
UINT uSelectedCount = m_CtrlList.GetSelectedCount();
if (uSelectedCount <1)
{
MessageBox("請選擇記錄中的一項","修改提示");
return;
}
}
//判斷數據是否填全
if(m_strName.IsEmpty()) {AfxMessageBox("資產名稱不能為空!");m_CtrlEditName.SetFocus();return;}
if(m_strAssetID.IsEmpty()) {AfxMessageBox("資產編號不能為空!");m_CtrlEditAssetID.SetFocus();return;}
if(m_strType.IsEmpty()) {AfxMessageBox("型號不能為空!");m_CtrlEditType.SetFocus();return;}
if(m_CtrlCBDepreciation.GetCurSel()==-1) {AfxMessageBox("折舊方式不能為空!");m_CtrlCBDepreciation.SetFocus();return;}
if(m_strFactory.IsEmpty()) {AfxMessageBox("生產廠家不能為空!");m_CtrlCBFactory.SetFocus();return;}
if(m_CtrlCBDepartment.GetCurSel()==-1) {AfxMessageBox("使用部門不能為空!");m_CtrlCBDepartment.SetFocus();return;}
if(m_CtrlCBDepositary.GetCurSel()==-1) {AfxMessageBox("存放地點不能為空!");m_CtrlCBDepositary.SetFocus();return;}
if(m_CtrlCBSort.GetCurSel()==-1) {AfxMessageBox("資產類別不能為空!");m_CtrlCBSort.SetFocus();return;}
if(m_strUseInfo.IsEmpty()) {AfxMessageBox("使用情況不能為空!");m_CtrlCBUseInfo.SetFocus();return;}
if(m_CtrlCBAddType.GetCurSel()==-1) {AfxMessageBox("增加方式不能為空!");m_CtrlCBAddType.SetFocus();return;}
if(m_CtrlCBKeeper.GetCurSel()==-1) {AfxMessageBox("保管人員不能為空!");m_CtrlCBKeeper.SetFocus();return;}
if(!m_pDatabase->IsOpen()) return;
if(!m_pRecordset) return;
if(m_pRecordset->IsOpen()) m_pRecordset->Close();
int Sort,Department,Depositary,AddType,Keeper;
CString strSql;
if(AddModify)//添加
{
CPromptDlg dlg;
dlg.m_Prompt="\n添加該信息?";
if(dlg.DoModal()==IDCANCEL) return;
Sort=m_CtrlCBSort.GetItemData(m_CtrlCBSort.GetCurSel()); //資產類別
Department=m_CtrlCBDepartment.GetItemData(m_CtrlCBDepartment.GetCurSel());//部門
Depositary=m_CtrlCBDepositary.GetItemData(m_CtrlCBDepositary.GetCurSel());//存放地點
AddType=m_CtrlCBAddType.GetItemData(m_CtrlCBAddType.GetCurSel());//增加方式
Keeper=m_CtrlCBKeeper.GetItemData(m_CtrlCBKeeper.GetCurSel());//保管人員
CString LFDate,InDate,Depreciation;
LFDate.Format("%d %d %d",m_LFDate.GetYear(),m_LFDate.GetMonth(),m_LFDate.GetDay());//出廠日期
InDate.Format("%d %d %d",m_InDate.GetYear(),m_InDate.GetMonth(),m_InDate.GetDay());//購買日期
m_CtrlCBDepreciation.GetLBText(m_CtrlCBDepreciation.GetCurSel(),Depreciation); //折舊方式
//將數據加入數據庫
strSql.Format("insert into 資產信息(資產名稱,資產類別ID,型號,生產廠家,出廠日期,國際編號,購買日期,\
凈殘值率,使用年限,原值,凈值,折舊方式,資產編號,使用情況,使用部門ID,存放地點ID,增加方式ID,保管人員ID,\
備注) values('%s',%d,'%s','%s','%s','%s','%s',%0.3f,%d,%f,%f,'%s','%s','%s',%d,%d,%d,%d,'%s')",m_strName,\
Sort,m_strType,m_strFactory,LFDate,m_strInterID,InDate,m_dLRatio,m_nYearNum,m_dOrigValue,\
m_LeftValue,Depreciation,m_strAssetID,m_strUseInfo,Department,Depositary,AddType,Keeper,m_strRemark);
try{
if(m_pDatabase->CanUpdate())
{
m_pDatabase->Execute(strSql, dbDenyWrite|dbFailOnError);
}
}
catch(CDaoException* e){
MessageBox("資產編號不能重復!\n 添加信息失敗","添加提示");//提示資產編號不能重復
e->Delete();
m_strAssetID=_T("");
UpdateData(0);
return;}
Refresh();
//使新添加的記錄處于選中狀態
int nSelectIndex=m_CtrlList.GetItemCount();
m_CtrlList.EnsureVisible(nSelectIndex-1,nSelectIndex+5);
m_CtrlList.SetItemState(nSelectIndex-1, LVIS_SELECTED, LVIS_SELECTED);
m_strAssetID=_T("");
UpdateData(0);
}
else//修改
{
CPromptDlg dlg;
dlg.m_Prompt="\n修改該信息?";
if(dlg.DoModal()==IDCANCEL)
{
Refresh();
return;
}
int nSelectIndex=m_CtrlList.GetNextItem(-1,LVNI_SELECTED);
Sort=m_CtrlCBSort.GetItemData(m_CtrlCBSort.GetCurSel()); //資產類別
Department=m_CtrlCBDepartment.GetItemData(m_CtrlCBDepartment.GetCurSel());//部門
Depositary=m_CtrlCBDepositary.GetItemData(m_CtrlCBDepositary.GetCurSel());//存放地點
AddType=m_CtrlCBAddType.GetItemData(m_CtrlCBAddType.GetCurSel());//增加方式
Keeper=m_CtrlCBKeeper.GetItemData(m_CtrlCBKeeper.GetCurSel());//保管人員
CString LFDate,InDate,Depreciation;
LFDate.Format("%d %d %d",m_LFDate.GetYear(),m_LFDate.GetMonth(),m_LFDate.GetDay());//出廠日期
InDate.Format("%d %d %d",m_InDate.GetYear(),m_InDate.GetMonth(),m_InDate.GetDay());//購買日期
m_CtrlCBDepreciation.GetLBText(m_CtrlCBDepreciation.GetCurSel(),Depreciation); //折舊方式
strSql.Format("update 資產信息 set 資產名稱='%s',資產類別ID=%d,型號='%s',生產廠家='%s',出廠日期='%s',國際編號='%s',購買日期='%s',\
凈殘值率=%0.3f,使用年限=%d,原值=%f,凈值=%f,折舊方式='%s',資產編號='%s',使用情況='%s',使用部門ID=%d,存放地點ID=%d,增加方式ID=%d,保管人員ID=%d,\
備注='%s' where 資產ID=%d",m_strName,Sort,m_strType,m_strFactory,LFDate,m_strInterID,InDate,m_dLRatio,m_nYearNum,m_dOrigValue,\
m_LeftValue,Depreciation,m_strAssetID,m_strUseInfo,Department,Depositary,AddType,Keeper,m_strRemark,atoi(m_ID));
try{
if(m_pDatabase->CanUpdate())
{
m_pDatabase->Execute(strSql, dbDenyWrite|dbFailOnError);
Refresh();
//使剛剛修改過的內容處于選中狀態
m_CtrlList.EnsureVisible(nSelectIndex,nSelectIndex+5);
m_CtrlList.SetItemState(nSelectIndex, LVIS_SELECTED, LVIS_SELECTED);
Empty(); //清空控件中的內容
}
}
catch(CDaoException* e){
MessageBox("資產編號不能重復!\n 添加信息失敗","修改提示");//提示資產編號不能重復
e->Delete();
m_strAssetID=_T("");
UpdateData(0);
return;}
}
}
void CAddModifyAssets::OnRefreshDelet()
{
if(AddModify)//刷新
{
Refresh();
Empty();
}
else//刪除
{
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();
int nItemIndex = -1,nSelectIndex=-1;
// 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;
CPromptDlg dlg;
bool DelFlag=0;
CString sql;
sql.Format("Select 資產ID From 借出還入資產 where 資產ID=%d",atoi(m_ID));
try{
m_pRecordset->Open(dbOpenDynaset,sql);
while (!m_pRecordset->IsEOF())
{
DelFlag=1;
break;
}
m_pRecordset->Close();
}
catch(CDaoException* e){
e->Delete();}
if(!DelFlag)
{
sql.Format("Select 資產ID From 清理資產 where 資產ID=%d",atoi(m_ID));
try{
m_pRecordset->Open(dbOpenDynaset,sql);
while (!m_pRecordset->IsEOF())
{
DelFlag=1;
break;
}
m_pRecordset->Close();
}
catch(CDaoException* e){
e->Delete();}
}
if(!DelFlag)
{
sql.Format("Select 資產ID From 維修資產 where 資產ID=%d",atoi(m_ID));
try{
m_pRecordset->Open(dbOpenDynaset,sql);
while (!m_pRecordset->IsEOF())
{
DelFlag=1;
break;
}
m_pRecordset->Close();
}
catch(CDaoException* e){
e->Delete();}
}
if(DelFlag)
dlg.m_Prompt.Format("有其他項與%s關聯,刪除后所有與該項相關聯的記錄都將被標識為“該項已刪除”,是否繼續刪除?",m_CtrlList.GetItemText(nItemIndex, 1));
else
dlg.m_Prompt.Format("\n刪除資產%s ?",m_CtrlList.GetItemText(nItemIndex, 1));
Fill(nItemIndex);
if(dlg.DoModal()==IDCANCEL)
{
continue;
}
strSql.Format("delete from 資產信息 where 資產ID=%d",atoi(m_ID));
try{
if(m_pDatabase->CanUpdate())
{
m_pDatabase->Execute(strSql, dbDenyWrite|dbConsistent);
Empty();
}
}
catch(CDaoException* e){
e->ReportError();
e->Delete();}
}
Refresh();
//使刪除記錄的下一條處于選中狀態
if(nSelectIndex>=m_CtrlList.GetItemCount())
nSelectIndex=m_CtrlList.GetItemCount()-1;
m_CtrlList.EnsureVisible(nSelectIndex,nSelectIndex+1);
m_CtrlList.SetItemState(nSelectIndex,LVIS_SELECTED, LVIS_SELECTED);
}
else
{ MessageBox("請選擇記錄中的一項","刪除提示");return;}
}
}
void CAddModifyAssets::OnItemchangedAmList(NMHDR* pNMHDR, LRESULT* pResult)
{
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
if(pNMListView->uNewState&LVIS_SELECTED)
{
int iCurrent = pNMListView->iItem;
Fill(iCurrent);
if(!AddModify)
SetEditable(1);
}
else
{
m_ID=_T("");
if(!AddModify&&m_CtrlList.GetSelectedCount()<=0)
{
SetEditable(0);
Empty();
}
}
*pResult = 0;
}
void CAddModifyAssets::Fill(int iCurrent)
{
char pContent[50] ;
CString temp;
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,4,pContent,50);
m_strType.Format("%s",pContent);
m_CtrlList.GetItemText(iCurrent,5,pContent,50);
m_strFactory.Format("%s",pContent);
m_CtrlList.GetItemText(iCurrent,7,pContent,50);
m_strInterID.Format("%s",pContent);
m_CtrlList.GetItemText(iCurrent,9,pContent,50);
temp.Format("%s",pContent);
m_dLRatio=atof(temp);
m_CtrlList.GetItemText(iCurrent,10,pContent,50);
temp.Format("%s",pContent);
m_nYearNum=atoi(temp);
m_CtrlList.GetItemText(iCurrent,11,pContent,50);
temp.Format("%s",pContent);
m_dOrigValue=atof(temp);
m_CtrlList.GetItemText(iCurrent,12,pContent,50);
temp.Format("%s",pContent);
m_LeftValue=atof(temp);
m_CtrlList.GetItemText(iCurrent,14,pContent,50);
m_strUseInfo.Format("%s",pContent);
m_CtrlList.GetItemText(iCurrent,19,pContent,50);
m_strRemark.Format("%s",pContent);
CString str,year,month,day;
m_CtrlList.GetItemText(iCurrent,3,pContent,50); //資產類別
str.Format("%s",pContent);
m_CtrlCBSort.SetCurSel(m_CtrlCBSort.FindString(0,str));
m_CtrlList.GetItemText(iCurrent,6,pContent,50); // 出廠日期
str.Format("%s",pContent);
if(str.GetAt(6)=='0')
year.Format("20%c%c",str.GetAt(6),str.GetAt(7));
else
year.Format("19%c%c",str.GetAt(6),str.GetAt(7));
month.Format("%c%c",str.GetAt(0),str.GetAt(1));
day.Format("%c%c",str.GetAt(3),str.GetAt(4));
CTime time1(atoi(year),atoi(month),atoi(day),0,0,0);
m_LFDate=time1;
m_CtrlList.GetItemText(iCurrent,8,pContent,50); // 購買日期
str.Format("%s",pContent);
if(str.GetAt(6)=='0')
year.Format("20%c%c",str.GetAt(6),str.GetAt(7));
else
year.Format("19%c%c",str.GetAt(6),str.GetAt(7));
month.Format("%c%c",str.GetAt(0),str.GetAt(1));
day.Format("%c%c",str.GetAt(3),str.GetAt(4));
CTime time2(atoi(year),atoi(month),atoi(day),0,0,0);
m_InDate=time2;
m_CtrlList.GetItemText(iCurrent,13,pContent,50); //折舊方式
str.Format("%s",pContent);
m_CtrlCBDepreciation.SetCurSel(m_CtrlCBDepreciation.FindString(0,str));
m_CtrlList.GetItemText(iCurrent,15,pContent,50); //使用部門
str.Format("%s",pContent);
m_CtrlCBDepartment.SetCurSel(m_CtrlCBDepartment.FindString(0,str));
m_CtrlList.GetItemText(iCurrent,16,pContent,50); //存放地點
str.Format("%s",pContent);
m_CtrlCBDepositary.SetCurSel(m_CtrlCBDepositary.FindString(0,str));
m_CtrlList.GetItemText(iCurrent,17,pContent,50); //增加方式
str.Format("%s",pContent);
m_CtrlCBAddType.SetCurSel(m_CtrlCBAddType.FindString(0,str));
m_CtrlList.GetItemText(iCurrent,18,pContent,50); //保管人員
str.Format("%s",pContent);
m_CtrlCBKeeper.SetCurSel(m_CtrlCBKeeper.FindString(0,str));
UpdateData(FALSE);
}
void CAddModifyAssets::OnChangeAmOrigvalue()
{
UpdateData(1);
m_LeftValue=m_dOrigValue;
UpdateData(0);
}
BOOL CAddModifyAssets::DestroyWindow()
{
m_pDatabase->Close();
delete m_pDatabase;
m_pDatabase=NULL;
return CDialog::DestroyWindow();
}
void CAddModifyAssets::OnChangeAmLeftvalue()
{
UpdateData(1);
}
void CAddModifyAssets::OnChangeLratio()
{
UpdateData(1);
}
void CAddModifyAssets::OnChangeAmYearnum()
{
UpdateData(1);
}
void CAddModifyAssets::OnSelchangeAmAddtype()
{
CString str;
m_CtrlCBAddType.GetLBText(m_CtrlCBAddType.GetCurSel(),str);
if(str=="融資租入")
{
m_CtrlCBDepreciation.SetCurSel(4);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -