我使用下面的VBA Access 2010中的一组进口记录从一个临时表(tblImport)添加到现有的链接表(tblPerson):有没有办法将查询的结果切分成可报告的块?
Dim dbs As Database
Set dbs = CurrentDb
dim StrSQl as String
strSQL = strSQL & "INSERT INTO tblPerson (GenID, Surname, GivenNames, OtherInfo, GroupID) "
strSQL = strSQL & "SELECT FHID, Surname, GivenNames, OtherInfo, Group FROM tblImport;"
dbs.Execute strSQL
对于大型数据集(绝对750000项纪录但可能小于该阈值 - 要确定的阈值) - 我想为导入提供进度指示器,以便用户不会失去希望并进入终端拒绝状态(或终止应用程序,因为它们可以没有看到任何进展。)导入这样的大文件应该是不经常的,导入时间和进度报告之间的权衡应该是可以接受的。
我正在考虑的一个选择是将数据集分成(比如说)10,000个记录块,并在每个记录块之后更新进度。
要做到这一点,我可以使用:
SELECT TOP 10000 FHID, Surname, GivenNames, OtherInfo, Group FROM tblImport ORDER BY FHID;
其次
DELETE FROM tblImport
WHERE FHID IN
SELECT TOP 10000 FHID, Surname, GivenNames, OtherInfo, Group FROM tblImport ORDER BY FHID;
确定数据要导入每次然后将其删除(在这一点我想报告进度)并迭代,直到tblImport中没有任何记录。
有没有更简单的方法来做到这一点?
'tblImport.FHID'是数字主键吗? – HansUp
@HansUp不,它是我无法控制的50个字符的文本字段。 – ColeValleyGirl
你可以添加一个自动编号字段到'tblImport'临时表吗? – HansUp