VBA SQL:来自子句中的语法错误,使用密码进行双重内部连接



我对SQL相当陌生,我正在尝试创建一个收集以下内容的字符串:

  • 从 [目录信息] 代码为 c
  • 来自 [产品信息] 的说明为 p
  • 重量从 p
  • PPB 从 p
  • CP-UK从p
  • CP-EU 从 p
  • 1 来自受密码保护的外部数据库 C:\mypath\db.accdb as .pl

下面的代码不断在From 子句中给我一个语法错误。我假设这与我在内部连接周围的括号有关,但我不确定。

在添加第二个 INNER JOIN 子句(外部数据库(之前,这段代码运行良好,My WHERE & ORDER BY 子句工作正常。

sqlProd = "SELECT c.Code," _
& " p.Description, p.weight, p.[Pack Size], p.PPB, p.[CP-UK], p.[CP-EU]," _
& " pl.1" _
& " FROM ([Catalogue Info] c" _
& " INNER JOIN [Product Information] p" _
& " on c.code = p.code)" _
& " INNER JOIN [;database=C:mypathdb.accdb;PWD=password123].table_name pl" _
& " on c.code = pl.code" _
& " WHERE c.Sub_Cat_1 = '" & rstSub1!Sub_Cat_1 & "'" _
& " AND c.Sub_Cat_2 = '" & rstSub2!Sub_Cat_2 & "'" _
& " ORDER BY c.Page ASC, c.Page_Position ASC;"

有什么想法吗?

访问 2016, Excel 2016, 视窗 10

谢谢! 多姆

我相信这应该有效,因为我认为您的FROM子句的一部分周围有不必要的括号:

sqlProd = "SELECT c.Code," _
& " p.Description, p.weight, p.[Pack Size], p.PPB, p.[CP-UK], p.[CP-EU]," _
& " pl.1" _
& " FROM [Catalogue Info] c" _
& " INNER JOIN [Product Information] p" _
& " on c.code = p.code" _
& " INNER JOIN [;database=C:mypathdb.accdb;PWD=password123].table_name pl" _
& " on c.code = pl.code" _
& " WHERE c.Sub_Cat_1 = '" & rstSub1!Sub_Cat_1 & "'" _
& " AND c.Sub_Cat_2 = '" & rstSub2!Sub_Cat_2 & "'" _
& " ORDER BY c.Page ASC, c.Page_Position ASC;"

我想我已经找到了解决这个问题的方法 - 这不是括号,而是我使用的密码。

我使用的密码(不在原始问题中(使用了特殊字符(#>'{(= 这似乎给出了语法错误。我将访问数据库中的密码更改为仅字母/数字,原始代码工作正常。

希望这对其他人有所帮助。最终代码:

sqlProd = "SELECT c.Code," _
& " p.Description, p.weight, p.[Pack Size], p.PPB, p.[CP-UK], p.[CP-EU]," _
& " pl.[1]" _
& " FROM [Catalogue Info] as c" _
& " INNER JOIN [Product Information] as p" _
& " on c.code = p.code" _
& " INNER JOIN [;database=C:mypathdb.accdb;PWD=password123].table_name as pl" _
& " on c.code = pl.code" _
& " WHERE c.Sub_Cat_1 = '" & rstSub1!Sub_Cat_1 & "'" _
& " AND c.Sub_Cat_2 = '" & rstSub2!Sub_Cat_2 & "'" _
& " ORDER BY c.Page ASC, c.Page_Position ASC;"

感谢您的反馈。

最新更新