Office中国论坛/Access中国论坛

标题: 请教ADO写入数据出错的问题! [打印本页]

作者: sxgaobo    时间: 2015-4-15 10:40
标题: 请教ADO写入数据出错的问题!
本帖最后由 sxgaobo 于 2015-4-15 11:49 编辑

我使用的是前端ACC,用ODBC链接服务器中的SQL中的表。
Dim r As ADODB.Recordset
Set r = New ADODB.Recordset
    r.Open "基础表", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
    r.AddNew
    r("编号")=[编号]
    ......
    r.Update

当“基础表”中记录数少(1000左右)时可以正常写入,当“基础表”中记录数较多时(十几万)时,系统报错!"基础表"有54个字段,大于16万条记录。有一ID字段我自动编号,设为了主键,未设置索引键!

删除数据时:DoCmd.RunSQL "DELETE 基础表.*, 基础表.编号 FROM 基础表 WHERE (((基础表.编号)=[Forms]![数据录入]![编号]))"
也是,数据少时可以正常删除,数据量大时报错!什么原因啊?麻烦各位高手指点一下。“基础表”设置有"ID"字段,类型:自动编号,索引




作者: 盗梦    时间: 2015-4-15 10:54
1. 如果是添加数据
    sql不要一次加载整个基础表,用 select * from 基础表 where 1=2
2.如果是删除,则直接 直接指定的ID , 如 Delete * from 基础表 where ID=5
3.给主要筛选的字段加上索引
作者: t小宝    时间: 2015-4-15 11:05
可能网络不太好
作者: sxgaobo    时间: 2015-4-15 11:27
盗梦 发表于 2015-4-15 10:54
1. 如果是添加数据
    sql不要一次加载整个基础表,用 select * from 基础表 where 1=2
2.如果是删除, ...

谢谢您的关注!
    r.Open "select * from 基础表 where ID=1", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
按您的提示,我修改成这样,可还是不行啊!
作者: sxgaobo    时间: 2015-4-15 11:28
本帖最后由 sxgaobo 于 2015-4-15 12:25 编辑
t小宝 发表于 2015-4-15 11:05
可能网络不太好


不应该啊版主,我是在本机上测试的啊!
"基础表"有54个字段,大于16万条记录。有一ID字段为 自动编号,设为了主键,未设置索引键!
主键和索引键有什么区别?必须设置索引键吗?


作者: koutx    时间: 2015-4-15 11:55
后台SQL的基础表中有没有自动编号ID字段?
作者: sxgaobo    时间: 2015-4-15 12:15
本帖最后由 sxgaobo 于 2015-4-15 12:24 编辑
koutx 发表于 2015-4-15 11:55
后台SQL的基础表中有没有自动编号ID字段?



"基础表"有54个字段,大于16万条记录。有一ID字段为自动编号,设为了主键,未设置索引键!

作者: koutx    时间: 2015-4-15 14:22
[attach]56132[/attach]
作者: sxgaobo    时间: 2015-4-15 15:55
{:soso_e110:}问题找到了,是我窗口中一组合字段链接着“基础表”,为什么ACC下可以,SQL下就不行啊?




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