【问题标题】:Access VBA create new record on doubleclick IF访问 VBA 在双击 IF 时创建新记录
【发布时间】:2021-07-22 02:18:15
【问题描述】:

我目前有一个数据表表单,其中双击记录将打开另一个单一表单到该记录。

目前,从数据表表单中,用户可以通过向新记录行中的任何字段添加信息来创建新记录(即 - 数据表底部带有星号的空白行)。这对现有记录完美无缺,但我遇到用户在将任何数据输入任何新记录行字段之前双击该新记录行的问题。由于没有在任何新记录行字段中输入数据,因此从技术上讲还没有记录(由主键确认,仍然显示“(新)”而不是数字)。因此,在该空白新行中双击会触发我的宏尝试为不存在的记录打开单个表单。

我目前拥有的宏是:

     Private Sub Project_ID_DblClick(Cancel As Integer)
        DoCmd.RefreshRecord
        DoCmd.Save
        DoCmd.OpenForm "F_Project_Detail", , , "ProjectSerialNum = " & Me.ProjectSerialNum
     End Sub

ProjectSerialNum 是主键,它是一个自动编号。我设想的修复是一个 IF 语句,它说如果数据表行中的所有文件都是空白的,那么创建一个由下一个增量 ProjectSerialNum 标识的新记录。这个 IF 语句将出现在我的宏的开头,为后续的“OpenForm”行提供一个 ProjectSerialNum 以进行交叉引用。但我不知道如何写这个,我不确定它是最好的方法。任何帮助将非常感激。谢谢!

【问题讨论】:

    标签: vba ms-access record


    【解决方案1】:

    您无需检查表单当前记录中的每个字段是否都为空,以确定它是否是“新”记录。只需检查表单的 NewRecord 属性即可。1

    当用户双击新记录中的ProjectSerialNum 时,打开第二个表单(F_Project_Detail)而不提供 WhereCondition 选项,然后转到那里的新记录 2,或者以acFormAdd数据模式打开3.

    打开F_Project_Detail 然后转到它的新记录将允许用户导航到现有记录。如果您不想这样做,acFormAdd 数据模式方法将允许他们添加记录但不能访问现有记录。

    Private Sub Project_ID_DblClick(Cancel As Integer)
        If Me.NewRecord = True Then
            DoCmd.OpenForm "F_Project_Detail"
            DoCmd.GoToRecord acDataForm, "F_Project_Detail", acNewRec
            'DoCmd.OpenForm "F_Project_Detail", DataMode:=acFormAdd ' if Add Mode preferred
        Else
            If Me.Dirty Then Me.Dirty = False
            DoCmd.OpenForm "F_Project_Detail", , , "ProjectSerialNum = " & Me.ProjectSerialNum
        End If
    End Sub
    

    文档:

    1. Form.NewRecord property
    2. DoCmd.GoToRecord methodAcRecord enumeration
    3. DoCmd.OpenForm methodAcFormOpenDataMode enumeration

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 1970-01-01
      • 1970-01-01
      • 2014-05-12
      • 1970-01-01
      相关资源
      最近更新 更多