Office中国论坛/Access中国论坛

标题: 在Recordset中Addnew问题,请高人指点 [打印本页]

作者: olderdream2007@    时间: 2015-2-7 20:51
标题: 在Recordset中Addnew问题,请高人指点
在Recordset中Addnew问题,请高人指点


  在Recordset中Addnew问题,请高人指点

想在表a中 “x" 字段插入1,2,3-----, 结果 .AddNew处报错

Sub test()
Dim res As ADODB.Recordset
Set res = New ADODB.Recordset
res.Open "a", CurrentProject.Connection, adOpenDynamic, adLockBatchOptimistic
With res
For i = 1 To 100
.AddNew
.Fields("x") = i
Next i
res.UpdateBatch
End With
Set res = Nothing
End Sub
作者: tmtony    时间: 2015-2-7 21:19
看看提示的是什么错误
作者: olderdream2007@    时间: 2015-2-7 21:26
tmtony 发表于 2015-2-7 21:19
看看提示的是什么错误

[attach]55637[/attach]
在ADDNEW处报错,这个提示。 请指点下,如何解决。 非常感谢

作者: zhidao    时间: 2015-2-7 21:43
附件传上来,我给你调试一下,我以前也碰到多这样的事,忘了解决办法了
作者: olderdream2007@    时间: 2015-2-7 21:52
[attach]55638[/attach]


谢谢各位的回帖。 附件奉上  请大家指点一下{:soso_e100:}

作者: zhidao    时间: 2015-2-7 22:24
olderdream2007@ 发表于 2015-2-7 21:52
谢谢各位的回帖。 附件奉上  请大家指点一下

Sub test()
Dim res As ADODB.Recordset
Set res = New ADODB.Recordset
res.Open "a", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
With res
For i = 1 To 100
.AddNew
.Fields("x") = i
Next i
res.UpdateBatch
End With
Set res = Nothing
End Sub


作者: zhidao    时间: 2015-2-7 22:25
连接字符串问题
作者: olderdream2007@    时间: 2015-2-7 23:18
zhidao 发表于 2015-2-7 22:25
连接字符串问题

谢谢高人的指点。似乎第二个参数用adOpenDynamic 比用adOpenKeyset快许多,不直达啥原因。
Sub tests()
Dim res As ADODB.Recordset
Set res = New ADODB.Recordset
'res.Open "a", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
res.Open "a", CurrentProject.Connection, adOpenKeyset, adLockOptimistic

With res
For i = 1 To 100
.AddNew
.Fields("x") = i
Next i
res.UpdateBatch
End With
Set res = Nothing
End Sub


这个字符串 自己理解下(现在只是照抄),下面是accessoft搜到的东东 自己消化中,太高兴了。谢谢zhidao的热心帮助

帮学员解答ADO参数意思/adOpenKeyset/adLockOptimistic


时 间:2012-04-26 16:35:48
作 者:风行   ID:16058  城市:江阴  QQ:2851379734点击这里给风行发消息
摘 要:请教一下:rst.Open "tblVoucher", conn, adOpenKeyset, adLockOptimistic什么意思
正 文:


锡林郭勒--海涛(17755315) 11:35:15
请教一下:rst.Open "tblVoucher", conn, adOpenKeyset, adLockOptimistic什么意思
UMVsoft技术服务12(2430898254) 11:35:56
简单理解为打开表tblVoucher
UMVsoft-张志(3059255) 11:46:06
这个参数有四个值分别是:
adOpenForwardOnly 表示只允许在记录集内的记录间往前移动。这个是缺省值。
adOpenKeyset 反映由其它用户所做的对记录的改变或者删除动作,但并不反映由其它用户做作的添加新记录的动作。
adOpenDynamic 反映由其它用户所做的对记录的改变或者删除动作,包括添加的新记录
adOpenStatic 不反映其它用户对记录所做的修改,添加,删除动作。
这四个值VBSCRIPT预定义位
adOpenForwardOnly = 0
adOpenKeyset = 1
adOpenDynamic = 2
adOpenStatic = 3

lockType 表示当打开记录集时,数据提供者用于锁定数据库的类型:
adLockReadOnly 数据不能改变,这是缺省值!
adLockPessimistic 数据提供者在开始编辑数据的时候锁定记录
adLockOptimistic 仅当调用update方法时,数据提供者锁定记录
adLockBatchOptimistic 用于批处理修改
他们的常量值定义分别是:
adLockReadOnly = 1
adLockPessimistic = 2
adLockOptimistic = 3
adLockBatchOptimistic = 4
  
