MS Access 更新查询错误(无法更新备注字段,这是实际的文本字段)
MS Access Update Query Error (Can't update Memo Field, That is actual Text Field)
大家下午好,
我可以访问连接到我们内部的一些优质软件的后端 (SQL) 并拉取 2 tables(软件公司进行了更新并将数据分成两个 tables),这些 tables 被加入并转储到一个 Table (tblWeakPointMaster) 中,带有一个 Make Table 查询。主键未在转储中传输,添加了新列 (Aunonumber) Post-快照,以及我们将添加的数据的一些额外列
数据已经被提取了一次,我使用相同的 Make Table 查询转储到新的 Table (tblWeakPointUpdates),我想要到 运行 一个更新查询,将新记录和更改的记录从这个 table 推送到我让他们使用的 tblWeakPointMaster。我 运行 遇到的问题是 运行 更新查询时收到错误(无法加入备忘录、OLE 或超链接..)
要注意的是,它拒绝的字段不是这些字段中的任何一个。是什么导致了这个问题。到目前为止,它有问题的所有字段都是 50 个字符或更少的文本字段,这些字段完全相同(因为它们是由相同的 Make Table 查询制成的)
我无法找到关于这个特定错误的任何信息,我不确定这是否是访问限制,以及正在提取的数据的问题,或者我是否只是在我的头上
更新
Pic of Both Tables 我已经突出显示了我从 SQL 数据库中提取的字段,这些也是我试图更新的字段。 Table 已在图像中标记
我在 Access 中使用的 SQL 更新查询(由 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
-詹姆斯
首先直接问题:查询加入所有字段,包括
AND (tblWeakPointMaster.dbo_PT_Task_Notes = tblWeakPointUpdates.dbo_PT_Task_Notes)
是一个Memo字段,查询失败
错误消息被截断(Access 通常使用长 SQL 表达式执行此操作),因此未列出 dbo_PT_Task_Notes
。但这是原因。
实际问题:
即使没有备注字段,您的查询也不会执行您想要的操作。
如果对所有字段进行 INNER JOIN,则只有完全相同的记录才会被联接,UPDATE 没有任何意义。
您必须区分字段:
- 在原始数据库中识别记录,并且不更改的那些。这些字段属于 JOIN 表达式,以查找匹配的记录。
- 原始数据库中可以更改的那些。这些字段属于 UPDATE 查询的
SET
部分,它们是您要更新的字段。
为什么不导出和导入主键?这将使任务变得微不足道 - 第一组将包含主键,第二组包含其余部分。
大家下午好,
我可以访问连接到我们内部的一些优质软件的后端 (SQL) 并拉取 2 tables(软件公司进行了更新并将数据分成两个 tables),这些 tables 被加入并转储到一个 Table (tblWeakPointMaster) 中,带有一个 Make Table 查询。主键未在转储中传输,添加了新列 (Aunonumber) Post-快照,以及我们将添加的数据的一些额外列
数据已经被提取了一次,我使用相同的 Make Table 查询转储到新的 Table (tblWeakPointUpdates),我想要到 运行 一个更新查询,将新记录和更改的记录从这个 table 推送到我让他们使用的 tblWeakPointMaster。我 运行 遇到的问题是 运行 更新查询时收到错误(无法加入备忘录、OLE 或超链接..)
要注意的是,它拒绝的字段不是这些字段中的任何一个。是什么导致了这个问题。到目前为止,它有问题的所有字段都是 50 个字符或更少的文本字段,这些字段完全相同(因为它们是由相同的 Make Table 查询制成的)
我无法找到关于这个特定错误的任何信息,我不确定这是否是访问限制,以及正在提取的数据的问题,或者我是否只是在我的头上
更新
Pic of Both Tables 我已经突出显示了我从 SQL 数据库中提取的字段,这些也是我试图更新的字段。 Table 已在图像中标记
我在 Access 中使用的 SQL 更新查询(由 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
-詹姆斯
首先直接问题:查询加入所有字段,包括
AND (tblWeakPointMaster.dbo_PT_Task_Notes = tblWeakPointUpdates.dbo_PT_Task_Notes)
是一个Memo字段,查询失败
错误消息被截断(Access 通常使用长 SQL 表达式执行此操作),因此未列出 dbo_PT_Task_Notes
。但这是原因。
实际问题:
即使没有备注字段,您的查询也不会执行您想要的操作。
如果对所有字段进行 INNER JOIN,则只有完全相同的记录才会被联接,UPDATE 没有任何意义。
您必须区分字段:
- 在原始数据库中识别记录,并且不更改的那些。这些字段属于 JOIN 表达式,以查找匹配的记录。
- 原始数据库中可以更改的那些。这些字段属于 UPDATE 查询的
SET
部分,它们是您要更新的字段。
为什么不导出和导入主键?这将使任务变得微不足道 - 第一组将包含主键,第二组包含其余部分。