【发布时间】:2018-06-19 00:48:57
【问题描述】:
在 MS-Access 数据库中,我从 VBA 模块触发了以下 SQL 查询,该模块根据 WHERE 子句中所述的条件附加一条记录。我的问题是,我可以插入一个 MsgBox 来通知用户该记录是否已经存在或天气是新记录吗?目前,如果名为“Counterparty ID”的字段的值已经在目标表中,则查询将附加一条记录,否则不会。虽然机制是正确的,但我想通知用户他/她是否尝试插入重复记录。这有可能吗?我认为它必须在查询本身中发生。
"INSERT INTO Netting_Determinations_List ([Counterparty ID], [Counterparty Name], [Counterparty Type], [Counterparty Subtype],[DTCC_AVOX_Registered_LEI_CICI], " & _
"[Data Point 1],[Data Point 2],[Data Point 3],[Data Point 4],[Data Point 5], [Matrix Legal Form], [Matrix Governing/Authorizing Power], " & _
"[OnBoardings Color Determination], [Matrix Clarification], [Audit_Append_User], [Audit_Append_Date], [Audit_Append_Time]) " & _
"SELECT Repository_Redux.[Counterparty ID], Repository_Redux.[Counterparty Name], Repository_Redux.[Counterparty Type], Repository_Redux.[Counterparty Subtype], Repository_Redux.[DTCC_AVOX_Registered_LEI_CICI], " & _
"[Forms]![Frm_Master_Form]![Txt_Input_1] AS [Data Point 1], [Forms]![Frm_Master_Form]![Txt_Input_2] AS [Data Point 2], " & _
"[Forms]![Frm_Master_Form]![Txt_Input_3] AS [Data Point 3], [Forms]![Frm_Master_Form]![Txt_Input_4] AS [Data Point 4], " & _
"[Forms]![Frm_Master_Form]![Txt_Input_5] AS [Data Point 5], [Forms]![Frm_Master_Form]![Cbo_LegalForm] AS [Matrix Legal Form], " & _
"[Forms]![Frm_Master_Form]![Cbo_Status] AS [Matrix Governing/Authorizing Power], [Forms]![Frm_Master_Form]![Txt_Color] AS [OnBoardings Color Determination], " & _
"[Forms]![Frm_Master_Form]![Txt_Matrix_Clarification] AS [Matrix Clarification], '" & strUsername & "' AS [Audit_Append_User], " & _
"'" & StrDate & "' AS [Audit_Append_Date], '" & StrTime & "' AS [Audit_Append_Time] FROM Repository_Redux " & _
"WHERE Repository_Redux.[Counterparty ID] IN (" & strCriteria & ") AND NOT EXISTS (SELECT [Counterparty ID] FROM Netting_Determinations_List WHERE [Counterparty ID] = (" & strCriteria & "))"
【问题讨论】:
-
是的,你可以这样做。编写一个聚合查询,计算与新记录匹配的记录数。如果该计数 > 0,则通知用户。使用 Dlookup 为您完成工作。您不需要 Recordset 对象或任何复杂的东西。
-
我认为你在这里是正确的。虽然没有受过训练,但我想我可以弄清楚。如果您对 SO 点感兴趣,可能希望将您的评论放在答案中,以便我可以投票
-
使用 DCount 后跟一条消息。您甚至可以使用 DCount 返回的结果作为运行或不运行查询的条件。
-
是的,我想是的。如果我这样做,我可能会摆脱上面发布的查询中的第二个 where 条件。