用ado连接accessWord文档格式.docx
- 文档编号:6642020
- 上传时间:2023-05-07
- 格式:DOCX
- 页数:21
- 大小:19.84KB
用ado连接accessWord文档格式.docx
《用ado连接accessWord文档格式.docx》由会员分享,可在线阅读,更多相关《用ado连接accessWord文档格式.docx(21页珍藏版)》请在冰点文库上搜索。
InitInstance()中
声明AfxOleInit();
//初始化com,创建ado连接等操作
m_pConnection.CreateInstance(__uuidof(Connection));
3)--------------------打开本地Access库Demo.mdb--------------------------
在BOOLCAdoRWAccessApp:
try
{
//打开本地Access库Demo.mdb
m_pConnection->
Open("
Provider=Microsoft.Jet.OLEDB.4.0;
DataSource=Demo.mdb"
"
"
"
adModeUnknown);
//注意代码的拼写错误!
!
}
catch(_com_errore)
{
AfxMessageBox("
数据库连接失败,确认数据库Demo.mdb是否在当前路径下!
);
returnFALSE;
}
4)-----------------------------------创建记录集对象---------------------------------------
在newadoDlg.h中
即classCAdoRWAccessDlg:
publicCDialog中声明
_RecordsetPtrm_pRecordset;
//定义记录集变量指针
///初始化对话框
在newado.cpp中的OnInitDialog()函数中创建记录集对象
即BOOLCAdoRWAccessDlg:
OnInitDialog()中
加入m_pRecordset.CreateInstance(__uuidof(Recordset));
//使用ADO创建数据库记录集
5)----------------------------------------打开表------------------------------------------
在newado.cpp中的OnInitDialog()函数中
//在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
//因为它有时会经常出现一些想不到的错误
m_pRecordset->
SELECT*FROMDemoTable"
//查询
DemoTable表中所有字段
theApp.m_pConnection.GetInterfacePtr(),//获取库接库的IDispatch指针
adOpenDynamic,
////注意声明全局变量CNewadoApptheApp为外部变量即externCNewadoApptheApp;
因为app是一个全局
类对象。
所以要声明
adLockOptimistic,
adCmdText);
catch(_com_error*e)
AfxMessageBox(e->
ErrorMessage());
6)---------------------------------------------名称:
OnReadAccess
//功能:
用ADO从Access文件中读取相应数据并显示出来------------------------------------------
---
voidCAdoRWAccessDlg:
OnReadAccess()
{
//先关闭已经打开的记录集对象
Close();
///m_pRecordset就在这个的外部定义
adOpenDynamic,
ListData();
////注意要对这个类进行声明
////做法:
在CNewadoDlg右键点击addmenberfunction-》再定义类型为void的函
数
}
voidCAdoRWAccessDlg:
ListData()
_variant_tvar;
CStringstrName,strAge;
//效清空列表框
m_AccessList.ResetContent();
//////注意m_AccessList需被定义声明
//先建立一个列表框Listaccess,-》改名-》声明一个列表框的成员变量
m_AccessList并注明是控件control
strName=strAge="
;
//在ADO操作中建议语句中要常用try...catch()来捕获错误信息,
//因为它有时会经常出现一些想不到的错误。
if(!
m_pRecordset->
BOF)
MoveFirst();
else
表内数据为空"
return;
//读入库中各字段并加入列表框中
while(!
adoEOF)
var=m_pRecordset->
GetCollect("
Name"
if(var.vt!
=VT_NULL)
strName=(LPCSTR)_bstr_t(var);
Age"
strAge=(LPCSTR)_bstr_t(var);
m_AccessList.AddString(strName+"
-->
+strAge);
MoveNext();
//默认列表指向第一项,同时移动记录指针并显示
m_AccessList.SetCurSel(0);
OnSelchangeListaccess();
///前一步已经对这个列表框命名现在要建立一个类向导;
7)-------------------------------------对列表框写编码———————————————————
———————
----------------------------------//名称:
OnSelchangeListaccess---------------
当每次选择新的记录时,都会移动指针到新的记录位置并将值显示出来
/////////////////////////////////////////////////////////////////////////////
OnSelchangeListaccess()
intcurSel=m_AccessList.GetCurSel();
_variant_tvar,varIndex;
if(curSel<
0)
//先将指针移向第一条记录,然后就可以相对第一条记录来随意移动记录指针
Move(long(curSel));
m_Name=(LPCSTR)_bstr_t(var);
//////m_Name,m_Age等要做定义
////在对话框中新建几个按键先定义名称
并代表申明变量m_Name,m_Age
m_Age=(LPCSTR)_bstr_t(var);
UpdateData(false);
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
、、、、、、、-----------------------------------------------------------------------------
-------------------------------------------------------------------------------------------
--------------------------------------------------------------------
8)---------------------------------插入的字段值-------------------------------------
//////////////////////////////////////////////////////////////////////////////
//名称:
OnWriteAccess
用ADO来写入插入的字段值
////步骤:
1调用AddNew()新增一个空记录集
//////////2调用PutCollect(字段名,值)输入每个字段的值
//////////3调用Update()更新数据库中的数据
///////
OnWriteAccess()
UpdateData();
if(m_Name=="
||m_Age=="
)
姓名和年龄信息不能为空!
//检验年龄是否正确
longage;
age=atol(m_Age);
if(age<
0||age>
150)
“年龄”错误,请重新输入“年龄”!
m_Age="
GetDlgItem(IDC_AGE)->
SetFocus();
//////这里出错!
怎么改?
?
//////////////////////////////定义主键是数字不能相同,所以要排除
//写入各字段值
AddNew();
PutCollect("
_variant_t(m_Name));
atol(m_Age));
Update();
插入成功!
//更新显示其库内容
intnCurSel=m_AccessList.GetCurSel();
///显示出来
m_AccessList.SetCurSel(nCurSel);
//移动记录指针到新的位置
9)---------------------------------修改并更新当前记录值-------------------------------
----------------------------------------------------------------------
OnModify
修改并更新当前记录值
//////1调用PutCollext(字段名,值)给当前记录行的每个字段赋新值
//////2调用UPdate()更新数据库中的数据
//////////////////////////////////////////////
OnModify()
//更新对话框数据
if(m_AccessList.GetCount()==0||m_Name=="
表中记录数为空或姓名和年龄信息没有设置!
elseif(m_AccessList.GetCurSel()<
0||m_AccessList.GetCurSel()>
m_AccessList.GetCount())
//判断年龄是否正确
//修改当前记录的字段值
//重新读入库记录更新显示
10)/////////////////////////////删除并更新当前记录///////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
OnDelete
删除并更新当前记录
OnDelete()
if(m_AccessList.GetCount()==0)
//删除当前行记录
Delete(adAffectCurrent);
//删除列表中当前值
m_AccessList.DeleteString(nCurSel);
if(nCurSel==0&
&
(m_AccessList.GetCount()!
=0))
elseif(m_AccessList.GetCount()!
=0)
m_AccessList.SetCurSel(nCurSel-1);
////////////////////////////////////////////////////////
///////////////////////////////////////////////
11)-------------------
-//////////////////////////////////////////////////////////////////////////////
OnQuery
查询记录
OnQuery()
UpdateData(TRUE);
//构造Sql语句
CStringstrSql;
if(m_Name!
="
&
m_Age!
strSql.Format("
SELECT*FROMDemoTableWHEREName='
%s'
ANDAge='
m_Name,m_Age);
elseif(m_Name!
m_Age=="
m_Name);
elseif(m_Name=="
SELECT*FROMDemoTableWHEREAge='
m_Age);
strSql="
//根据新的Sql查询语句,重新打开记录集对象
Open(strSql.AllocSysString(),
theApp.m_pConnection.GetInterfacePtr(),
//将查询后得到的新记录集显示出来
12)关闭记录集和连接
BOOLCDemoadoDlg:
DestroyWindow()
Close();
m_pRecordset=NULL;
returnCDialog:
DestroyWindow();
//
////////////////////////////////////////////////////////////////////////////////////////////
//////
----------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ado 连接 access