使用DAO和WHERE子句将数据从Excel导入Access

时间:2013-02-11 13:18:34

标签: excel-vba import access-vba import-from-excel vba

我需要将某些信息从Excel文件导入Access数据库,为了做到这一点,我正在使用DAO。

用户从系统获取excel源文件,他不需要直接与之交互。这个源文件有10列,我只需要从中检索某些记录。

我用它来检索所有记录:

Set destinationFile = CurrentDb
Set dbtmp = OpenDatabase(sourceFile, False, True, "Excel 8.0;")
DoEvents
Set rs = dbtmp.OpenRecordset("SELECT * FROM [EEX_Avail_Cap_ALL_DEU_D1_S_Y1$A1:J65536]")

当我想使用WHERE子句仅检索某些记录时,我的问题出现了。我想要应用该子句的字段的名称是“Date(UCT)”(请记住,用户从另一个系统获取此源文件)并且我无法获取WHERE子句来处理它。如果我将WHERE子句应用于另一个字段,其名称没有()或空格,那么它的工作原理。例如:

Set rs = dbtmp.OpenRecordset("SELECT * FROM [EEX_Avail_Cap_ALL_DEU_D1_S_Y1$A1:J65536] WHERE Other = 12925")

上一条指令只会检索字段Other的值为12925的记录数。

有人可以告诉我如何才能获得相同的结果,但是字段名称有空格和括号,即'Date(UCT)'?

非常感谢。

奥克塔维奥

1 个答案:

答案 0 :(得分:0)

尝试将字段名称括在方括号中:

SELECT * FROM [EEX_Avail_Cap_ALL_DEU_D1_S_Y1$A1:J65536] WHERE [Date (UCT)] = 12925

或者如果这是我们正在寻找的日期:

SELECT * FROM [EEX_Avail_Cap_ALL_DEU_D1_S_Y1$A1:J65536] WHERE [Date (UCT)] = #02/14/13#;

要使用日期文字,您必须将其用#字符括起来,并以MM / DD / YY格式写日期,无论您机器上的任何区域设置如何