?? rentdlg.cpp
字號:
AfxMessageBox(e->ErrorMessage());
}
}
void CrentDlg::OnButtonQuery()
{
UpdateData(TRUE);
_RecordsetPtr pQueryRecordset;
pQueryRecordset.CreateInstance(__uuidof(Recordset));
CString strDateFrom,strDateTo,strDVD;
CString strSQL,temp;
m_comboDVD.GetWindowText(strDVD);
if((!m_check_Date)&&(m_name.IsEmpty())&&(strDVD.IsEmpty()))
strSQL="select 序號,車牌號, 車主姓名,收費站名稱,收費日期,收費標準 from 收費信息,車主信息,收費站 where 收費信息.收費站ID=收費站.收費站ID and 收費信息.車主ID=車主信息.車主ID";
else strSQL="select 序號,車牌號, 車主姓名,收費站名稱,收費日期,收費標準 from 收費信息,車主信息,收費站 where 收費信息.收費站ID=收費站.收費站ID and 收費信息.車主ID=車主信息.車主ID and ";
if(m_check_Date)
{
CTime timeFrom,timeTo;
m_DateFrom.GetTime(timeFrom);
m_DateTo.GetTime(timeTo);
m_DateFrom.GetWindowText(strDateFrom);
m_DateTo.GetWindowText(strDateTo);
if(timeFrom.GetMonth()>timeTo.GetMonth())
{
MessageBox("Date set is wrong!");
return;
}
else if(timeFrom.GetMonth()==timeTo.GetMonth())
{
if(timeFrom.GetDay()>timeTo.GetDay())
{
MessageBox("Date set is wrong!");
return;
}
}
temp.Format("收費日期>='%s' and 收費日期<='%s'",strDateFrom,strDateTo);
strSQL+=temp;
}
if(!m_name.IsEmpty())
{
if(m_check_Date)
temp.Format("and 車主姓名='%s'",m_name);
else
temp.Format("車主姓名='%s'",m_name);
strSQL+=temp;
}
if(!strDVD.IsEmpty())
{
if((!m_check_Date)&&(m_name.IsEmpty()))
temp.Format("車牌號=%s",strDVD);
else
temp.Format("and 車牌號=%s",strDVD);
strSQL+=temp;
}
try
{
pQueryRecordset->Open(_variant_t(strSQL),
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
return ;
}
if((pQueryRecordset->adoBOF)&&(pQueryRecordset->adoEOF))
MessageBox("there is no records!");
else{
_variant_t var;
CString strValue;
int curItem=0;
m_rentinfoList.DeleteAllItems();
try{
while(!pQueryRecordset->adoEOF)
{
var = pQueryRecordset->GetCollect("序號");
if(var.vt != VT_NULL)
strValue = (LPCSTR)_bstr_t(var);
m_rentinfoList.InsertItem(curItem,strValue);
var = pQueryRecordset->GetCollect("車牌號");
if(var.vt != VT_NULL)
strValue = (LPCSTR)_bstr_t(var);
m_rentinfoList.SetItemText(curItem,1,strValue);
var = pQueryRecordset->GetCollect("車主姓名");
if(var.vt != VT_NULL)
strValue = (LPCSTR)_bstr_t(var);
m_rentinfoList.SetItemText(curItem,2,strValue);
var = pQueryRecordset->GetCollect("收費站名稱");
if(var.vt != VT_NULL)
strValue = (LPCSTR)_bstr_t(var);
m_rentinfoList.SetItemText(curItem,3,strValue);
var = pQueryRecordset->GetCollect("收費日期");
if(var.vt != VT_NULL)
strValue = (LPCSTR)_bstr_t(var);
m_rentinfoList.SetItemText(curItem,4,strValue);
var = pQueryRecordset->GetCollect("收費標準");
if(var.vt != VT_NULL)
strValue = (LPCSTR)_bstr_t(var);
m_rentinfoList.SetItemText(curItem,5,strValue);
pQueryRecordset->MoveNext();
curItem++;
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
}
pQueryRecordset->Close();
pQueryRecordset=NULL;
}
//int CrentDlg::QueryDVDID(CString dvdName)
//{
// _RecordsetPtr pDVDIDRecordset;
// pDVDIDRecordset.CreateInstance(__uuidof(Recordset));
// int value;
// CString strSQL,strValue;
// strSQL.Format("select DVDID from tbdvdinfo where DVDNAME='%s'",dvdName);
// try
// { pDVDIDRecordset->Open(_variant_t(strSQL),
// m_pConnection.GetInterfacePtr(),
// adOpenDynamic,
// adLockOptimistic,
// adCmdText);
// }
// catch(_com_error *e)
// { AfxMessageBox(e->ErrorMessage());
// value=-1;
// return value;
// }
// _variant_t var;
// var = pDVDIDRecordset->GetCollect("DVDID");
// if(var.vt != VT_NULL)
// { strValue = (LPCSTR)_bstr_t(var);
//
// value=atoi(strValue);
// }
// else value=-1;
//
// pDVDIDRecordset->Close();
// pDVDIDRecordset=NULL;
// return value;
//}
void CrentDlg::wm_lbuttondown()
{
// TODO: 在此添加控件通知處理程序代碼
OnButtonQuery();
}
void CrentDlg::OnBnClickedCheck3()
{
// TODO: 在此添加控件通知處理程序代碼
OnCheckDate();
}
void CrentDlg::OnButtonRent()
{
CRentDVDDlg dlg;
//如果出租則更新LIST控件的數據
//CRentDVDDlg.DoModal());
if(IDOK == dlg.DoModal())
//ShowWindow(IDD_DIALOG_RENT);
UpdateList();
}
void CrentDlg::UpdateList()
{m_rentinfoList.DeleteAllItems();
InitListCtr();
}
//void CrentDlg::OnLvnItemchangedList1(NMHDR *pNMHDR, LRESULT *pResult)
//{
// LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
// // TODO: 在此添加控件通知處理程序代碼
// *pResult = 0;
//}
void CrentDlg::AddDVDNum(CString strDVDID)
{
_RecordsetPtr pDVDRecordset;
pDVDRecordset.CreateInstance(__uuidof(Recordset));
_bstr_t vSQL;
vSQL="select * from tbdvdinfo where DVDID="+strDVDID;
try
{
pDVDRecordset->Open(vSQL,
m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
return;
}
if((pDVDRecordset->adoBOF)&&(pDVDRecordset->adoEOF))
{ MessageBox("error!");
pDVDRecordset->Close();
pDVDRecordset=NULL;
return;
}
_variant_t var;
CString strValue;
int dvdNum;
try
{
var=pDVDRecordset->GetCollect("Num");
if(var.vt != VT_NULL)
{
strValue = (LPCSTR)_bstr_t(var);
dvdNum=atoi(strValue);
dvdNum+=1;
strValue.Format("%d",dvdNum);
pDVDRecordset->PutCollect("Num",_variant_t(strValue));
pDVDRecordset->Update();
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
pDVDRecordset->Close();
pDVDRecordset=NULL;
}
void CrentDlg::DeleteRecord(CString ID,CString dvdName)
{
HRESULT hr;
_bstr_t vSQL;
vSQL="delete from tbrentinfo where ID="+ID;
_variant_t RecordsAffected;
try
{
hr=m_pConnection->Execute(_bstr_t(vSQL),&RecordsAffected,adCmdText);
if(SUCCEEDED(hr))
{
//int dvdID=QueryDVDID(dvdName);
//調用使用存儲過程的函數
int dvdID=QueryDVDIDSP(dvdName);
CString strDVDID;
strDVDID.Format("%d",dvdID);
//修改tbDVDInfo表中Num字段的值
AddDVDNum(strDVDID);
}
}
catch (_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
return ;
}
}
void CrentDlg::DeleteRecordTran(CString ID)
{
_bstr_t vSQL;
_variant_t RecordsAffected;
//pDVDRecordset.CreateInstance(__uuidof(Recordset));
//獲得影碟編號DVDID
//strDVDID.Format("%d",dvdID);
vSQL="delete from 收費信息 where 序號="+ID;
try
{ m_pConnection->BeginTrans();
m_pConnection->Execute(_bstr_t(vSQL),&RecordsAffected,adCmdText);
m_pConnection->CommitTrans();
}
catch(_com_error *e)
{
m_pConnection->RollbackTrans();
AfxMessageBox(e->ErrorMessage());
}
}
int CrentDlg::QueryDVDIDSP(CString dvdName)
{
_CommandPtr pIDCommand;
pIDCommand.CreateInstance(__uuidof(Command));
_bstr_t storeproc("getIDbyName");
_variant_t var;
CString strValue;
int IDvalue;
try{
pIDCommand->ActiveConnection=m_pConnection;
pIDCommand->CommandText=storeproc;
pIDCommand->CommandType=adCmdStoredProc;
pIDCommand->Parameters->Refresh();
pIDCommand->Parameters->Item[_variant_t((long)1)]->Value=_variant_t((LPCTSTR)dvdName);
_RecordsetPtr pIDRecordset;
pIDRecordset.CreateInstance(__uuidof(Recordset));
pIDRecordset=pIDCommand->Execute(NULL,NULL,adCmdStoredProc);
if((pIDRecordset->adoBOF)&&(pIDRecordset->adoEOF))
{
MessageBox("error!");
pIDRecordset->Close();
pIDRecordset=NULL;
return -1;
}
var=pIDRecordset->GetCollect("DVDID");
pIDRecordset->Close();
pIDRecordset=NULL;
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
return -1;
}
if(var.vt != VT_NULL)
{
strValue = (LPCSTR)_bstr_t(var);
IDvalue=atoi(strValue);
return IDvalue;
}
else return-1;
}
CString CrentDlg::QueryDVDNameSP(CString dvdID)
{
_CommandPtr pNameCommand;
pNameCommand.CreateInstance(__uuidof(Command));
_bstr_t storeproc("getNamebyID");
_variant_t var;
long ID=atol(dvdID);
CString strValue="";
try{
pNameCommand->ActiveConnection=m_pConnection;
pNameCommand->CommandText=storeproc;
pNameCommand->CommandType=adCmdStoredProc;
pNameCommand->Parameters->Refresh();
pNameCommand->Parameters->Item[_variant_t((long)1)]->Value=_variant_t(ID);
_RecordsetPtr pNameRecordset;
pNameRecordset.CreateInstance(__uuidof(Recordset));
pNameRecordset=pNameCommand->Execute(NULL,NULL,adCmdStoredProc);
if((pNameRecordset->adoBOF)&&(pNameRecordset->adoEOF))
{
MessageBox("error!");
pNameRecordset->Close();
pNameRecordset=NULL;
return strValue;
}
var=pNameRecordset->GetCollect("DVDNAME");
pNameRecordset->Close();
pNameRecordset=NULL;
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
return strValue;
}
if(var.vt != VT_NULL)
{
strValue = (LPCSTR)_bstr_t(var);
}
return strValue;
}
void CrentDlg::OnBnClickedCdelete()
{
OnButtonDelete1();// TODO: 在此添加控件通知處理程序代碼
}
void CrentDlg::OnButtonDelete1()
{
// TODO: 在此添加控件通知處理程序代碼
//OnCancel();
int sel=m_rentinfoList.GetSelectionMark();
if(sel>=0 && AfxMessageBox("是否刪除?",MB_YESNO) == IDYES)
{
CString rentid=m_rentinfoList.GetItemText(sel,0);
//DeleteRecord(rentid,dvdName);
DeleteRecordTran(rentid);
m_rentinfoList.DeleteItem(sel);
}
else if(sel<0) MessageBox("列表中無選中記錄!");
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -