追加查询
Insert INTO [excel 8.0;database=c:\a.xls].[sheet1$] Select * FROM Sm;
这个追加是在指定表的最后一条记录进行追加的,缺陷是一定要有列标题,而且列标题要与mdb表的字段名一致.假如有N个mdb数据要导出到一个excel,通常是先打开一个excel,然后分别进行导出,过程中要加入usedrange或其他方法来判断最后的行位置,而用这个语句就省去这个麻烦了.
生成表查询
Select Sm.ID, Sm.字段1 INTO [excel 8.0;database=c:\a.xls].[sheet2] FROM Sm;
这里的表名不需要加"$"附号,而且表名已有的话,会有提示.另外感觉这个sql语句的速度比tranferspreadsheet,OutPutTo的速度要快,而且可以指定生成工作表的名称.与CopyFromRecordSet速度相当,但优点在于自动生成列标题,而CopyFromRecordSet不能.
基于以上两点理由,觉得应该用这个语句来代替以往所有的导出的方法.
经准确测试,3.3万条记录,用sql语句与copyfromrecordset执行时间都是2秒,而tranferspreadsheet要4秒,outputto超出行数,报错.
copyfromrecordset需要起码7行代码,而且没有列标题,如果是用copyfromrecordset追加到指定的单元格,可以用追加查询代替,如果是新表,就用生成表查询代替.
至于删除查询,提示ISAM不支持.