如何解决Microsoft Access VBA 将数据从表单添加到表未绑定表单
如何使用代码生成的数据和用户输入将记录添加到 deploymentStep 表和 deploymentPlan 表中?
我有如下表格
PillarTeamDeploymentSteps
pillarTeam | pillarTeamStep | 其他信息 |
---|---|---|
第一队 | 第一步 | |
第一队 | 第 2 步 | |
第一队 | 第三步 | |
第一队 | 第 4 步 | |
第二队 | 第一步 | |
第二队 | 第 2 步 | |
第二队 | 第三步 | |
第二队 | 第 4 步 | |
第二队 | 步骤 5 | |
第二队 | 步骤 6 |
与结构表
部署步骤
pillarTeam | pillarTeamStep | 部署 | endDate |
---|---|---|---|
部署计划
pillarTeam | 部署 | startDate | endDate |
---|---|---|---|
使用表单,我希望用户能够选择他们的团队,并使用相应的 pillarTeamSteps 自动填充文本字段。这可以在屏幕截图中看到。
在用户选择团队并自动填充步骤后,他们将在日期框中手动输入数据。从这里我想按一下按钮来添加记录。我正在使用以下代码更新表单可见字段和值。每个团队最多只能走十步。
如何使用代码生成的数据和用户输入将记录添加到 deploymentStep 表和 deploymentPlan 表中?
Private Sub pillarTeam_AfterUpdate()
Dim db As DAO.Database
Dim RS As DAO.Recordset
Dim deploymentSteps As DAO.Recordset
Set db = CurrentDb
strSQL = "SELECT PillarTeamDeploymentSteps.pillarTeam,PillarTeamDeploymentSteps.pillarTeamStep,PillarTeamDeploymentSteps.deploymentType FROM PillarTeamDeploymentSteps WHERE (((PillarTeamDeploymentSteps.pillarTeam)=" & Me.pillarTeam & "))"
Debug.Print (strSQL)
Set RS = db.OpenRecordset(strSQL)
If Not (RS.EOF) Then
RS.MoveLast
RS.MoveFirst
End If
'setting visible controls
Dim ctl As Control
For Each ctl In Me.Controls
If ctl.Tag < RS.RecordCount + 1 Or (ctl.Tag < RS.RecordCount + 21 And ctl.Tag >= 20) Then
ctl.Visible = True
Else
ctl.Visible = False
End If
Next ctl
With RS
If Not .BOF And Not .EOF Then
.MoveLast
.MoveFirst
While (Not .EOF)
Debug.Print (RS.AbsolutePosition)
'populating deployment steps
For Each ctl In Me.Controls
If ctl.Tag = RS.AbsolutePosition Then
ctl.Value = RS.Fields("pillarTeamStep")
End If
Next ctl
.MoveNext
Wend
End If
.Close
End With
Set RS = Nothing
Set db = Nothing
解决方法
建议将表单绑定到 deploymentPlan,并将子表单绑定到 deploymentStep。
要“批量”创建记录,请使用 INSERT SELECT 操作 SQL。
CurrentDb.Execute "INSERT INTO deploymentStep(pillarTeam,pillarTeamStep,deployment) " & _
"SELECT " & Me.tbxTeam & " AS T," & Me.tbxDeploymentID & " AS D " & _
"FROM PillarTeamDeploymentSteps " & _
"WHERE pillarTeam=" & Me.tbxTeam
这假设 pillarTeam 和 deployment 是数字标识符,例如 Autonumber 类型。如果不是,则使用撇号分隔符。
这里的技巧是首先保存“父”部署计划记录并获取该记录标识符以在部署步骤中保存为外键。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。