⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 searchpage.cpp

📁 bookman电子图书馆
💻 CPP
字号:
// SearchPage.cpp : implementation file
//

#include "stdafx.h"
#include "bookMan.h"
#include "SearchPage.h"
#include "bookManView.h"
#include "MainFrm.h"
#include "AdoBind.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSearchPage dialog


CSearchPage::CSearchPage(CWnd* pParent /*=NULL*/)
	: CDialog(CSearchPage::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSearchPage)
	m_nSearchType = -1;
	m_nBigType = -1;
	m_strType = _T("");
	m_strPress = _T("");
	m_buyDate = COleDateTime::GetCurrentTime();
	m_strAuthor = _T("");
	m_strBookName = _T("");
	m_fPrice = 0.0f;
	//}}AFX_DATA_INIT
}


void CSearchPage::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSearchPage)
	DDX_Control(pDX, IDC_SEARCH_COMBO_SEARCHKIND, m_searchKind);
	DDX_Control(pDX, IDC_SEARCH_LIST_RESULT, m_result);
	DDX_CBIndex(pDX, IDC_SEARCH_COMBO_SEARCHTYPE, m_nSearchType);
	DDX_CBIndex(pDX, IDC_SEARCH_COMBO_SEARCHKIND, m_nBigType);
	DDX_CBString(pDX, IDC_SEARCH_COMBO_TYPE, m_strType);
	DDV_MaxChars(pDX, m_strType, 10);
	DDX_CBString(pDX, IDC_SEARCH_COMBO_PRESS, m_strPress);
	DDV_MaxChars(pDX, m_strPress, 30);
	DDX_DateTimeCtrl(pDX, IDC_SEARCH_DATETIMEPICKER_BUYDATE, m_buyDate);
	DDX_Text(pDX, IDC_SEARCH_EDIT_AUTHOR, m_strAuthor);
	DDV_MaxChars(pDX, m_strAuthor, 10);
	DDX_Text(pDX, IDC_SEARCH_EDIT_NAME, m_strBookName);
	DDV_MaxChars(pDX, m_strBookName, 10);
	DDX_Text(pDX, IDC_SEARCH_EDIT_PRICE, m_fPrice);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSearchPage, CDialog)
	//{{AFX_MSG_MAP(CSearchPage)
	ON_WM_CTLCOLOR()
	ON_BN_CLICKED(IDC_SEARCH_BUTTON_SUBMIT, OnSearchButtonSubmit)
	ON_CBN_SELCHANGE(IDC_SEARCH_COMBO_SEARCHTYPE, OnSelchangeSearchComboSearchtype)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSearchPage message handlers

void CSearchPage::OnOK()
{

}

void CSearchPage::OnCancel()
{

}

HBRUSH CSearchPage::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
{
	HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
	
	return hbr;
}