UMVsoft-张志(3059255) 11:47:07
adLockOptimistic 仅当调用update方法时,数据提供者锁定记录
UMVsoft技术服务12(2430898254) 11:47:27
adLockReadOnly   1   缺省值,Recordset对象以只读方式启动,无法运行AddNew、Update及Delete等方法     
   adLockPrssimistic   2   当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。     
   adLockOptimistic   3   当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。     
   adLockBatchOptimistic   4   当数据源正在更新时,其他用户必须将CursorLocation属性改为adUdeClientBatch才能对数据进行增、删、改的操作
锡林郭勒--海涛(17755315) 11:49:35
谢谢老师,我研究一下。
UMVsoft-张志(3059255) 11:50:48
其实不需要研究更深入,知道是这么回事就行了。
我也是想弄更清楚点时,才百度的,其实也记不住意思
但这并不影响我开发软件
锡林郭勒--海涛(17755315) 11:52:42
记住其含义更容易帮助记忆这些代码,否则马上就忘记了。
UMVsoft-张志(3059255) 11:53:54
是的

作者: zhidao    时间: 2015-2-8 13:55
推荐个帖子里面简单介绍记录集的open方法
作者: laimf    时间: 2015-2-8 16:42
仅仅是向表中添加数据,建议用SQL语句。
INSERT INTO  ......
大多数场合,执行效率更高。
作者: olderdream2007@    时间: 2015-2-8 22:00
zhidao 发表于 2015-2-8 13:55
推荐个帖子里面简单介绍记录集的open方法

Office中国-找不到网页!(Page Not Found!)

谢谢ZHIDAO的指点,不过链接显示上面的内容
作者: olderdream2007@    时间: 2015-2-8 22:03
laimf 发表于 2015-2-8 16:42
仅仅是向表中添加数据,建议用SQL语句。
INSERT INTO  ......
大多数场合,执行效率更高。

非常感谢提点。

我从其它SQL数据库获得了内容在 Recordset里,有办法用insert into 把它放到当前ACCESS数据库么?

谢谢了
作者: zhidao    时间: 2015-2-8 22:15
olderdream2007@ 发表于 2015-2-8 22:00
Office中国-找不到网页!(Page Not Found!)

谢谢ZHIDAO的指点,不过链接显示上面的内容

http://www.office-cn.net/forum.p ... mp;extra=#pid716219
作者: olderdream2007@    时间: 2015-2-8 22:27
zhidao 发表于 2015-2-8 22:15
http://www.office-cn.net/forum.php?mod=viewthread&tid=119308&page=1&extra=#pid716219

谢谢,看到了,学习中  有很多看不懂 现在就只能记住自己现在这个问题如何解决了,后续慢慢消化。

再次感谢---
作者: roych    时间: 2015-2-9 09:15
olderdream2007@ 发表于 2015-2-8 22:03
非常感谢提点。

我从其它SQL数据库获得了内容在 Recordset里,有办法用insert into 把它放到当前ACCES ...

也可以GetString后insert 进去的。不过,估计也要写循环。GetString方法见以下帖子:
http://www.office-cn.net/thread-119067-1-1.html
作者: admin    时间: 2015-2-9 10:39
olderdream2007@ 发表于 2015-2-8 22:00
Office中国-找不到网页!(Page Not Found!)

谢谢ZHIDAO的指点,不过链接显示上面的内容

已经改好了 链接了。看9楼链接
作者: laimf    时间: 2015-2-9 22:40
olderdream2007@ 发表于 2015-2-8 22:03
非常感谢提点。

我从其它SQL数据库获得了内容在 Recordset里,有办法用insert into 把它放到当前ACCES ...

是可以的 。
作者: olderdream2007@    时间: 2015-2-9 23:26
{:soso_e113:} 非常感谢 可否有例子 把Recordset里的内容INSERT INTO到ACCESS表里???  谢谢
作者: olderdream2007@    时间: 2015-2-9 23:40
admin 发表于 2015-2-9 10:39
已经改好了 链接了。看9楼链接

非常感谢 学习中




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3