📄 addtypedlg.cpp
字号:
// ADDTypeDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "LManage.h"
#include "ADDTypeDlg.h"
#include ".\addtypedlg.h"
// CADDTypeDlg 对话框
IMPLEMENT_DYNAMIC(CADDTypeDlg, CDialog)
CADDTypeDlg::CADDTypeDlg(CWnd* pParent /*=NULL*/)
: CDialog(CADDTypeDlg::IDD, pParent)
, m_Index(0)
, m_Name(_T(""))
, m_Remark(_T(""))
{
}
CADDTypeDlg::~CADDTypeDlg()
{
}
void CADDTypeDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_COMBO_INDEX, m_kIndex);
DDX_CBIndex(pDX, IDC_COMBO_INDEX, m_Index);
DDX_Text(pDX, IDC_EDIT_NAME, m_Name);
DDX_Text(pDX, IDC_EDIT_OTHER, m_Remark);
}
BEGIN_MESSAGE_MAP(CADDTypeDlg, CDialog)
ON_BN_CLICKED(IDC_AMEND, OnBnClickedAmend)
ON_BN_CLICKED(IDC_DEL, OnBnClickedDel)
ON_BN_CLICKED(IDOK, OnBnClickedOk)
ON_BN_CLICKED(IDCANCEL, OnBnClickedCancel)
ON_CBN_SELCHANGE(IDC_COMBO_INDEX, OnCbnSelchangeComboIndex)
END_MESSAGE_MAP()
// CADDTypeDlg 消息处理程序
// 修改
void CADDTypeDlg::OnBnClickedAmend()
{
if( UpdateData() == false )
return;
CString sql = "";
CString index, temp;
// 得到当前索引
int k = m_kIndex.GetCurSel();
m_kIndex.GetLBText( k, index );
// 规范化字符串
CString name, remark;
name = m_Name;
name.Replace("'", "''");
remark = m_Remark;
remark.Replace("'", "''" );
// 组织SQL语句
temp.Format("UPDATE Type SET Name = '%s', Remark = '%s'",name, remark );
sql += temp;
temp.Format("WHERE ID = %s", index );
sql += temp;
// 执行SQL语句
if( this->ExecuteSQL( sql ) == false )
MessageBox( "表记录修改失败" );
// 通过数据库更新显示,以确定修改是否成功
GetData( atol( index ) );
}
// 删除
void CADDTypeDlg::OnBnClickedDel()
{
if( UpdateData() == false )
return;
CString sql = "";
CString index;
// 得到当前索引
int k = m_kIndex.GetCurSel();
m_kIndex.GetLBText( k, index );
// 组织SQL语句
sql.Format("DELETE FROM Type WHERE (ID = %s)",index );
// 执行SQL语句
if( this->ExecuteSQL( sql ) == false )
MessageBox( "删除记录失败" );
// 重新读入链表数据
LoadAllIndex();
// 通过数据库更新显示修改,记录移动到下一条
if( k >= m_kIndex.GetCount() )
k = m_kIndex.GetCount()-1;
m_kIndex.GetLBText( k, index );
GetData( atol( index ) );
m_kIndex.SetCurSel( k );
UpdateData();
}
// 添加
void CADDTypeDlg::OnBnClickedOk()
{
if( UpdateData() == false )
return;
CString sql = "";
CString index, temp;
// 规范化字符串
CString name, remark;
name = m_Name;
name.Replace("'", "''");
remark = m_Remark;
remark.Replace("'", "''" );
// 组织SQL语句
sql.Format("INSERT INTO Type (Name, Remark) VALUES ('%s','%s')",name, remark );
// 执行SQL语句
if( this->ExecuteSQL( sql ) == false )
MessageBox( "记录添加失败" );
// 重新读入链表数据
LoadAllIndex();
// 设置当前索引
int k = m_kIndex.GetCount()-1;
m_kIndex.GetLBText( k, index );
// 通过数据库更新显示,以确定修改是否成功
GetData( atol( index ) );
m_kIndex.SetCurSel( k );
UpdateData();
}
// 退出
void CADDTypeDlg::OnBnClickedCancel()
{
OnCancel();
}
// 读取所有的字段索引
void CADDTypeDlg::LoadAllIndex()
{
_RecordsetPtr pRecord;
_variant_t value;
// 清空list
while( m_kIndex.GetCount() > 0)
m_kIndex.DeleteString(0);
try
{
// 生成Recordset实例
pRecord.CreateInstance("ADODB.Recordset");
// 打开记录集,静态光标(静态记录集),乐观锁定方式
pRecord->Open("SELECT ID 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 temp;
temp.Format( "%d", value.lVal );
m_kIndex.AddString( temp );
}
pRecord->MoveNext();
}
pRecord->Close();
pRecord = NULL;
}
catch( _com_error * e )
{
MessageBox( e->ErrorMessage() );
}
m_kIndex.SetCurSel(0);
}
// 根据索引值填充数据
void CADDTypeDlg::GetData( int id )
{
CString sql;
sql.Format( "SELECT * FROM Type WHERE ID = %d", id );
_RecordsetPtr pRecord;
_variant_t value;
try
{
// 生成Recordset实例
pRecord.CreateInstance("ADODB.Recordset");
// 打开记录集,静态光标(静态记录集),乐观锁定方式
pRecord->Open(sql.GetBuffer(),_variant_t((IDispatch*)theApp.m_pConnection,true),
adOpenStatic,adLockOptimistic,adCmdText);
CString name, remark;
if( !pRecord->adoEOF )
{
value = pRecord->GetCollect( "Name" );
if( value.vt != VT_NULL )
name = value.bstrVal;
else
name = "";
value = pRecord->GetCollect( "Remark" );
if( value.vt != VT_NULL )
remark = value.bstrVal;
else
remark = "";
this->m_Name = name;
this->m_Remark = remark;
}
pRecord->Close();
pRecord = NULL;
}
catch( _com_error * e )
{
MessageBox( e->ErrorMessage() );
}
UpdateData(false);
}
BOOL CADDTypeDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: 在此添加额外的初始化
LoadAllIndex();
CString temp;
m_kIndex.GetLBText( m_kIndex.GetCurSel(), temp );
GetData( atol(temp) );
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void CADDTypeDlg::OnCbnSelchangeComboIndex()
{
if( UpdateData() )
{
CString temp;
m_kIndex.GetLBText( m_kIndex.GetCurSel(), temp );
GetData( atol(temp) );
}
}
// 执行SQL语句
bool CADDTypeDlg::ExecuteSQL( CString sql )
{
try
{
_variant_t RecordsAffected;
theApp.m_pConnection->Execute( sql.GetBuffer(), &RecordsAffected,adCmdText);
}
catch( _com_error *e)
{
MessageBox(e->ErrorMessage());
return false;
}
return true;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -