如何在ACCESS中实现将以下代码改写为从表“导出数据”每次插入10000条记录至表“对比表”,直至所有数据均插入完毕,同时将对比表中的数据按每次10000条导出至自动生成的EXECL导出至C:\文件夹中,下一次从10001条开始导出至自动生成的EXECL导出至C:\文件夹中,依此类推,直接全部导出完,就清空对比表? INSERT INTO 对比表 ( 录音流水号, 区域 ) SELECT * 导出数据.录音流水号, 导出数据.区域 FROM 导出数据;
时间: 2024-04-04 14:31:02 浏览: 111
以下是将从表“导出数据”每次插入10000条记录至表“对比表”,同时将对比表中的数据按每次10000条导出至自动生成的Excel文件并导出至C:\文件夹中,下一次从10001条开始导出至自动生成的Excel文件并导出至C:\文件夹中,依此类推,直到全部导出完毕,最后清空对比表的代码:
```
' 设置每次插入的记录数
Const BATCH_SIZE = 10000
' 将数据从表“导出数据”插入表“对比表”,直至所有数据均插入完毕
Do While DCount("*", "导出数据") > 0
CurrentDb.Execute "INSERT INTO 对比表 (录音流水号, 区域) " & _
"SELECT TOP " & BATCH_SIZE & " 录音流水号, 区域 FROM 导出数据"
CurrentDb.Execute "DELETE TOP " & BATCH_SIZE & " FROM 导出数据"
Loop
' 将对比表中的数据按每次10000条导出至自动生成的Excel文件并导出至C:\文件夹中
Dim rs As DAO.Recordset
Dim fileName As String
Dim i As Long
i = 1
Set rs = CurrentDb.OpenRecordset("SELECT * FROM 对比表", dbOpenSnapshot)
Do While Not rs.EOF
If i Mod BATCH_SIZE = 1 Then
' 新建Excel文件
fileName = "C:\对比表_" & Int(i / BATCH_SIZE) & ".xlsx"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, "对比表", fileName, True
End If
rs.MoveNext
i = i + 1
Loop
rs.Close
' 清空对比表
CurrentDb.Execute "DELETE FROM 对比表"
```
这段代码与上一个代码的主要区别是在导出Excel文件时指定了文件路径为C:\,并且文件名中加入了前缀“对比表_”以便区分。
阅读全文