Ms access 访问表基于变量字段更新另一个访问表

Ms access 访问表基于变量字段更新另一个访问表,ms-access,vba,dao,Ms Access,Vba,Dao,我认为我的第一次提交可能有点混乱,所以我决定重写它,以更好地解释我试图做什么 我有一个Access数据库。其中有两个组合框,一个包含我正在处理的所有可能的年金形式,另一个组合框是用户填充的应用于特定客户机的组合框。此主列表由tblPickAnnuityForms表提供。此表有3个字段,Name、VarName。这些值与另一个表匹配,根据用户是否选择,Deleted为1或0。我还有第二个表名为tblPlanSpecs。除其他字段外,此表中的字段与第一个表中的VarName字段匹配 由于tblPic

我认为我的第一次提交可能有点混乱,所以我决定重写它,以更好地解释我试图做什么

我有一个Access数据库。其中有两个组合框,一个包含我正在处理的所有可能的年金形式,另一个组合框是用户填充的应用于特定客户机的组合框。此主列表由tblPickAnnuityForms表提供。此表有3个字段,Name、VarName。这些值与另一个表匹配,根据用户是否选择,Deleted为1或0。我还有第二个表名为tblPlanSpecs。除其他字段外,此表中的字段与第一个表中的VarName字段匹配

由于tblPickAnnuityForms基本上是一个临时表,并且在记录客户机之间移动时会发生变化,因此我需要做的是,在根据tblPlanSpecs中的值转到该记录时重新填充它。基于此记录客户端的先前选择填充tblPickAnnuityForms后,将重新查询两个组合框以显示正确的值,即左框显示剩余的未使用年金表单,右框显示适用于此客户端的表单

下面是我的尝试

Dim db As DAO.Database
Dim rsList As DAO.Recordset
Dim rsData As DAO.Recordset
Dim CurrForm As String
Dim FormVal As Integer
Dim Plan As String

Set db = CurrentDb
Set rsList = db.OpenRecordset("tblPickAnnuityForms", dbOpenSnapshot)    

Plan = [Forms]![FrmHome]![PlanNameCalc].Value

Set rsData = db.OpenRecordset("SELECT tblPlanSpecs.LifeAnnuity, tblPlanSpecs.FiveCC, tblPlanSpecs.TenCC, " _
    & "tblPlanSpecs.FifteenCC, tblPlanSpecs.TwentyCC, tblPlanSpecs.FiveCertain, tblPlanSpecs.TenCertain, " _
    & "tblPlanSpecs.FifteenCertain, tblPlanSpecs.TwentyCertain, tblPlanSpecs.FiftyJS, tblPlanSpecs.SixtySixJS, " _
    & "tblPlanSpecs.SeventyFiveJS, tblPlanSpecs.HundredJS, tblPlanSpecs.MCR FROM tblPlanSpecs " _
    & "WHERE tblPlanSpecs.PlanName='" & Plan & "'")

Do

    CurrForm = rsList.Fields("VarName")
    FormVal = rsData.Fields(CurrForm)

    DoCmd.RunSQL ("UPDATE tblPickAnnuityForms " _
        & "SET tblPickAnnuityForms.Deleted=" & rsData! & FormVal & " " _
        & "WHERE (((tblPickAnnuityForms.VarName)='" & CurrForm & "'))")

    MsgBox (CurrForm & "changed to " & FormVal)

    rsList.MoveNext

Loop Until rsList.EOF

If Not rsList Is Nothing Then
    rsList.CLOSE
    Set rsList = Nothing
End If
如果有更好的解决办法,也许我可以走另一条路。目前,这是轰炸在循环中,它说rsData!&FormVal不喜欢使用变量调用字段。理想情况下,我希望在填充rsData时避免在代码中按名称专门调用每个变量。换句话说,无论我向组合框的主列表中添加了多少其他选项,我都希望它能够工作,而无需返回以添加更多项来选择查询


如果我不清楚我的预期方向或方法,请告诉我。我真的需要帮助找出问题所在。

看来我解决了自己的问题。我脑子里有太多的想法,我只执行了一半就忘了。变量FormVal已经从rsData中提取了我需要的值。然后,我尝试使用FormVal作为字段变量再次提取该值。无论如何,下面是简单的解决方案,现在一切都正常了

DoCmd.RunSQL ("UPDATE tblPickAnnuityForms " _
    & "SET tblPickAnnuityForms.Deleted=" & FormVal & " " _
    & "WHERE (((tblPickAnnuityForms.VarName)='" & CurrForm & "'))")

换句话说,我不需要做rsData![&FormVal&]我确信这是不正确的语法,我只需要单独使用FormVal。

这是access数据库吗?上面的代码使用的VBA多于SQL。你可能想调整你的标签来吸引合适的专家。很抱歉,因为我对这类事情还不熟悉,我几乎没有使用任何标签的名声。我一直在尝试相关的事情,但大多数都是不允许的。