自动生成的SQL代码会引发类型不匹配

时间:2015-11-20 14:10:40

标签: sql ms-access append ms-access-2010

我的问题是我想在Ms-Access 2010中添加追加查询。我试图在查询设计器中实现它,但它会抛出错误:

  

表达式中的类型不匹配

请参阅下面生成的代码:

INSERT INTO Yield ( ProcessName, Sor, Lot, 
ProcessCode, Outgoing, DefectReason, DefectQty, ModifyQty )

SELECT Process.[ProcessName], Sor.[Sor], Qty.[Lot], Qty.[ProcessCode], 
Qty.[Outgoing Date], Qty.[Defect Reason], Qty.[Defect Qty], Qty.[Modify_Qty]

FROM (Sor INNER JOIN ProcessCode ON Sor.[SorID] = ProcessCode.[SorID]) 
INNER JOIN (Process INNER JOIN Qty ON Process.[ProcessID] = Qty.[ProcessID]) 
ON ProcessCode.[ProcessID] = Process.[ProcessID];

表格和属性都已存在。 ID号是索引,数量是数字,' ProcessName'' Sor'' Lot'' ProcessCode',&# 39; DefectReason'属性是字符串。

可能是什么问题?

提前致谢。

2 个答案:

答案 0 :(得分:1)

看起来不错。最好的建议是将它分成小块。

http://importblogkit.com/2015/05/how-do-you-eat-an-elephant/

试试这个:

删除insert部分。只需尝试select即可确保加入正常。如果失败则问题出在连接字段

然后,再次放置insert,而不是使用SELECT中的表字段使用默认值。 ''表示字符串,0表示数字,并为列名添加正确的别名。这样您就可以确保数据带来正确的数据类型。如果失败则其中一个字段实际上不是字符串或数字。像gustav建议可能是DATE

如果该工作然后尝试每次放置一个表字段,直到找到导致问题的那个。也许一个字段不支持null或者接收的值大于支持的值。

答案 1 :(得分:0)

问题是Yield表没有列出的属性。我认为如果输出表中没有包含某些列出的输出属性,Access会自动创建缺少的新属性。我错了。输出表必须包含属性(行),新属性不能以这种方式插入其中。