Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net OleDB+Jet:联接操作中出现语法错误_.net_Ms Access_Oledb_Oledbexception - Fatal编程技术网

.net OleDB+Jet:联接操作中出现语法错误

.net OleDB+Jet:联接操作中出现语法错误,.net,ms-access,oledb,oledbexception,.net,Ms Access,Oledb,Oledbexception,我已经为access数据库构建了一个复杂的查询,在access中,它就像一个符咒。但是,当我试图通过OleDB在程序中运行相同的查询时,在Join操作中会出现异常语法错误。没有进一步的信息 SELECT MainTable.Main_dbID, D0.Kvp_Value AS ["Value"] FROM (MainTable INNER JOIN ( SELECT Main_dbID, Kvp_Value FROM KVPTable WHERE Kvp_

我已经为access数据库构建了一个复杂的查询,在access中,它就像一个符咒。但是,当我试图通过OleDB在程序中运行相同的查询时,在Join操作中会出现异常语法错误。没有进一步的信息

SELECT
    MainTable.Main_dbID,
    D0.Kvp_Value AS ["Value"]
FROM (MainTable
INNER JOIN (
    SELECT Main_dbID, Kvp_Value
    FROM KVPTable
    WHERE Kvp_Code IN (1, 2, 4)
) AS D0
ON D0.Main_dbID = MainTable.Main_dbID)
WHERE Main_Time <= ? AND Main_Time >= ?;
我已经把这个问题分解了,因为我觉得它仍然具有代表性。我之所以使用subselect而不是直接联接,是因为我需要多次联接到键值表,以便将不同的键放入不同的列中。我没办法用别的方法


我正在使用C2.0和Visual Studio 2008,以防出现相关问题。

这无疑是一条令人困惑的信息。错的是多余的逗号:

D0.Value AS ["Value"],  <-- here

我希望这些名称不是真正的字段列名,因为值和时间是保留字,将导致无休止的问题。如果他们是真名,我建议至少用方括号括起来。

发现了问题。我输入查询的方式打破了它

编辑:如您所见,我将查询分布在多行上,因此它更易于阅读。当我将其粘贴到源代码中时,发生了以下情况:

"SELECT FooField" +
"FROM BarTable;";

这将导致从BarTable中选择FooField;-显然,这不是有效的语法,这很痛苦。我只是一开始没意识到…

谢谢你指出这一点。我简化查询时犯了一些错误。现在应该修复,以便出现真正的问题…我已经在c中尝试了sql,它对我有效,除了时间问题,首先,我不相信你的意思是:Main_time=?为什么不告诉我们是什么具体破坏了它?