设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2210|回复: 5
打印 上一主题 下一主题

发现ADP的一个批量更新的问题

[复制链接]
跳转到指定楼层
1#
发表于 2015-2-25 22:18:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天在自己的一个ADP程序上发现了一个问题,环境win7+acc2007+sqlserver2000,我进行数据测试的时候,要对表中176W条记录的一个bit字段更新,全部更新为true(原来全是false),我在acc2007自带的查询设计器内,设计了一个更新查询存储过程,更新到true,运行,速度非常快,但检查数据时发现,只更新了ID从11~10012的记录(首条ID是11),也就是说,只更新了1W条记录。其余的记录还是false。
我觉得很奇怪,又反复运行了几次,每次都是一个结果,只更新前1w条记录。
感觉很奇怪,就打开SQLserver的查询分析器,第一次运行1分06秒,第二次运行3秒,运行完毕检查数据176W条数据全部更新完毕。
觉得不甘心,又在VBA里面写了一个按钮激发的更新事件,用docmd.runsql()运行,运行3秒,运行完毕检查数据176W条数据全部更新完毕
这是什么原因?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2015-2-25 23:34:32 | 只看该作者
你的表的bit字段可能原来未设置默认值 ?
3#
 楼主| 发表于 2015-2-26 08:48:43 | 只看该作者
谢谢版主
今天一早又找了台别的电脑试了一下,还是这个结果。
表中设置bit字段默认值为false,在更新之前所有的176W记录都是false,没有null值。
4#
发表于 2015-2-26 16:23:24 | 只看该作者
道理应该是在ACCESS运行存储过程或打开窗体记录集时,可能把SQL SERVER设为有效行数为10000条,所以这样。
但是直接执行SQL时,没有设这个命令,所以有这样的差别。看看ACCESS窗体,ACCESS选项等等,有没有把这个有效行数设为0(无限制)即可。
5#
发表于 2015-2-26 16:23:45 | 只看该作者
道理应该是在ACCESS运行存储过程或打开窗体记录集时,可能把SQL SERVER设为有效行数为10000条,所以这样。
但是直接执行SQL时,没有设这个命令,所以有这样的差别。看看ACCESS窗体,ACCESS选项等等,有没有把这个有效行数设为0(无限制)即可。

点击这里给我发消息

6#
发表于 2015-5-24 09:29:58 | 只看该作者
用 CurrentProject.Connection.Execute "..." 效率可能更高。

你的存储过程的运行方式,双击打开运行,会受到 lwwvb 所说的限制。将其设为 0,会影响全局,不建议。而是建议改变执行存储过程的方式。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-4-29 18:58 , Processed in 0.084994 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表