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
答案 0 :(得分:4)
首先直接问题:查询加入所有字段,包括
AND (tblWeakPointMaster.dbo_PT_Task_Notes = tblWeakPointUpdates.dbo_PT_Task_Notes)
这是一个备注字段,因此查询失败。
错误消息被截断(Access通常使用长SQL表达式执行此操作),因此未列出dbo_PT_Task_Notes
。但这是原因。
实际问题:
即使没有备注字段,您的查询也无法满足您的要求
如果在所有字段上执行INNER JOIN,则只会加入完全相同的记录,并且UPDATE没有意义。
您必须区分字段:
SET
部分,它们是您要更新的字段。为什么不导出和导入主键?这将使任务变得微不足道 - 第一组将由主键组成,第二组将由其余组成。