2016-03-07 63 views
0

我有一個窗體,有18個未綁定的文本框拉起值。 他們通常工作90%的時間。有時一個值不會出現,我可以修復它的唯一方法是關閉數據庫並重新打開它。Textbox DLookup值有時會丟失

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 

我希望我能解決什麼原因造成的值不算。

+0

什麼數據類型'totAFP'和'totALLOT'? 'IsError()'用在數字表達式中,但是您將'IIF()'的真實場景設置爲一個字符串。也許這是干擾'IIF()'語句? – MoondogsMaDawg

+0

是的。我希望得到這樣一個答案 - 數據類型是貨幣。所以這是「 - 」。如何獲得與Excel顯示「 - 」代替0的效果相同的效果? – monty327

+0

TextBox'[sfm_COB_DISTR]。[Form]![totAFP]'似乎在子窗體上。如果子窗體包含多條記錄,則這將僅顯示當前記錄的「totAFP」。這是你所期望的嗎? –

回答

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]) 
+0

非常棒。但爲什麼計算能夠工作?它不應該總是犯錯嗎? – monty327

+0

如果'sfm_COB_DISTR'是當前表單中包含的子表單控件的名稱,'totAFP'是該子表單控件中包含的表單中的文本框的名稱,'[sfm_COB_DISTR]![totAFP]'會給你文本框的'.Value' ...你不需要在這兩個對象名稱之間注入'.Form'。 – HansUp

+0

所以我想我們沒有解決其他10%的時間公式給我一個「 - 」沒有理由,要求我重新啓動表格? – monty327