Office中国论坛/Access中国论坛
标题:
能解释一下DAO与ADO否?
[打印本页]
作者:
我同意
时间:
2003-12-31 08:18
标题:
能解释一下DAO与ADO否?
问这个问题有点不知害臊的感觉,但厚着脸皮请教老师,望能简单解释一下两者区别和在对表及记录操作的句式.感激!
作者:
jhf567
时间:
2003-12-31 17:37
看过一点vb的数据库知识,有一点模糊的理解,也不知道怎么样。
dao主要是连接本地数据表的,而ado是连接远程数据表的,ado更像一个数据接口。在vb6中,已经渐渐放弃了dao而改为ado,估计以后对ado支持多点,因为对远程和本地都支持。
两个对数据库的操作差不多,主要用recordset进行操作。
有两个典型的例子,data和adodc,前者用的是dao,后者用的是ado,在操作是,比如添加记录,data1.recordset.addnew,另一个为adodc1.recordset.addnew。
具体到了dao和ado,我觉得就是连接语句不同,具体操作大致也差不多。
作者:
我同意
时间:
2003-12-31 18:34
谢二楼老师。
既然ADO成为趋势,这里我举个例子请教,以便搞清一些概念。
假设窗体内文本框用于输入,有“确认输入”按钮,单击后将数据写到表中。代码如下
Private Sub 命令19_Click()
...
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.Open "订单", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
rs.AddNew
rs("订单号") = Me.订单号
rs("客户") = Me.客户
....
rs.Update
...
End Sub
执行时没问题。
问题是我想同时把某内容写到另一表中,该如何写代码(这里假设想同时把“订单号”写到表“库存进出"的”订单号“字段中),
我是直接加了几句:
rs.Open "库存进出", CurrentProject.Connection, adOpenKeyset, dLockOptimistic
rs.AddNew
rs("订单号") = Me.订单号
.......
rs.Update
可是执行时说对另一个表”....无法进行操作..“,我想这里肯定因我不理解ADO而在基本概念上有问题。
肯请指点迷津。
[此贴子已经被作者于2003-12-31 11:09:12编辑过]
作者:
jhf567
时间:
2004-1-1 04:56
在定义连接的时候,连接一个表或查询,也就是说一个窗体对应一个表或查询,你没有连接另一个表,当然没法打开。
access中的一个子窗体只能显示一个表或查询,道理差不多。
作者:
我同意
时间:
2004-1-3 00:22
jhf大哥,
不如给俺指条道,在一个窗如何实现对两个表写入?一定要子窗吗?
作者:
jhf567
时间:
2004-1-3 16:33
连接查询,查询也是一种表,可以由一个或几个表组成。
rs.Open "订单", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
你的这段代码是干什么的?
作者:
我同意
时间:
2004-1-4 19:35
这是我抄来的,当初我也想了解这句的具体作用,没有回答. 抄来先用了.
我还是那个问题,如何在一个窗体内对两个表同时做一些操作?
作者:
李啸林
时间:
2004-1-4 23:39
不太准确但很实际的区分方法:
DAO为access数据库专用,使用起来简单方便,效率很高。
ADO可以连接许多数据库 ,access数据库只是其中一种。在VBA中使用起来比DAO麻烦,操纵Access数据库的效率比DAO略高。
作者:
我同意
时间:
2004-1-7 18:34
能否讲一下或贴一下DAO的语句(或传个例子)
比如定义变量,打开表、记录,移动,修改,更新等。。。
谢谢!
作者:
Roadbeg
时间:
2004-1-8 16:16
dim rst as dao.recordset
dim wsp as workspace
set wsp=dbengine.workspaces(0)
wsp.bengintrans '开始事务
set rst=wsp.openrecordset("...",....,.......,...) '打开记录集
or set rst=currentdb.openrecordset .....
rst.addnew '新增
rst!... = .... '各种赋值方法
rst.fleids(0).value=....
rst.fields("...").value=....
rst.fleids(1)=.....
....
rst.update 'update
rst.findfirst .... '查找,还 findnext ,findlast .....
'当然,也有 seek,filter 等方法.
rst.edit 'edit
....
rst.update 'update
rst.delete
rst.movenext 'rst.movefirst ,....
rst.close '关闭记录集
wsp.rollbacktrans '回滚事务
or wsp.committrans '提交事务
另,一般而言,对于 access 本地数据库, dao 比 ado 效率高
作者:
我同意
时间:
2004-1-8 19:35
谢Roadbeg版主珍贵指点;
愧小弟学不用力。
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3