【问题标题】:Importing data from Excel into Access using DAO and WHERE clause使用 DAO 和 WHERE 子句将数据从 Excel 导入 Access
【发布时间】:2013-01-26 14:16:40
【问题描述】:

我需要将某些信息从 Excel 文件导入 Access DB,为此,我正在使用 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 子句检索某些记录时,我的问题就出现了。我要应用该子句的字段的名称是“日期 (UCT)”(请记住,用户从另一个系统获取此源文件),我无法让 WHERE 子句对其进行处理。如果我将 WHERE 子句应用于另一个字段,其名称没有 () 或空格,那么它可以工作。示例:

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

前面的指令将只检索字段Other值为12925的记录数。

谁能告诉我如何获得相同的结果,但字段名称包含空格和括号,即“日期 (UCT)”?

非常感谢。

奥克塔维奥

【问题讨论】:

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


    【解决方案1】:

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

    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 格式写入日期,而不管您机器上的任何区域设置

    【讨论】:

    • 嗨,barrowc,我已经尝试了你的建议,但没有任何记录。此外,字段 [Date (UCT)] 应该包含日期。我做了一个测试,将该字段上的所有值更改为数字,但仍然得到一个空的 rs。还有其他想法吗?谢谢!
    • = 12925 部分直接来自问题。我已经修改了答案以显示日期比较
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 2013-02-21
    • 1970-01-01
    • 2010-12-04
    相关资源
    最近更新 更多