首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MS访问更新查询错误(无法更新备忘录字段,即实际文本字段)

MS访问更新查询错误(无法更新备忘录字段,即实际文本字段)
EN

Stack Overflow用户
提问于 2016-01-18 22:51:16
回答 1查看 727关注 0票数 1

大家下午好,

我有权连接到一些质量软件的后端,我们内部(SQL)和拉两个表(软件公司做了一个更新,并将数据分成两个表),这些表被加入和转储到一个表(tblWeakPointMaster)与一个Make查询。主键没有在转储中传输,新列(Aunonumber)添加了后快照,以及我们将要添加的数据的一些附加列。

由于数据已经被提取过一次,我使用相同的Make查询将其转储到一个新的(tblWeakPointUpdates),中,并且我希望运行一个update查询来将new并将记录从这个表转换为tblWeakPointMaster,让他们使用它。我遇到的问题是在运行更新查询时我会收到错误(无法在备忘录、OLE或超链接上加入.)

问题是,它拒绝的字段不是这些字段中的任何一个。是什么导致了这个问题。到目前为止,它遇到问题的所有字段都是50个字符或以下的文本字段,这些字段是完全相同的(因为它们是从同一个Make查询中生成的)

我无法找到关于这个特定错误的任何信息,我不确定这是否是访问限制,是否存在被提取数据的问题,或者说我是不是太过头了?

更新

这两张表的图片我突出显示了我从SQL数据库中提取的字段,这些字段也是我试图更新的字段。表已在图像中标记。

Access for Update查询中使用的SQL im (由Access生成)

代码语言:javascript
复制
UPDATE tblWeakPointMaster INNER JOIN tblWeakPointUpdates ON 
(tblWeakPointMaster.TaskTypeID = tblWeakPointUpdates.TaskTypeID) AND 
(tblWeakPointMaster.NCR = tblWeakPointUpdates.NCR) AND 
(tblWeakPointMaster.NCR_Date = tblWeakPointUpdates.NCR_Date) AND 
(tblWeakPointMaster.NC_type = tblWeakPointUpdates.NC_type) AND 
(tblWeakPointMaster.Customer = tblWeakPointUpdates.Customer) AND 
(tblWeakPointMaster.Material = tblWeakPointUpdates.Material) AND 
(tblWeakPointMaster.Rev = tblWeakPointUpdates.Rev) AND 
(tblWeakPointMaster.Qty_rejected = tblWeakPointUpdates.Qty_rejected) AND 
(tblWeakPointMaster.TaskType = tblWeakPointUpdates.TaskType) AND 
(tblWeakPointMaster.dbo_PT_Task_Notes = tblWeakPointUpdates.dbo_PT_Task_Notes) AND 
(tblWeakPointMaster.Origin = tblWeakPointUpdates.Origin) AND 
(tblWeakPointMaster.Origin_ref = tblWeakPointUpdates.Origin_ref) AND 
(tblWeakPointMaster.Origin_cause = tblWeakPointUpdates.Origin_cause) AND 
(tblWeakPointMaster.Origin_category = tblWeakPointUpdates.Origin_category) 

SET tblWeakPointMaster.TaskTypeID = [tblWeakPointUpdates].[TaskTypeID], 
tblWeakPointMaster.NCR = [tblWeakPointUpdates].[NCR], 
tblWeakPointMaster.NCR_Date = [tblWeakPointUpdates].[NCR_Date], 
tblWeakPointMaster.NC_type = [tblWeakPointUpdates].[NC_type], 
tblWeakPointMaster.Customer = [tblWeakPointUpdates].[Customer], 
tblWeakPointMaster.Material = [tblWeakPointUpdates].[Material], 
tblWeakPointMaster.Rev = [tblWeakPointUpdates].[Rev], 
tblWeakPointMaster.Qty_rejected = [tblWeakPointUpdates].[Qty_rejected], 
tblWeakPointMaster.TaskType = [tblWeakPointUpdates].[TaskType], 
tblWeakPointMaster.dbo_PT_Task_Notes = [tblWeakPointUpdates].[dbo_PT_Task_Notes], 
tblWeakPointMaster.Origin = [tblWeakPointUpdates].[Origin], 
tblWeakPointMaster.Origin_ref = [tblWeakPointUpdates].[Origin_ref], 
tblWeakPointMaster.Origin_cause = [tblWeakPointUpdates].[Origin_cause], 
tblWeakPointMaster.Origin_category = [tblWeakPointUpdates].[Origin_category];

我收到的错误信息

-james

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-19 12:58:54

首先是直接问题:查询连接所有字段,包括

代码语言:javascript
复制
AND (tblWeakPointMaster.dbo_PT_Task_Notes = tblWeakPointUpdates.dbo_PT_Task_Notes)

这是一个备注字段,因此查询失败。

错误消息被截断(Access通常使用长SQL表达式执行此操作),因此没有列出dbo_PT_Task_Notes。但这就是原因。

实际问题

即使没有“备注”字段,查询也不会执行您想要的操作。

如果您对所有字段执行内部连接,则只有完全相同的记录才会被连接,并且更新没有意义。

您必须区分这些字段:

  • 那些标识记录,并且不更改原始数据库的记录。这些字段属于联接表达式,以查找匹配的记录。
  • 可以在原始数据库中更改的。这些字段属于更新查询的SET部分,它们是要更新的字段。

为什么不导出和导入主键呢?这将使任务变得琐碎--第一组将由主键组成,其余部分的第二组组成。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34865551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档