📄 booktypelistdlg.cpp
字号:
// BookTypeListDlg.cpp : implementation file
//
#include "stdafx.h"
#include "LibraryM.h"
#include "BookTypeListDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CBookTypeListDlg dialog
CBookTypeListDlg::CBookTypeListDlg(CWnd* pParent /*=NULL*/)
: CDialog(CBookTypeListDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CBookTypeListDlg)
m_BookTypeInsertEdit = _T("");
m_BookTypeID = _T("");
//}}AFX_DATA_INIT
}
void CBookTypeListDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBookTypeListDlg)
DDX_Control(pDX, IDC_BOOKTYPE_LIST, m_BookTypeList);
DDX_Text(pDX, IDC_EDIT_BOOKTYPELIST, m_BookTypeInsertEdit);
DDX_Text(pDX, IDC_EDIT_BOOKTYPEID, m_BookTypeID);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBookTypeListDlg, CDialog)
//{{AFX_MSG_MAP(CBookTypeListDlg)
ON_BN_CLICKED(IDC_BOOKTYPELIST_INTERT_BTN, OnBooktypelistIntertBtn)
ON_BN_CLICKED(IDC_BOOKTYPELIST_CANCEL_BTN2, OnBooktypelistCancelBtn2)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBookTypeListDlg message handlers
BOOL CBookTypeListDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//初始化数据库连接
HRESULT result;
try
{
//实例化连接对象
result=m_pConnection.CreateInstance(_uuidof(Connection));
if(SUCCEEDED(result))
{
//设置连接属性为UDL文件
m_pConnection->ConnectionString="File Name=LIBRARYM.udl";
//设置等待连接打开的时间为20s
m_pConnection->ConnectionTimeout=20;
result=m_pConnection->Open("","","",adConnectUnspecified);
if(FAILED(result))
{
AfxMessageBox("open failed");
return TRUE;
}
}
else
{
AfxMessageBox("createinstance of connection failed!");
return TRUE;
}
}
catch(_com_error e)
{
//输出异常信息
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
AfxMessageBox(bstrSource+bstrDescription);
return TRUE;
}
//初始化列表
m_BookTypeList.InsertColumn(0,"ID",LVCFMT_LEFT,100);
m_BookTypeList.InsertColumn(1,"TypeName",LVCFMT_CENTER,100);
//选中一行
m_BookTypeList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
InitListCtrl();
return true;
}
void CBookTypeListDlg::InitListCtrl() //booktypeList的初始化,过程跟booklist的初始化一样
{
HRESULT hr;
_RecordsetPtr pBookTypeList;
hr=pBookTypeList.CreateInstance(_uuidof(Recordset));
if(FAILED(hr))
{
AfxMessageBox("createinstance of recordset failed!\ncan't initiate booktype list control!");
return;
}
CString strSql;
_variant_t getvar;
CString strValue;
int curItem=0;
strSql="select * from BookType";
try
{
hr=pBookTypeList->Open(_variant_t(strSql),m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
if(SUCCEEDED(hr))
{
while(!pBookTypeList->adoEOF)
{
getvar=pBookTypeList->GetCollect("BookTypeID");
if(getvar.vt!=VT_NULL)
{
strValue=(LPCSTR)_bstr_t(getvar);
}
else
strValue=" ";
m_BookTypeList.InsertItem(curItem,strValue);
getvar=pBookTypeList->GetCollect("TypeName");
if(getvar.vt!=VT_NULL)
{
strValue=(LPCSTR)_bstr_t(getvar);
}
else
strValue=" ";
m_BookTypeList.SetItemText(curItem,1,strValue);
pBookTypeList->MoveNext();
curItem++;
}
}
else
{
AfxMessageBox("open recordset failed!");
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
return;
}
pBookTypeList->Close();
pBookTypeList=NULL;
}
void CBookTypeListDlg::OnBooktypelistIntertBtn()
{
UpdateData(TRUE); //得到输入
//判断是否输入了BookTypeID 和 BookTypeName
if(m_BookTypeID.IsEmpty() || m_BookTypeInsertEdit.IsEmpty())
{
AfxMessageBox("empty input!");
return;
}
_RecordsetPtr pset;
pset.CreateInstance(_uuidof(Recordset));
HRESULT hr;
try
{
hr=pset->Open("select * from BookType",m_pConnection.GetInterfacePtr(),
adOpenDynamic,adLockOptimistic,adCmdText);
//添加记录
if(SUCCEEDED(hr))
{
pset->AddNew();
//写入每个字段值
pset->PutCollect("BookTypeID",_variant_t(m_BookTypeID));
pset->PutCollect("TypeName",_variant_t(m_BookTypeInsertEdit));
pset->Update();
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
return;
}
pset->Close();
pset=NULL;
m_BookTypeList.DeleteAllItems();
InitListCtrl();
}
void CBookTypeListDlg::OnBooktypelistCancelBtn2()
{
CDialog::OnCancel();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -