sql - 所有相关 Access 表中的重复记录,在按钮单击事件中分配了新的 PK/FK
问题描述
我有一个包含 5 个表的 Access 数据库:
Report_Start 在 [Report_ID] 上持有 PK
CommSummary 在 [Report_ID] 上持有 FK
MRPCSummary 在 [Report_ID] 上持有 FK
SQESummary 在 [Report_ID] 上持有 FK
MEPSummary 在 [Report_ID] 上持有 FK
用户在存储在 Report_Start 表中的用户表单(报告日期、供应商、采购员、计划员等)上输入新的报告信息。在不同的时间,不同的用户使用不同的表格来填充表 2-4,所有数据都通过 [Report_ID] 链接,即报告日期和供应商名称连接在一起。
我在启动表单上添加了一个按钮,该按钮需要允许用户从所有 5 个表中复制现有数据并分配一个新的 Report_ID 和新的 Report_Date。这是必需的,因为每次我们报告供应商状态时,用户只有一两个字段需要更新。他们想将旧记录复制到新记录,然后进行一两次更新。(我已经有了允许从每个表中更新现有记录的表单和代码。)
新的 Report_ID 和 Report_Date 将由用户从对话窗口中选择生成:
a) 现有报告日期 (Me.Cbo_OldDate)
b) 供应商 (Me.Cbo_Vendor)
经过几天的研究,我发现一条 SQL 语句与我想要完成的结果很接近,但是我遇到了语法错误。在攻击关系表 2-5 之前,我只是想在上面的 #1 表中复制以证明我的代码。
到目前为止我的代码:
启动表格(用户点击复制记录按钮):
Private Sub Cmd_Copy_Click()
DoCmd.OpenForm "New_Data", acNormal, , , , acDialog
End Sub
用户选择现有报告信息和新报告日期的 New_Data 表单:
Private Sub Cmd_OK_Click()
Dim OldID As String
Dim NewID As String
Dim NewDate As Date
Dim strSQL As String
OldID = Me.Cbo_OldDate & Me.Cbo_Vendor
NewID = Me.Txt_NewDate & Me.Cbo_Vendor
NewDate = Me.Txt_NewDate
Me.Txt_Old_ID = OldID
Me.Txt_New_ID = NewID
strSQL = "SELECT r.Report_ID, r.Report_Date, r.Vendor, r.Buyer, r.MRPC, r.SQE, r.MEP WHERE (((r.Report_ID) = ('" & OldID & "') INTO Report_Start as r WHERE (((r.Report_ID) = '" & NewID & "' and ((r.Report_Date) = (#" & NewDate & "#)));"
CurrentDb.Execute strSQL, dbFailOnError
End Sub
我得到的错误是:
如果有人可以帮助我确定错误在哪里,然后给我一些关于如何复制关系表中的信息并将新 FK 分配为新 PK 的指导,我将不胜感激!我不想让每个用户打开他们各自的表单来只复制他们的数据。
最后,由于表之间的关系,我想要一个按钮来复制所有,然后每个用户都可以按日期查找他们的信息并提供他们的更新。
解决方案
您可以使用 select 执行并插入其中,如下所示:
strSQL = "INSERT INTO Report_Start " & _
" SELECT " & newID & ", #" & newDate & "#, r.Vendor, r.Buyer, r.MRPC, r.SQE, r.MEP" & _
" FROM Report Start as r " & _
" WHERE r.Report_ID = " & oldID
推荐阅读
- android - 由“inflater.inflate()”引起的安卓应用程序长时间“冷启动”
- javascript - 如何将后端(python、flask)与前端(html、css、javascript)连接起来
- ios - 如何根据随机数组索引显示正确的 label.text
- c++ - 元组的定义和初始化,其组件属于同一模板类,但具有不同的特化
- python - Python 错误 - “数组索引过多”
- c++ - 什么是 SGX_CDECL 宏?
- javascript - 为什么只有一个日期从视图传输到控制器?
- c++ - 慢速 IO 设备上空间数据的数据结构/排序
- javascript - 有没有更好的方法可以通过承诺来做到这一点?
- angular - 返回角度错误时的最佳做法是什么