【问题标题】:Access Table updating another Access Table based on variable fields访问表根据变量字段更新另一个访问表
【发布时间】:2014-09-08 19:40:06
【问题描述】:

我认为我的第一次提交可能有点混乱,所以我决定重写它以更好地解释我正在尝试做的事情。

我有一个 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 时在代码中按名称专门调用每个变量。换句话说,无论我在组合框的主列表中添加了多少其他选项,我都希望它能够正常工作,而无需返回添加更多项目来选择查询。

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

【问题讨论】:

  • 这是一个访问数据库吗?您上面的代码使用的 VBA 比 SQL 多。您可能需要调整标签以吸引合适的专家。
  • 对不起,因为我是这种东西的新手,所以我几乎没有使用任何标签的声誉。我一直在尝试相关的事情,但大多数都是不允许的。

标签: ms-access vba dao


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-05
    • 2015-07-19
    • 1970-01-01
    相关资源
    最近更新 更多