如何在添加记录之前检查表中的现有列?
Posted
技术标签:
【中文标题】如何在添加记录之前检查表中的现有列?【英文标题】:How can I check existing columns in a table before adding a record? 【发布时间】:2021-04-04 09:42:14 【问题描述】:我有一张名为 Visitor 的桌子。它可以接受重复值。我的意思是同一位访客可以多次光顾商店,但每天只能光顾一次。
Visitor_Name | Purchase Price | Date |
---|---|---|
John | 200.00 USD | 15/12/2020 |
Bob | 150.00 USD | 15/12/2020 |
Marshall | 170.00 USD | 16/12/2020 |
我需要添加一张支票。 如果我尝试使用现有日期(2020 年 12 月 15 日)添加 John,则使用弹出消息“访客已在该特定日期访问过商店”阻止记录插入。
这是我目前正在使用的代码。
Private Sub add()
DoCmd.RunSQL "INSERT INTO Visitor([Visitor_Name], [Purchase Price], [Date] VALUES ([Text1].Value, [Text2].Value, [Text3].Value)"
End Sub
在添加记录之前,我需要检查 Visitor_Name 值和 Date 值以及与该特定访问者相关的所有现有值。
【问题讨论】:
***.com/questions/2127698/… 我认为上面的链接与我的情况无关。我的表可以接受重复值。 访客姓名和日期的唯一索引将阻止您询问的条目类型。 【参考方案1】:这可以通过使用DCount来计算表中有多少条目包含Visitor_Name
和Date
,如果不是0则提前退出:
Private Sub add()
If(DCount("Visitor_Name", "Visitor", "Visitor_Name=""" & [Text1].Value & """ AND [Date]=#" & [Text3].Value & "#") <> 0) Then
MsgBox "Visitor already visited the shop in that particular day"
Exit Sub
End If
DoCmd.RunSQL "INSERT INTO Visitor([Visitor_Name], [Purchase Price], [Date] VALUES ([Text1].Value, [Text2].Value, [Text3].Value)"
End Sub
【讨论】:
非常感谢 sbgib。我还有一个问题。如果我也想在条件下检查 purchase_price 那么我应该如何更改代码? 不客气!在DCount
函数中,您将更改第三个参数以包含它:If(DCount("Visitor_Name", "Visitor", "Visitor_Name=""" & [Text1].Value & """ AND [Purchase Price]=" & CStr([Text2].Value) & " AND [Date]=#" & [Text3].Value & "#") <> 0) Then
。将其视为 Access SQL WHERE 条件。
它将数字转换为字符串。这是reference documentation for CStr。
@ZajjithVedha - 这个人很友好地回答了你的问题,你也很友好地接受了它。请不要用后续问题来纠缠他们。如果您有新问题 ask it 单独提出,请在需要时添加指向此问题的链接以获取上下文。以上是关于如何在添加记录之前检查表中的现有列?的主要内容,如果未能解决你的问题,请参考以下文章