【问题标题】:Access: Modify values in column of datasheet subform访问:修改数据表子表单列中的值
【发布时间】:2018-09-21 03:29:27
【问题描述】:

我有一个包含以下字段的表格:ID、序列号、容量、准确性。

我根据序列号在数据表子表单中显示 1 到 4 条记录。

现在我想显示每个容量

  • 5000kg以上以吨计(除以1000加“t”)
  • 5000kg到0.5kg之间(保持数字加“kg”)
  • 低于 0.5kg(以克计)(乘以 1000 并加上“g”)

但是,我希望表中的所有值都以 kg 为单位。所以我只想在显示它们时更改它。

我尝试的最后一件事是:我添加了一个名为txt_Capaciteit 的额外列,将其用作存储数据的“主”列,然后在一个空列中添加“kg”。但这会将Capaciteit 中的所有列更改为txt_Capaciteit 列中选择的列。

Me.Capaciteit = Me.txt_Capaciteit & " kg"

编辑
我还尝试使用表达式作为控制源。通过使用两个 if 语句,然后相除或相乘,最后添加“t”、“kg”或“g”。即使这样有效,它也会使表单变得非常缓慢和滞后(加载 4 个字段需要 1-2 秒)

谁能告诉我我做错了什么?提前致谢!

【问题讨论】:

  • 这张表有多少条记录?
  • 5000左右,每周都会增加+-10。但正如我所说,我一次最多只能显示 4 个。
  • 这听起来像是 Access 数据宏会有所帮助的东西(向您的表添加一个新字段,例如 CapacityAdjusted,如 Short Text。然后,有一个 After Update 和 @ 987654328@ 使用您描述的逻辑更新此字段的宏。不幸的是,我对 Access 数据宏不够熟悉,无法提供完整的答案(太糟糕了,您没有使用 SQL Server 作为后端 --- 我可能是那里有更多帮助)。
  • 当你的表达变慢时,你把你的表达放在哪里,在底层查询中还是在表单上?在查询中尝试它通常会执行得更快。如果这不起作用,您可以使用一个表来存储文本和一个乘数,并将它们与查询中的连接一起应用。
  • @Minty 我把它放在表单中,因为我不知道如何在选择查询中实现它...

标签: ms-access vba


【解决方案1】:

创建一个这样的函数:

Public Function FormatWeight(ByVal Value As Currency) As String

    Dim Result  As String

    Select Case Value
        Case Is < 0.5
            Result = Format(Value * 1000, "0 \g")
        Case Is < 5000
            Result = Format(Value, "0.00 \k\g")
        Case Else
            Result = Format(Value / 1000, "0.000 \t")
    End Select

    FormatWeight = Result

End Function

然后,要在表单中显示以千克为单位的重量,请将此 ControlSource 用于文本框:

=FormatWeight([YourWeigthField])

【讨论】:

  • 感谢您的回答。这行得通。但是它的响应速度仍然很慢。您还有其他想法吗?
  • 作为快速解决方案,我现在将两个值添加到表中,以 kg 为单位,并在两个额外的列中添加格式。它不像打开时那样干净,但现在可以使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
  • 2017-08-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多