【问题标题】:Access UPDATE statement in query fails to actually update查询中的访问 UPDATE 语句无法实际更新
【发布时间】:2018-01-02 23:49:08
【问题描述】:

存在以下表格:

Passerine_Survey_Observation Species_Codes

我正在尝试将 Passerine_Survey_Observation 中的通用名称设置为 Species_Codes 的通用名称:

UPDATE Passerine_Survey_Observation 
INNER JOIN Species_Codes ON Passerine_Survey_Observation.SPEC_FK = Species_Codes.SPEC 
SET Passerine_Survey_Observation.Species_Common_Name = Species_Codes.COMMONNAME;

它说会发生更新;但是,Passerine_Survey_Observation 没有任何变化。

Supposed update warning

如果我这样做,更新确实会按预期发生:

SET Passerine_Survey_Observation.Species_Common_Name = 'test'

【问题讨论】:

  • 一旦你点击警告OK,它是否会出现一条消息说这么多记录被更新了?
  • 不,它没有,@Knox
  • 代码对我来说很合适。如果您将 Species_Codes.COMMONNAME 替换为类似于您所做的“测试”,会发生什么?
  • 会不会出现类型不匹配,COMMONNAME 无法进入目标字段?还是尺寸不匹配?通常这会导致警告说由于...而没有更新很多行。
  • 您的屏幕截图中的记录数看起来是否正确(即观察表中的所有记录)?这将证明连接是否按预期发生。如果您在数据表视图中显示查询,它会显示什么(您希望它为每个观察记录列出匹配的 COMMONNAME)?

标签: ms-access sql-update inner-join


【解决方案1】:

@Knox 正在做某事...

出现此行为是因为目标字段 (Passerine_Survey_Observation.Species_Common_Name) - 在设计视图中 - 是一个列表框(在属性 > 查找选项卡下)。将其设置为 Display Control = Text Box 解决了该问题。哎呀。

最终代码:

UPDATE Passerine_Survey_Observation 
INNER JOIN Species_Codes ON Passerine_Survey_Observation.[SPEC_FK] = Species_Codes.[SPEC] 
SET Passerine_Survey_Observation.Species_Common_Name = Species_Codes.[COMMONNAME]
WHERE Passerine_Survey_Observation.Species_Common_Name IS NULL;

【讨论】:

  • 只是将控件设置为列表框不会引起问题 - 我测试过,更新工作正常。但是,我从未在表格中设置查找。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多