使用当前记录字段值创建新记录

Posted

技术标签:

【中文标题】使用当前记录字段值创建新记录【英文标题】:Create new record with current record field value 【发布时间】:2020-03-23 16:59:00 【问题描述】:

我想创建一个按钮来创建新的数据输入记录。但是,新记录中的一个字段将从当前记录的字段中获取一个值。我的尝试——

Option Compare Database

Public FormID As Integer
Private Sub Form_Open(Cancel As Integer)
    DoCmd.GoToRecord , , acNewRec
    FormID = Me.OpenArgs
    RespondentID = FormID
End Sub
Private Sub NextCondition_Click()
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.GoToRecord , , acNewRec
    If Me.NewRecord Then
        Me.RespondentID = FormID
    End If
End Sub

编辑 - 上下文: 有两种相关表格 - 受访者和医疗条件。由于每个受访者在受访者表中应该只有 1 个条目,因此我创建了一个新表 MedicalConditions,允许每个受访者输入多个条目,因为受访者可以有多个 MedicalConditions。我们通过点击 Respondent 表单上的按钮进入 MedicalConditions 表单。所以,我们的 RespondentID 是已知的。实际上,这是通过 OpenArgs 传递的,当打开 medicalConditions 表单时,OpenArgs 会保存到具有公共范围的 FormID 中。由于我们只为特定的受访者输入 MedicalConditions,这应该通过在此会话中输入的每个医疗条件具有相同的 RespondentID 来反映在表中。因此,当输入者单击“输入另一个条件”时,我想创建一个新记录,以便他/她可以填写 MedicalCondition,但是,由于它是针对同一个 Respondent,我希望将 RespondentID 转移到该记录中新纪录。在我当前的实现中,我可以使用 OpenArgs 将 RespondentID 传递到表单中,以便第一个条目具有正确的 RespondentID。但是,我的问题是——当我去添加另一个 MedicalCondition 时,RespondentID 为 0(而不是之前的值)。

【问题讨论】:

FormID 是否在 .openargs 中,或者您是否将其带到变量中,不确定您在问什么? @Nathan_Sav 我已经编辑了我的 OP 以包含更多上下文以(希望)回答您的问题。 如果你用你正在使用的应用程序标记它会有所帮助。我认为它应该是 ms-access,但是... @CindyMeister 我正在使用的应用程序是 Access,但问题并非特定于 Access 您是否已通过代码查看发生了什么? 【参考方案1】:

在你的位置,我会尝试这个,通过 Form_Open() 中的 Me.RespondentID.DefaultValue = CLng(Me.OpenArgs) 为 RespondentID 分配一个默认值,如下所示:

'Public FormID As Integer
Private Sub Form_Open(Cancel As Integer)
    Me.RespondentID.DefaultValue = CLng(Me.OpenArgs)
    DoCmd.GoToRecord , , acNewRec
    'FormID = Me.OpenArgs
End Sub
Private Sub NextCondition_Click()
    DoCmd.RunCommand acCmdSaveRecord
    DoCmd.GoToRecord , , acNewRec
    '
    'If Me.NewRecord Then
    '    Me.RespondentID = FormID
    'End If
    '
End Sub

顺便说一下,所有的 NewRecords 都会有一个由 Access VBA 自动分配的 RespondentID.value,具有相同的 .Value = .DefaultValue。 public var FormID 现在没用了,所以注释掉了。 CLng(Me.OpenArgs) 将字符串转换为 Long。

【讨论】:

以上是关于使用当前记录字段值创建新记录的主要内容,如果未能解决你的问题,请参考以下文章

SQL中哪个字段类别记录日期和哪个字段类别记录时间

access如何字段上一条记录

laravel 观察器 模型绑定 方法的关系

使用组合框中的值编辑从列表框中选择的记录中的字段

使用从 VBA 代码派生的值填充表中的字段

基于当前字段值的MS访问表单组合框行源