【发布时间】:2016-03-08 05:39:22
【问题描述】:
我有一个包含 18 个未绑定文本框的表单,这些文本框可以提取值。 他们通常有 90% 的时间都在工作。有时一个值没有出现,我可以修复它的唯一方法是关闭数据库并再次打开它。
每次记录更改时需要刷新 9 个文本框
这是 9 个卡住的文本框中的 2 个的示例:
'txtAFP_Sum
=IIf(IsError([sfm_COB_DISTR].[Form]![totAFP]),"-",[sfm_COB_DISTR]![totAFP])
'txtALLOT_Sum
=IIf(IsError([sfm_COB_DISTR].[Form]![totALLOT]),"-",[sfm_COB_DISTR]![totALLOT])
其他 7 个有类似的公式。
9 其他未绑定的文本框不需要在每次查看记录时更改,因此为了尝试加快其中一些计算,我编写了一个例程,仅在必要时将 dLookups 分配给未绑定的文本框查看值的变化。
每次我更改需要查看所有框更新的值时,我都会调用以下例程:
Public Sub RefreshTOTALS()
PopUpMsg ("Refreshing Totals...")
With Form_frm_COB
'Entire COB
.txtTOTALS_AFP = DLookup("AFP", "TOTALS_FINAL")
.txtTOTALS_ALLT = DLookup("ALLT", "TOTALS_FINAL")
.txtTOTALS_SP_C = DLookup("SP_C", "TOTALS_FINAL")
.txtTOTALS_SP_O = DLookup("SP_O", "TOTALS_FINAL")
.txtTOTALS_COMMITS = DLookup("COMMITS", "TOTALS_FINAL")
.txtTOTALS_OBS = DLookup("OBS", "TOTALS_FINAL")
.txtTOTALS_COM_SP_RATE = DLookup("COM_SP_RATE", "TOTALS_FINAL")
.txtTOTALS_OBS_SP_RATE = DLookup("OBS_SP_RATE", "TOTALS_FINAL")
.txtTOTALS_UNC = DLookup("UNC", "TOTALS_FINAL")
'Current COB ID
.txtAFP_Sum.Requery
.txtALLOT_Sum.Requery
.txtSP_C.Requery
.txtSP_O.Requery
.txtCOMS.Requery
.txtOBLG.Requery
.txtSPRate.Requery
.txtOBSRate.Requery
.txtWBS_Remain.Requery
End With
End Sub
我希望我能解决导致值无法计算的原因。
【问题讨论】:
-
totAFP和totALLOT是什么数据类型?IsError()用于数值表达式,但您将IIF()的真实场景设置为字符串。也许这会干扰IIF()声明? -
是的。我希望得到那种类型的答案——数据类型是货币。所以它是 "-" 。如何获得与 Excel 在显示“-”代替 0 时相同的效果?
-
TextBox
[sfm_COB_DISTR].[Form]![totAFP]似乎在子表单上。如果子表单包含多条记录,那么这将只显示当前记录的totAFP。这是你所期待的吗? -
没有。 “totAFP”位于 sfm_COB_DISTR 的页脚并包含公式 Sum([AFP])
-
@monty327 取决于您要避免的错误(我假设是
Null?)然后您可以使用IsNull而不是IsError来显示连字符。 @Olivier 发现了一个错误,尽管这更有可能是您遇到问题的原因。 (抱歉,错过了您的其他评论,但我认为您仍然需要致电.Form,就像您之前在IIF声明中所做的那样)