MS Access更新查询错误(无法更新备注字段,即实际文本字段)

时间:2016-01-18 22:51:17

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

Good Afternoon All,

我有Access连接到我们内部的一些质量软件的后端(SQL)并拉动2个表(软件公司进行了更新并将数据拆分为两个表),这些表被连接并转储到表中(带有Make Table Query的 tblWeakPointMaster )。主键未在转储中传输,新列(Aunonumber)添加了Post-Snapshot,以及我们将添加的数据的一些其他列

数据已经拉过一次,我使用相同的Make Table Query转储到新表( tblWeakPointUpdates ),我想运行更新查询来推送新记录和更改记录这个表到 tblWeakPointMaster ,我让他们一起工作。我遇到的问题是我在运行更新查询时遇到错误(无法加入备忘录,OLE或超链接..

问题是,拒绝的字段不是这些字段中的任何一个。可能导致此问题的原因。到目前为止,它遇到问题的所有字段都是50个字符或更少的文本字段,字段完全相同(因为它们是从相同的Make Table Query中制作的)

我无法找到关于这个特定错误的任何内容,我不确定这是否是访问限制,并且问题是数据被拉出,或者我是否只是在我脑海中

更新
Pic of Both Tables我已经突出显示了我从SQL数据库中提取的字段,这些字段也是我尝试更新的字段。表格已标记为图像

SQL im在Access for Update Query中使用(由Access生成)

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];

The Error Message I'm Receiving

-James

1 个答案:

答案 0 :(得分:4)

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

AND (tblWeakPointMaster.dbo_PT_Task_Notes = tblWeakPointUpdates.dbo_PT_Task_Notes)

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

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

实际问题
即使没有备注字段,您的查询也无法满足您的要求 如果在所有字段上执行INNER JOIN,则只会加入完全相同的记录,并且UPDATE没有意义。

您必须区分字段:

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

为什么不导出和导入主键?这将使任务变得微不足道 - 第一组将由主键组成,第二组将由其余组成。