【问题标题】:Syntax error (missing operator) in MS-Access QueryMS-Access 查询中的语法错误(缺少运算符)
【发布时间】:2012-04-20 16:15:56
【问题描述】:

以下查询给了我"(missing operator)" 语法错误。所需的输出是来自表[dbo_tbl*] 和视图[vw_*] 的数据的组合。我用过的所有钥匙都存在。有什么想法吗?

SELECT dbo_tbl_BOD.fpartno AS PartNumber,
      dbo_tbl_BOD.frev AS RevisionIssue,
      vw_DOCSwType.DocID,
      vw_DRHRelfilter.Rev,
      vw_DOCSwType.DocTypeDesc,
      vw_DOCSwType.DocDesc,
      vw_DOCSwType.DwgNoLegacy,
      vw_DOCSwType.FileLocationOld,
      vw_DRHRelfilter.DateCreated,
      vw_DOCSwType.CreatedBy,
      vw_DRHRelfilter.Rel,
      vw_DRHRelfilter.RelLink
FROM dbo_tbl_BOD
LEFT JOIN vw_DRHRelfilter
      ON ((dbo_tbl_BOD.DocID=vw_DRHRelfilter.DocID)
     AND (dbo_tbl_BOD.frev=vw_DRHRelfilter.Rev))
 LEFT JOIN vw_DOCSwType
      ON (dbo_tbl_BOD.DocID=vw_DOCSwType.DocID)
ORDER BY PartNumber;

【问题讨论】:

  • 感谢蓝脚的编辑。新手,是否有关于在此站点某处输入格式的信息?我的格式已从我的原始文本发布中删除。
  • 要将文本格式化为代码,请选择文本,然后按类似于“{}”的代码示例按钮。您也可以选择文本然后按Ctrl+k。有关此处编辑选项的更多信息:stackoverflow.com/editing-help

标签: sql ms-access syntax


【解决方案1】:

使用 Access,每个连接都需要括号,例如:

SELECT dbo_tbl_BOD.fpartno AS PartNumber,
dbo_tbl_BOD.frev AS RevisionIssue,
vw_DOCSwType.DocID,
vw_DRHRelfilter.Rev,
vw_DOCSwType.DocTypeDesc,
vw_DOCSwType.DocDesc,
vw_DOCSwType.DwgNoLegacy,
vw_DOCSwType.FileLocationOld,
vw_DRHRelfilter.DateCreated,
vw_DOCSwType.CreatedBy,
vw_DRHRelfilter.Rel,
vw_DRHRelfilter.RelLink
FROM (dbo_tbl_BOD
LEFT JOIN vw_DRHRelfilter
ON dbo_tbl_BOD.DocID=vw_DRHRelfilter.DocID
AND dbo_tbl_BOD.frev=vw_DRHRelfilter.Rev)
LEFT JOIN
vw_DOCSwType
ON dbo_tbl_BOD.DocID=vw_DOCSwType.DocID
ORDER BY PartNumber;

如果您有 MS Access 的副本,则可以通过使用查询设计窗口来构建您的联接轻松查看所需的括号。

您可以使用VBA来检查字段类型,例如:

Dim rs As DAO.Recordset
Dim fld As DAO.Field

Set rs = CurrentDb.OpenRecordset("query1")
For Each fld In rs.Fields
    Debug.Print fld.SourceField, fld.SourceTable, _
        DLookup("SQLName", "DataTypeEnum", "DataValue=" & fld.Type)
Next

表 DataTypeEnum 包含 fld.type 返回的数值的文本描述。

数据值 SQLName
1 个布尔值
2 字节
3 整数
4长
5 货币
6单
7 双
8 日期
9 二进制
10 文本
11 长二进制
12 备忘录
15 图形用户界面
16 大整数
17 变量二进制
18 个字符
19 数字
20 十进制
21 浮动
22 时间
23 时间戳

【讨论】:

  • 谢谢@Remou。现在执行查询时出现类型不匹配错误。
  • 这可能是由于其中一个匹配类型不同,例如将文本类型与数字类型字段(列)匹配,example dbo_tbl_BOD.frev=vw_DRHRelfilter.Rev
  • 我可以轻松查看 Access 表中的数据类型,但如何确定视图中返回的数据类型?
  • 我不明白你的意思。你不知道你的数据类型吗?您不是在 Access 中工作吗?
  • 抱歉所有新手问题。在访问中工作。有没有办法显示视图/查询中返回的数据类型?否则我需要通过对原始表的查询来解析以匹配数据类型。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2019-07-18
  • 1970-01-01
  • 2016-08-20
相关资源
最近更新 更多