2013-07-09 59 views
0

我正在使用VBA打開表單。如果這個問題很重要的話,那麼這個表單就有一個針對記錄源的交叉表查詢。 我想MS Access VBA DoCmd.OpenForm WhereCondition失敗且未找到字段錯誤

DoCmd.OpenForm Form_frmMyForm.Name, , , "ID = 7" 

(最終我將取代「= 7」的東西更有用這只是用於測試。)

,但我得到一個錯誤,當它到達該行:

Run-time error '3070": 
The Microsoft Access database engine does not recognize 'ID' as a valid field name or expression. 

我已經肯定地確認字段'ID'在我的交叉表查詢中。事實上,我在幾個控件中使用該字段沒有問題。

我也試過

Form_frmMyForm.Recordset.FindFirst "ID = 7" 
MsgBox (Form_frmMyForm.Recordset.NoMatch) 

,它顯示了「假」,表明存在一個匹配,但是,形式不進該記錄。

任何想法我可能會失蹤?

回答

0

嘗試改變:

Form_frmMyForm.Recordset.FindFirst "ID = 7" 

Form_frmMyForm.Recordset.FindFirst "[ID] = 7" 

您從一個記錄引用字段時需要這些方括號。然後使用一個變量可以這樣做:

Form_frmMyForm.Recordset.FindFirst ("[ID] = " & Me.Whatever & "") 

UPDATE:

DoCmd.OpenForm Form_frmMyForm.Name, , , Form_frmMyForm.Recordset.FindFirst "[ID] = 7" 
+0

這似乎與findfirst方法一起工作,謝謝。我會標記爲已回答。但是,它不適用於doCmd.OpenForm方法。任何想法爲什麼?謝謝! – MrGibbage

0

是ID底層數據或由所述交叉表產生一個列?

我想知道在生成交叉表列之前是否應用了條件,以便當它開始獲取數據(並嘗試應用條件)時,它不會看到ID列,因爲它尚未創建。

+0

它是底層數據。實際上,字段名更像table1.id。我認爲我已經嘗試了以下@TKEyi60中提到的每個方括號組合,但最終工作(在findfirst方法中)是[table1] .ID = 7。但它在DoCmd.OpenForm where條件中不起作用。我只是得到一個錯誤,該字段未找到。 – MrGibbage

+0

嘗試將其從Where參數移動到過濾器之一(我之前立即作爲參數的東西) – Rikalous