query.cpp

来自「这是我做的一个电子图书管理系统的软件程序。希望对大家有帮助!」· C++ 代码 · 共 184 行

CPP
184
字号
// Query.cpp : implementation file
//

#include "stdafx.h"
#include "BOOKS.h"
#include "Query.h"

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

/////////////////////////////////////////////////////////////////////////////
// CQuery dialog


CQuery::CQuery(CWnd* pParent /*=NULL*/)
	: CDialog(CQuery::IDD, pParent)
{
	m_querybl=true;
	//{{AFX_DATA_INIT(CQuery)
	m_NAME = _T("");
	m_AUTHOR = _T("");
	m_PUBLISHER = _T("");
	//}}AFX_DATA_INIT
}


void CQuery::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CQuery)
	DDX_Text(pDX, IDC_QUERY_NAME, m_NAME);
	DDX_Text(pDX, IDC_QUERY_AUTHOR, m_AUTHOR);
	DDX_Text(pDX, IDC_QUERY_PUBLISHER, m_PUBLISHER);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CQuery, CDialog)
	//{{AFX_MSG_MAP(CQuery)
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CQuery message handlers

void CQuery::OnCancel() 
{
	// TODO: Add extra cleanup here
	m_querybl=true;
	CDialog::OnCancel();
	DestroyWindow(); 
}

void CQuery::OnOK() 
{
	UpdateData(true);
	if(m_pBook.IsOpen())
		m_pBook.Close();
	CString str="";
	CString and=" and ";
	int i=0;
	/*if(0!=m_ID)
	{
		CString id;
		id.Format("ID=%d",m_ID);
		str=id;
		i=1;
	}*/
	if(""!=m_NAME)
	{
		CString name;
		name.Format("NAME='%s'",m_NAME);
		if(i==1)
		{
			str+=and;
			str+=name;
		}
		else
		{
			str=name;
			i=1;
		}
	}
	if(""!=m_AUTHOR)
	{
		CString author;
		author.Format("AUTHOR='%s'",m_AUTHOR);
		if(i==1)
		{
			str+=and;
			str+=author;
		}
		else
		{
			str=author;
			i=1;
		}
	}
	if(""!=m_PUBLISHER)
	{
		CString publisher;
		publisher.Format("PUBLISHER='%s'",m_PUBLISHER);
		if(i==1)
		{
			str+=and;
			str+=publisher;
		}
		else
		{
			str=publisher;
			i=1;
		}
	}
	m_pBook.m_strFilter=str;
	//m_pBook.m_strSort="ID ASC";
	m_pBook.Open();
	//CDialog *m_pform=(CDialog *)GetDlgItem(IDD_BOOKS_FORM);
	//CListCtrl *m_plist=(CListCtrl *)::GetDlgItem(IDC_BOOKLIST,m_pform->m_hWnd);
	m_pbooklist->DeleteAllItems();
	RushListctrl(&m_pBook,*m_pbooklist,str);
	//DestroyWindow(); 
	//CDialog::OnOK();
}



void CQuery::RushListctrl(CRecordset *m_pRecord, CListCtrl &m_list, CString m_str)
{
	if(m_pRecord->IsOpen())
		m_pRecord->Close();
	m_pRecord->m_strFilter=m_str;
	//if(m_pRecord==m_pSet)
	m_pRecord->m_strSort="NAME ASC";
	m_pRecord->Open();
	LV_ITEM lvi;
	lvi.mask=LVIF_TEXT|LVIF_IMAGE|LVIF_PARAM;
	lvi.iSubItem=0;
	//lvi.pszText=(char *)data[0];
	lvi.iImage = 0;
	lvi.iItem=0;
	for(int count=0;!m_pRecord->IsEOF();m_pRecord->MoveNext(),count++)
	{//插入表项
		//char str[10];
		int k=m_pRecord->GetODBCFieldCount();
		CString data[8];
		//itoa(m_pRecord->m_ID,str,10);
		
		CDBVariant   varvalue;
		
		for(int i=1;i<k;i++)
		{
			m_pRecord->GetFieldValue((short)i,varvalue);
			if(DBVT_LONG==varvalue.m_dwType)
				data[i].Format("%d",varvalue.m_lVal);
			if(DBVT_STRING==varvalue.m_dwType)
				data[i].Format("%s",varvalue.m_pstring->GetBuffer(1));
			if(DBVT_DATE==varvalue.m_dwType)
				data[i].Format("%d-%d",varvalue.m_pdate->year,varvalue.m_pdate->month);
		}
		lvi.pszText=data[1].GetBuffer(1);
		m_list.InsertItem(&lvi);
		for (int j=1;j<k;j++) 
			m_list.SetItemText(count,j,data[j+1]);
	}
	m_pRecord->Close();
	m_pRecord->m_strFilter="";
	m_pRecord->m_strSort="";
	m_pRecord->Open();
//	m_editID=0;
}

void CQuery::OnDestroy() 
{
	CDialog::OnDestroy();
	//delete this; 
	
	// TODO: Add your message handler code here
	
}

⌨️ 快捷键说明

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