设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[查询] 删除大量记录超时怎样解决

[复制链接]
跳转到指定楼层
1#
发表于 2022-10-28 11:50:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
后台数据库是MS SQL SERVER 2012
有一个【最新价格表】,每月需要更新一次,更新前,需要删除2万条左右的记录,然后再插入2万左右的记录。
我的代码是:

docmd.setwarnings false
docmd.runsql "delete * from 最新价格表"
docmd.runsql "insert into 最新价格表(字段1,字段2,......) select 字段1,字段2,...... from 本地临时表"
docmd.setwarnings true

但是在删除时,不能删除记录,提示:
Microsoft OLE DB Provider for SQL Server 错误 '80040e31'
[ODBC SQL Server Driver]超时已过期)

于是我想用另一个查询语句:
docmd.runsql "truncate table 最新价格表"
代替
docmd.runsql "delete * from 最新价格表"

发现ACCESS不能使用truncate删除记录。

类似上述这种情况,大家有什么好的方法解决的?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2022-10-29 12:56:00 | 只看该作者
1、truncate table是SQL server的用法。
2、如果是Access连接SQL Server,可以考虑在SQL Server上写存储过程,Access VBA调用就好了。
3、不能删除记录可能是因为Access链接表没设置主键。可以设置主键后再试试。
4、如果用ADO处理SQL Server的增删改,好像还要添加一个adUserCursor参数。
3#
 楼主| 发表于 2022-10-31 16:01:03 | 只看该作者
好的,谢谢roych。
我所想的方法是:分批删除,2万条记录,分10次删除。
看来写【存储过程】是最好的方法了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 04:28 , Processed in 0.238485 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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