BOOL CSearchPage::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	//设置物种组合框的图像列表
	iSearchKind.Create(16,16,TRUE,3,1);
	AddBitmap(IDB_BOOK);
	AddBitmap(IDB_CDROM);
	AddBitmap(IDB_PAPER);

	COMBOBOXEXITEM buyItem[3];
	LPTSTR pszText[3]={"书籍杂志","软件光盘","报刊读物"};
	for(int i=0;i<3;i++)
	{
		buyItem[i].mask=CBEIF_TEXT|CBEIF_IMAGE|CBEIF_SELECTEDIMAGE;
		buyItem[i].iItem=i;
		buyItem[i].pszText=pszText[i];
		buyItem[i].iImage=i;
		buyItem[i].iSelectedImage=i;
		m_searchKind.InsertItem(&buyItem[i]);
	}
	m_searchKind.SetCurSel(0);
	m_searchKind.SetImageList(&iSearchKind);

	brush.CreateSolidBrush(RGB(255,224,240));
	//得到TAB控件的客户区大小
	CRect tabRect;
	((CBookManView *)((CMainFrame *)AfxGetMainWnd())->GetActiveView())->m_tabCtrl.GetClientRect(&tabRect);
	//设置对话框大小,使其与TAB控件相适应
	SetWindowPos(NULL,0,0,tabRect.Width()-SP_RIGHT,tabRect.Height()-SP_BOTTOM,SWP_NOMOVE);
	//得到TAB控件的WINDOW位置大小
	CRect tabWindowRect;
	((CBookManView *)((CMainFrame *)AfxGetMainWnd())->GetActiveView())->m_tabCtrl.GetWindowRect(&tabWindowRect);
	//得到LIST控件的窗口位置
	CRect listWindowRect;
	m_result.GetWindowRect(&listWindowRect);
	//设置列表控件的初始大小
	m_result.SetWindowPos(NULL,0,0,tabWindowRect.right-listWindowRect.left-10,tabWindowRect.bottom-listWindowRect.top-10,SWP_NOMOVE);
	//向列表控件插入列项目
	m_result.InsertColumn(0,"种类",LVCFMT_LEFT,80,0);
	m_result.InsertColumn(1,"名称",LVCFMT_LEFT,100,1);
	m_result.InsertColumn(2,"出版社",LVCFMT_LEFT,130,2);
	m_result.InsertColumn(3,"类型",LVCFMT_LEFT,100,3);
	m_result.InsertColumn(4,"作者",LVCFMT_LEFT,100,4);
	m_result.InsertColumn(5,"ISBN编号",LVCFMT_LEFT,120,5);
	m_result.InsertColumn(6,"价格",LVCFMT_LEFT,80,6);
	m_result.InsertColumn(7,"拆扣",LVCFMT_LEFT,80,7);
	m_result.InsertColumn(8,"拆后价",LVCFMT_LEFT,80,8);
	m_result.InsertColumn(9,"供应商",LVCFMT_LEFT,130,9);
	m_result.InsertColumn(10,"交易日期",LVCFMT_LEFT,130,10);
	m_result.InsertColumn(11,"备注",LVCFMT_LEFT,150,11);
	//设置列表控件扩展属性
	m_result.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_TRACKSELECT|
		LVS_EX_HEADERDRAGDROP|LVS_EX_GRIDLINES);
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CSearchPage::AddBitmap(UINT nID)
{
	BOOL breturn;
	CBitmap bm;
	breturn=bm.LoadBitmap(nID);
	if(breturn)
	{
		iSearchKind.Add(&bm,RGB(255,255,255));
		bm.DeleteObject();
	}
}

void CSearchPage::OnSearchButtonSubmit() 
{
	UpdateData();
	CString strBigType,strSmallType,strQuery1,strQuery2,strQuery3;
	if(m_nBigType==0)
		strBigType="书籍杂志";
	else if(m_nBigType==1)
		strBigType="软件光盘";
	else
		strBigType="报刊读物";
	switch(m_nSearchType)
	{
	case 0:
		strQuery1="select * from BUY where BIGTYPE='"+strBigType+"' and NAME='"+m_strBookName+"'";
		strQuery2="select * from BAD where BIGTYPE='"+strBigType+"' and NAME='"+m_strBookName+"'";
		strQuery3="select * from BORROW where BIGTYPE='"+strBigType+"' and NAME='"+m_strBookName+"'";
		break;
	case 1:
		strQuery1="select * from BUY where BIGTYPE='"+strBigType+"' and CBS='"+m_strPress+"'";
		strQuery2="select * from BAD where BIGTYPE='"+strBigType+"' and CBS='"+m_strPress+"'";
		strQuery3="select * from BORROW where BIGTYPE='"+strBigType+"' and CBS='"+m_strPress+"'";
		break;
	case 2:
		strQuery1="select * from BUY where BIGTYPE='"+strBigType+"' and TYPE='"+m_strType+"'";
		strQuery2="select * from BAD where BIGTYPE='"+strBigType+"' and TYPE='"+m_strType+"'";
		strQuery3="select * from BORROW where BIGTYPE='"+strBigType+"' and TYPE='"+m_strType+"'";
		break;
	case 3:
		strQuery1="select * from BUY where BIGTYPE='"+strBigType+"' and AUTHOR='"+m_strAuthor+"'";
		strQuery2="select * from BAD where BIGTYPE='"+strBigType+"' and AUTHOR='"+m_strAuthor+"'";
		strQuery3="select * from BORROW where BIGTYPE='"+strBigType+"'";
		break;
	case 4:
		strSmallType.Format("%5.2f",m_fPrice);
		strQuery1="select * from BUY where BIGTYPE='"+strBigType+"' and PRICE="+strSmallType;
		strQuery2="select * from BAD where BIGTYPE='"+strBigType+"' and PRICE="+strSmallType;
		strQuery3="select * from BORROW where BIGTYPE='"+strBigType+"'";
		break;
	case 5:
		//strSmallType=m_buyDate.Format("%Y-%m-%d");
		strSmallType=m_buyDate.Format("%m/%d/%Y");
		strQuery1="select * from BUY where BIGTYPE='"+strBigType+"' and DOTIME=#"+strSmallType+"#";
		strQuery2="select * from BAD where BIGTYPE='"+strBigType+"' and BUYTIME=#"+strSmallType+"#";
		strQuery3="select * from BORROW where BIGTYPE='"+strBigType+"'";
		break;
	}

	_RecordsetPtr pRst=NULL;
	IADORecordBinding *picRs=NULL;
	CAdoBind rs;
	CBadAdoBind rs1;
	CBorrowAdoBind rs2;
	m_result.DeleteAllItems();
	try{
		TESTHR(pRst.CreateInstance("ADODB.Recordset"));
		pRst->Open(strQuery1.AllocSysString(),pConn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
		TESTHR(pRst->QueryInterface(__uuidof(IADORecordBinding),(LPVOID *)&picRs));
		TESTHR(picRs->BindToRecordset(&rs));
		int item=0;
		CString str,strType;
		while(!pRst->adoEOF)
		{
			str.Format("%s",rs.m_szFlag);
			m_result.InsertItem(item,str);
			str.Format("%s",rs.m_szName);
			m_result.SetItemText(item,1,str);
			str.Format("%s",rs.m_szCbs);
			m_result.SetItemText(item,2,str);
			str.Format("%s",rs.m_szType);
			m_result.SetItemText(item,3,str);
			str.Format("%s",rs.m_szAuthor);
			m_result.SetItemText(item,4,str);
			str.Format("%s",rs.m_szIsbn);
			m_result.SetItemText(item,5,str);
			str.Format("%5.2f",rs.m_fPrice);
			m_result.SetItemText(item,6,str);
			str.Format("%4.2f",rs.m_fPreferential);
			m_result.SetItemText(item,7,str);
			str.Format("%5.2f",rs.m_fAfterPrefe);
			m_result.SetItemText(item,8,str);
			str.Format("%s",rs.m_szSupply);
			m_result.SetItemText(item,9,str);
			str.Format("%s",rs.m_szDoTime);
			m_result.SetItemText(item,10,str);
			item++;
			pRst->MoveNext();
		}
		picRs->Release();
		pRst->Close();

		pRst->Open(strQuery2.AllocSysString(),pConn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
		TESTHR(pRst->QueryInterface(__uuidof(IADORecordBinding),(LPVOID *)&picRs));
		TESTHR(picRs->BindToRecordset(&rs1));
		while(!pRst->adoEOF)
		{
			str.Format("%s",rs1.m_szFlag);
			strType=str;
			m_result.InsertItem(item,str);
			str.Format("%s",rs1.m_szName);
			m_result.SetItemText(item,1,str);
			str.Format("%s",rs1.m_szCbs);
			m_result.SetItemText(item,2,str);
			str.Format("%s",rs1.m_szType);
			m_result.SetItemText(item,3,str);
			str.Format("%s",rs1.m_szAuthor);
			m_result.SetItemText(item,4,str);
			str.Format("%s",rs1.m_szIsbn);
			m_result.SetItemText(item,5,str);
			str.Format("%5.2f",rs1.m_fPrice);
			m_result.SetItemText(item,6,str);
			str.Format("%s",rs1.m_szSupply);
			m_result.SetItemText(item,9,str);
			str.Format("%s",rs1.m_szBuyTime);
			m_result.SetItemText(item,10,str);
			if(strType=="损坏")
			{
				str.Format("%s",rs1.m_szBadTime);
				m_result.SetItemText(item,11,str);
			}
			else
			{
				str.Format("%s",rs1.m_szDiscardTIme);
				m_result.SetItemText(item,11,str);
			}
			item++;
			pRst->MoveNext();
		}
		picRs->Release();
		pRst->Close();

		pRst->Open(strQuery3.AllocSysString(),pConn.GetInterfacePtr(),adOpenStatic,adLockOptimistic,adCmdText);
		TESTHR(pRst->QueryInterface(__uuidof(IADORecordBinding),(LPVOID *)&picRs));
		TESTHR(picRs->BindToRecordset(&rs2));
		//CString str;
		while(!pRst->adoEOF)
		{
			str.Format("%s",rs2.m_szFlag);
			strType=str;
			m_result.InsertItem(item,str);
			str.Format("%s",rs2.m_szName);
			m_result.SetItemText(item,1,str);
			str.Format("%s",rs2.m_szCbs);
			m_result.SetItemText(item,2,str);
			str.Format("%s",rs2.m_szType);
			m_result.SetItemText(item,3,str);
			if(strType=="借入")
			{
				str.Format("%s",rs2.m_szBinTime);
				m_result.SetItemText(item,11,str);
			}
			else
			{
				str.Format("%s",rs2.m_szBoutTime);
				m_result.SetItemText(item,11,str);
			}
			item++;
			pRst->MoveNext();
		}
		picRs->Release();
		pRst->Close();
	}
	catch(_com_error &e)
	{
		DisplayAdoError(e);
		return;
	}
}

void CSearchPage::OnSelchangeSearchComboSearchtype() 
{
	GetDlgItem(IDC_SEARCH_EDIT_NAME)->EnableWindow(FALSE);
	GetDlgItem(IDC_SEARCH_COMBO_PRESS)->EnableWindow(FALSE);
	GetDlgItem(IDC_SEARCH_COMBO_TYPE)->EnableWindow(FALSE);
	GetDlgItem(IDC_SEARCH_EDIT_AUTHOR)->EnableWindow(FALSE);
	GetDlgItem(IDC_SEARCH_EDIT_PRICE)->EnableWindow(FALSE);
	GetDlgItem(IDC_SEARCH_DATETIMEPICKER_BUYDATE)->EnableWindow(FALSE);
	UpdateData();
	switch(m_nSearchType)
	{
	case 0:
		GetDlgItem(IDC_SEARCH_EDIT_NAME)->EnableWindow(TRUE);
		break;
	case 1:
		GetDlgItem(IDC_SEARCH_COMBO_PRESS)->EnableWindow(TRUE);
		break;
	case 2:
		GetDlgItem(IDC_SEARCH_COMBO_TYPE)->EnableWindow(TRUE);
		break;
	case 3:
		GetDlgItem(IDC_SEARCH_EDIT_AUTHOR)->EnableWindow(TRUE);
		break;
	case 4:
		GetDlgItem(IDC_SEARCH_EDIT_PRICE)->EnableWindow(TRUE);
		break;
	case 5:
		GetDlgItem(IDC_SEARCH_DATETIMEPICKER_BUYDATE)->EnableWindow(TRUE);
		break;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -