VC用Ado接口连接和使用数据库(4)
BOOL CBKDlg::DestroyWindow()
{
// TODO: Add your specialized code here and/or call the base class
m_dg.SetRefDataSource(NULL);
long state;
//下面的处理可能存在逻辑上的错误,不过关闭数据集与数据连接的语法是正确的
if(!FAILED(prs->get_State(&state)))
if(state!=adStateClosed)
{
prs->Close();
prs=NULL;
}
if(!FAILED(pdb->get_State(&state)))
if(state!=adStateClosed)
{
pdb->Close();
pdb=NULL;
}
::CoUninitialize ();//释放COM环境
return CDialog::DestroyWindow();
}
void CBKDlg::OnBeforeColUpdateDatagrid(short ColIndex, VARIANT FAR* OldValue, short FAR* Cancel)
{
//该事件(方法)在MS DATAGRID 控件(ActiveX)的单元数据更新前发生
//该事件您可能用不着,但其中的代码您可能用得着
COleVariant v((LPCSTR)m_dg.GetText ());//获取上述控件当前单元格的数据
CString fieldname=m_dg.GetColumns().GetItem(COleVariant(ColIndex)).GetCaption();
DataTypeEnum fieldtype;//描述ADO数据类型的枚举类型
prs->get_Fields(&pfds);//从数据集中获得数据域集合
pfds->get_Item (COleVariant(fieldname),&pfd);//从数据域集合中获得特定名称的域
pfd->get_Type (&fieldtype);//从上述域中获取其数据类型,如整型或字符串型
switch (fieldtype){
case adSmallInt:
case adInteger:
break;
case adDate:
break;
case adCurrency://Data type describing for Money ,Understand?
break;
case adVarChar://对应于VB中的String类型和VC中的CString类型
break;
default:
break;
}
}//该方法来源于MS DataGrid ActiveX控件的事件,无具体的处理代码,望海涵
- 上一篇:通过例程分析状态条用法
- 下一篇:图像平滑滚动效果的VC实现