文本框DLookup值有时会丢失

时间:2016-03-07 21:15:01

标签: ms-access access-vba

我有一个包含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

我希望我能解决导致价值无法计算的原因。

1 个答案:

答案 0 :(得分:1)

在以下表达式中,.[Form]部分缺少IIf部分:

<强>错误:

'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])

<强>校正:

'txtAFP_Sum                                                      vvvvvvv
=IIf(IsError([sfm_COB_DISTR].[Form]![totAFP]),"-",[sfm_COB_DISTR].[Form]![totAFP])
'txtALLOT_Sum                                                      vvvvvvv
=IIf(IsError([sfm_COB_DISTR].[Form]![totALLOT]),"-",[sfm_COB_DISTR].[Form]![totALLOT])