使用当前记录字段值创建新记录
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。
【讨论】:
以上是关于使用当前记录字段值创建新记录的主要内容,如果未能解决你的问题,请参考以下文章