2011-09-08 55 views
0

有人可以幫助我。 這聽起來很簡單,但我不知道是否可以完成。 的想法是:如果存在的參數比打開該記錄,否則打開一個新的輸入數據。如何根據參數打開一種或另一種形式?

這是我的嘗試,但我甚至無法運行它。

Private Sub Form_Load() 
    If (Me.Type = Act _ 
     and Me.Title <> null _ 
     and section <> null) _ 
     or Me.Type in ('Proposed','Final') 
     and Me.Rule <> null 
    Then 
     Docmd.OpenForm "F_Eval" (but open that specific f_Eval) 

    Else 
     Docmd.OpenForm "F_NewEval" (to enter new record) 
    End If 
End Sub 

回答

0

你的第一個陳述看起來不對我。首先,我懷疑你的意思是「行爲」。嘗試

If (Me.Type = "Act" _ 
    And Me.Title <> Null _ 
    And Me.Section <> Null) _ 
    Or (Instr("Proposed,Final",Me.Type) >0 
    And Me.Rule <> Null) 

我不相信你從你的代碼中剪切和粘貼你的例子,最好這樣做。

2

修改您的空比較。作爲一個例子,從如果條件考慮這件作品:

Me.Title <> null 

什麼都不能是「不等於」空,一樣沒有什麼可以永遠是「等於」空。甚至沒有其他的Null可以等於Null(或不等於Null)。

因此,無論Me.Title是Null還是包含非Null值,該表達式都將返回Null。你想要一個返回True或False的表達式。使用IsNull()函數。

If Not IsNull(Me.Title) Then 
    'do what you want for a non-Null Title here ' 
End If 

爲了您的 「打開特定f_Eval」 的規定,使用與OpenForm Method WhereCondition參數。這是從該鏈接頁面複製的示例。它將打開一個名爲Employees的表單,並將表單的記錄源限制到LastName爲「King」的那些行。

DoCmd.OpenForm "Employees", , ,"LastName = 'King'" 

因此,OpenForm WhereCondition就像查詢中的WHERE子句沒有WHERE字樣。

相關問題