vba
  • ms-access
  • ms-access-2010
  • 2013-06-27 63 views 3 likes 
    3

    我想查詢到一個文本框的結果聯繫起來,但我得到這個錯誤:這裏是我的代碼:運行時錯誤3021-沒有當前記錄

    Dim rst As DAO.Recordset 
    Set rst = CurrentDb.OpenRecordset("SELECT XValue, YValue,Wert FROM tb_DCM_Daten WHERE (FzgID=" & Forms!frm_fahrzeug!ID & " AND Name='" & List2.Value & "')") 
    Text10.Text = rst!XValue //error in this line 
    

    應該回報CA 20記錄

    爲什麼我得到這個錯誤,我該如何解決?

    +3

    重新安排你的代碼,以便您的SQL語句是一個字符串變量,並將其打印到直接窗口中。這樣你會看到它是否有什麼問題。如果沒有什麼明顯的,那就是輸出SQL並將其放入查詢中,並驗證是否有符合條件的記錄。 – GregHNZ

    回答

    6

    一個可能的原因的錯誤是Name是在Access中保留字,所以你應該使用

    ... & " AND [Name]='" & ... 
    

    你也可以嘗試使用rst!XValue之前測試rst.EOF。也就是說,以驗證您的查詢是否已返回至少一個行可以在.OpenRecordset調用後立即添加代碼

    If rst.EOF Then 
        MsgBox "The Recordset is empty." 
    End If 
    

    。如果記錄集爲空,那麼您需要驗證您的SQL語句,如上面的註釋中@GregHNZ所述。

    +0

    謝謝你的回答。我做到了,但它沒有幫助:/ – Kaja

    +1

    @Kaja我已經更新了我的答案。 –

    1

    通常,我會這樣做。在Access中創建一個新的查詢,切換到SQL視圖,在那裏粘貼我的代碼並轉到設計>>運行。

    SELECT XValue, YValue,Wert FROM [tb_DCM_Daten] WHERE [FzgID]=12 AND [Name]='ABC'; 
    

    如果您的查詢語法正確,您應該看到結果,否則錯誤mssg會告訴您錯在哪裏。我曾經調試過一個比你更復雜的查詢,這就是我所做的。 如果仍然有錯誤,也許你應該嘗試

    Dim sql as String 
    sql = "SELECT...." 
    Set rst = CurrentDb.OpenRecordset(sql) 
    

    另一個可能的原因可能是你的表名。我只是想知道你的表名是什麼?如果你的表格包含空格,你應該像這樣[DCM Daten]。

    1

    還有一兩件事我想補充一點,可能會導致這,是你返回設置了一個「保留字」領域,例如結果集:

    你的「客戶」表中有字段名稱如下所示:

    Custnum | Date | Custname 
    

    我們知道日期場是大多數數據庫

    這樣的保留字,當你使用獲得的記錄

    SELECT * FROM Customers 
    

    這將可能返回「沒有當前記錄」,這樣反而選擇了該表的所有領域,只是減少你的領域的選擇是這樣的:

    SELECT custnum, custname FROM Customers 
    
    相關問題