【问题标题】:Check if record exists before submitting new在提交新记录之前检查记录是否存在
【发布时间】:2015-03-24 22:57:13
【问题描述】:

我目前有一个在 Access 2010 中使用 SQL 语句将记录插入表的函数。

Sub btnSubmit_Click()

dim strSQL as string

strSQL="INSERT INTO tblMaster (PeriodID,ClassID,ChildID,SubjectID,LevelID) VALUES (" & cboPeriod & "," & cboClass & "," & cboName & "," & tbSubject1 & "," & cboLevel1 & ")"

CurrentDB.Execute strSQL
End Sub

我首先要做的是检查'tblMaster'是否已经有相同的记录。

我将如何实现这一目标?

【问题讨论】:

    标签: sql ms-access vba


    【解决方案1】:

    我原以为在最坏的情况下只会有几个唯一标识符;以下应该工作。

    Sub btnSubmit_Click()
        Dim strSQL as string
    
        strSQL = "INSERT INTO tblMaster (PeriodID, ClassID, ChildID, SubjectID, LevelID) VALUES (" & _
                    cboPeriod & ", " & cboClass & ", " & cboName & ", " & tbSubject1 & ", " & cboLevel1 & ")"
    
        If DCount("*", "tblMaster", "PeriodID = " & cboPeriod & " AND " & _
                                    "ClassID = " & cboClass & " AND " & _
                                    "ChildID = " & cboName & " AND " & _
                                    "SubjectID = " & tbSubject1 & " AND " & _
                                    "LevelID = " & cboLevel1) = 0 Then
            CurrentDB.Execute strSQL
        Else
            MsgBox "A Record already exists for this information.", vbOKOnly, "No Records Added."
        End If
    End Sub
    

    【讨论】:

    • 这很好,而且效果很好,但是,如果我想检查然后同时插入两行或更多行怎么办?有没有一种干净的方法来编写代码或只是大量的复制和粘贴?
    • 取决于你所说的干净。解释场景
    • 我有一个带有 3 个组合框的表单,用于过滤掉特定的瞳孔。然后有 17 个科目旁边有组合框,允许用户选择该特定学生在该科目中达到的水平。每行旁边都有一个按钮,允许用户使用上面的代码提交不存在的记录。我想要的是一个同时提交的按钮。我已经有了执行 17 个插入 Sql 命令的按钮,但它还没有检查记录是否已经存在
    • 听起来有很多设计问题。您是否考虑过规范化您的表格以确保这不需要太多代码来处理?
    • 对不起,这对我来说是全新的。我会阅读“规范化表格”
    【解决方案2】:

    您可以使用另一个 select 语句检查该记录是否存在。

    【讨论】:

      猜你喜欢
      • 2012-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多