2013-02-11 93 views
1

我需要将Excel文件中的某些信息导入到Access数据库中,并且为了执行此操作,我正在使用DAO。使用DAO和WHERE子句将Excel中的数据导入Access

用户从系统获取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") 

前面的指令将只检索的地方领域的其他具有值的记录数12925.

谁能告诉我怎样才能达到同样的效果,但有一个字段名称有空格和括号,即'日期(UCT)'?

非常感谢。

奥克塔维奥

回答

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格式写入日期,而不考虑o f你的机器上的任何区域设置

+0

嗨barrowc,我试过你的建议,但我没有得到任何记录。此外,字段[日期(UCT)]应该包含日期。我做了一个测试,将该字段中的所有值更改为数字,但仍然得到一个空的rs。任何其他想法?谢谢! – Octavio 2013-02-12 14:19:52

+0

'= 12925'部分直接来自问题。我已经修改了我的答案以显示日期比较 – barrowc 2013-02-12 22:14:43

相关问题