3

我刚刚收到一个要添加到宏的查询,该宏只是根据特定条件添加到名为异常的表中;但是我收到了上述错误。

我已阅读有关此错误的 Microsoft 支持条目,它指的是在其中一个字段中使用了Memo数据类型;使用的表都没有这样的字段,它们是文本或数字。这是查询:

INSERT INTO Exceptions ( [Unique Number])
    SELECT qryOutgoings.[Unique Number], 
    FROM qryOutgoings LEFT JOIN tblExlcusions ON qryOutgoings.[PLAN CODES] = tblExlcusions.[PLAN CODES]
    WHERE (((tblExlcusions.[PLAN CODES]) Is Null));

(注意:是的,为了安全起见,我已经更改了字段和查询名称,以防万一:))

Exceptions 表中唯一编号的数据类型为:

  • 文本
  • 场地大小:50

它来自另一个表的数据类型(通过 qryOutgoings 上的连接获得)完全相同。那么是什么导致了这个问题呢?

以下是该字段中一些数据的示例,包括最大的数字:

  • 515145
  • 132132
  • 824
  • 772794

这里可能是什么问题?另外 - 请注意,这只是 MS ACCESS - 不涉及 SQL Server 背景。

4

1 回答 1

3

SELECT子句包括一个字段,后跟一个逗号。

SELECT qryOutgoings.[Unique Number],

如果该逗号也出现在实际查询中,则丢弃它。但是我怀疑杂散逗号在问题中,而不是实际查询中,否则您会收到不同的错误消息。

尝试显式转换qryOutgoings.[Unique Number]为字符串。

INSERT INTO Exceptions ([Unique Number])
    SELECT CStr(qryOutgoings.[Unique Number]) 
    FROM qryOutgoings LEFT JOIN tblExlcusions ON qryOutgoings.[PLAN CODES] = tblExlcusions.[PLAN CODES]
    WHERE (((tblExlcusions.[PLAN CODES]) Is Null));

如果这不能消除错误,请检查 Access 认为该字段的数据类型,以及它包含的文本的长度。

SELECT
    qryOutgoings.[Unique Number], 
    TypeName(qryOutgoings.[Unique Number]) AS type_of_unique_number, 
    Len(qryOutgoings.[Unique Number]) AS length_of_unique_number
FROM
    qryOutgoings
    LEFT JOIN tblExlcusions
    ON qryOutgoings.[PLAN CODES] = tblExlcusions.[PLAN CODES]
WHERE (((tblExlcusions.[PLAN CODES]) Is Null));

如果没有其他方法可以解决此问题,请尝试询问最左边的 50 个字符。

SELECT Left(qryOutgoings.[Unique Number], 50) 
于 2013-08-09T15:00:19.487 回答