📄 formlookabout.cpp
字号:
// FormLookAbout.cpp : 实现文件
//
#include "stdafx.h"
#include "LManage.h"
#include "FormLookAbout.h"
#include ".\formlookabout.h"
// CFormLookAbout 对话框
IMPLEMENT_DYNAMIC(CFormLookAbout, CDialog)
CFormLookAbout::CFormLookAbout(CWnd* pParent /*=NULL*/)
: CDialog(CFormLookAbout::IDD, pParent)
, m_Name(_T(""))
{
}
CFormLookAbout::~CFormLookAbout()
{
}
void CFormLookAbout::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST_SLTBOOK, m_kBook);
DDX_Control(pDX, IDC_COMBO_SLTTYPE, m_kSltType);
DDX_Control(pDX, IDC_EDIT_BOOKNAME, m_kName);
DDX_Control(pDX, IDC_COMBO_SLT, m_SltCombo);
DDX_Text(pDX, IDC_EDIT_BOOKNAME, m_Name);
}
BEGIN_MESSAGE_MAP(CFormLookAbout, CDialog)
ON_CBN_SELCHANGE(IDC_COMBO_SLTTYPE, OnCbnSelchangeComboSlttype)
ON_BN_CLICKED(IDC_SEARCH, OnBnClickedSearch)
ON_BN_CLICKED(IDC_BTALL, OnBnClickedBtall)
END_MESSAGE_MAP()
// CFormLookAbout 消息处理程序
BOOL CFormLookAbout::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
m_kSltType.AddString( "书名" );
m_kSltType.AddString( "作者" );
m_kSltType.AddString( "出版社" );
m_kSltType.AddString( "类型" );
m_kSltType.SetCurSel( 0 );
OnCbnSelchangeComboSlttype();
m_kBook.SetExtendedStyle( LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT | LVS_EX_HEADERDRAGDROP );
m_kBook.InsertColumn(0,"编号",LVCFMT_CENTER,40);
m_kBook.InsertColumn(1,"书名",LVCFMT_LEFT,110);
m_kBook.InsertColumn(2,"作者",LVCFMT_LEFT,75);
m_kBook.InsertColumn(3,"出版社",LVCFMT_LEFT,90);
m_kBook.InsertColumn(4,"类型",LVCFMT_LEFT,70);
LoadBooks( );
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
// 按要求读入所有书名,作者,str为查询条件的SQL语句
void CFormLookAbout::LoadBooks( CString str )
{
_RecordsetPtr pRecord;
_variant_t value;
// 清空list
m_kBook.DeleteAllItems();
try
{
// 生成Recordset实例
pRecord.CreateInstance("ADODB.Recordset");
CString sql;
sql = "SELECT Book.ID , Book.Name , Author.Name, BookConcern.Name, Type.Name ";
sql += "FROM Book, Author, BookConcern, Type ";
sql += "WHERE Book.Author = Author.ID ";
sql += "AND Book.BookConcern = BookConcern.ID ";
sql += "AND Book.Type = Type.ID ";
sql += str;
// 打开记录集,静态光标(静态记录集),乐观锁定方式
pRecord->Open(sql.GetBuffer(), // 查询所有语句
_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
int i = 0;
while( !pRecord->adoEOF )
{
int k;
CString name, author,temp, bookc, type;
value = pRecord->GetCollect( "ID" );
if( value.vt != VT_NULL )
{
k = value.lVal;
// 作者
value = pRecord->GetCollect("Book.Name");
if( value.vt != VT_NULL )
name = value.bstrVal;
else
name = "";
// 书名
value = pRecord->GetCollect("Author.Name");
if( value.vt != VT_NULL )
author = value.bstrVal;
else
author = "";
// 出版社
value = pRecord->GetCollect("BookConcern.Name");
if( value.vt != VT_NULL )
bookc = value.bstrVal;
else
bookc = "";
// 类型
value = pRecord->GetCollect("Type.Name");
if( value.vt != VT_NULL )
type = value.bstrVal;
else
type = "";
// 加入链表
temp.Format( "%d",k);
m_kBook.InsertItem(i,temp,0);
m_kBook.SetItemText(i,1,name);
m_kBook.SetItemText(i,2,author);
m_kBook.SetItemText(i,3,bookc);
m_kBook.SetItemText(i,4,type );
i++;
}
pRecord->MoveNext();
}
pRecord->Close();
pRecord = NULL;
}
catch( _com_error * e )
{
MessageBox( e->ErrorMessage() );
}
}
// 显示所有图书
void CFormLookAbout::OnBnClickedBtall()
{
LoadBooks( );
}
// 该变选择
void CFormLookAbout::OnCbnSelchangeComboSlttype()
{
int k = m_kSltType.GetCurSel();
// 控件状态
m_kName.EnableWindow( (k == 0) );
m_SltCombo.EnableWindow( !(k == 0) );
if( k != 0 )
{
switch( k )
{
case 1:
LoadAuthor();
break;
case 2:
LoadBookConcern();
break;
case 3:
LoadType();
break;
}
}
}
// 查询
void CFormLookAbout::OnBnClickedSearch()
{
if( UpdateData() == false )
return;
CString name = m_Name;
name.Replace( "'", "''" );
CString sql = "";
switch( m_kSltType.GetCurSel() )
{
case 0: // 书名查询
sql.Format( "AND Book.Name LIKE '%%%s%%'", name );
break;
case 1:
sql.Format( "AND Book.Author = %d", m_SltCombo.GetCurMyID() );
break;
case 2:
sql.Format( "AND Book.BookConcern = %d", m_SltCombo.GetCurMyID() );
break;
case 3:
sql.Format( "AND Book.Type = %d", m_SltCombo.GetCurMyID() );
break;
}
LoadBooks( sql );
}
// 读入作者链表
void CFormLookAbout::LoadAuthor()
{
_RecordsetPtr pRecord;
_variant_t value;
// 清空list
while( m_SltCombo.GetCount() > 0)
m_SltCombo.DeleteString(0);
try
{
// 生成Recordset实例
pRecord.CreateInstance("ADODB.Recordset");
// 打开记录集,静态光标(静态记录集),乐观锁定方式
pRecord->Open("SELECT ID , Name FROM Author", // 查询所有语句
_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
while( !pRecord->adoEOF )
{
value = pRecord->GetCollect( "ID" );
if( value.vt != VT_NULL )
{
CString name;
int id;
// 得到ID
id = value.lVal;
// 得到名字
value = pRecord->GetCollect( "Name" );
if( value.vt != VT_NULL )
name = value.bstrVal;
else
name = "";
m_SltCombo.AddMyString( id, name );
}
pRecord->MoveNext();
}
pRecord->Close();
pRecord = NULL;
}
catch( _com_error * e )
{
MessageBox( e->ErrorMessage() );
}
m_SltCombo.SetCurSel(0);
}
// 读入出版社链表
void CFormLookAbout::LoadBookConcern()
{
_RecordsetPtr pRecord;
_variant_t value;
// 清空list
while( m_SltCombo.GetCount() > 0)
m_SltCombo.DeleteString(0);
try
{
// 生成Recordset实例
pRecord.CreateInstance("ADODB.Recordset");
// 打开记录集,静态光标(静态记录集),乐观锁定方式
pRecord->Open("SELECT ID , Name FROM BookConcern", // 查询所有语句
_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
while( !pRecord->adoEOF )
{
value = pRecord->GetCollect( "ID" );
if( value.vt != VT_NULL )
{
CString name;
int id;
// 得到ID
id = value.lVal;
// 得到名字
value = pRecord->GetCollect( "Name" );
if( value.vt != VT_NULL )
name = value.bstrVal;
else
name = "";
m_SltCombo.AddMyString( id, name );
}
pRecord->MoveNext();
}
pRecord->Close();
pRecord = NULL;
}
catch( _com_error * e )
{
MessageBox( e->ErrorMessage() );
}
m_SltCombo.SetCurSel(0);
}
// 读入类型链表
void CFormLookAbout::LoadType()
{
_RecordsetPtr pRecord;
_variant_t value;
// 清空list
while( m_SltCombo.GetCount() > 0)
m_SltCombo.DeleteString(0);
try
{
// 生成Recordset实例
pRecord.CreateInstance("ADODB.Recordset");
// 打开记录集,静态光标(静态记录集),乐观锁定方式
pRecord->Open("SELECT ID , Name FROM Type", // 查询所有语句
_variant_t((IDispatch*)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
while( !pRecord->adoEOF )
{
value = pRecord->GetCollect( "ID" );
if( value.vt != VT_NULL )
{
CString name;
int id;
// 得到ID
id = value.lVal;
// 得到名字
value = pRecord->GetCollect( "Name" );
if( value.vt != VT_NULL )
name = value.bstrVal;
else
name = "";
m_SltCombo.AddMyString( id, name );
}
pRecord->MoveNext();
}
pRecord->Close();
pRecord = NULL;
}
catch( _com_error * e )
{
MessageBox( e->ErrorMessage() );
}
m_SltCombo.SetCurSel(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -