簡體   English   中英

如何在Access表單中解決VBA的運行時錯誤“ 3265”?

[英]How do I address run-time error '3265' with VBA in my Access form?

在查看以下兩個帖子后,我遇到了這個問題:

顯示帶有參數作為子窗體源對象的交叉表查詢

如何在MS Access中通過VBA填充文本框

TableA(交叉表轉換之前的銷售數據):

Row_ID | Year  |  CustomerID | Product |  Location

  001     2011      A00001     Muffin     GroceryStore
  002     2011      A00002     Muffin     Supermarket
  003     2012      A00001     Muffin     GasStation
  004     2012      A00002     CandyBar   GroceryStore
  005     2012      A00002     Muffin     GasStation

目前,我有一個訪問表單,如下所示:

訪問表格

在我的表單中,我希望用戶能夠選擇“年份”和“位置”值。 一旦他們這樣做,我希望他們在“位置”組合框(“松餅計數”控件)下方的控件中查看在該特定位置出售的松餅數量。

我已經為“位置”控件的OnClick事件編寫了VBA(請參見下文)。 它不僅會生成可轉換原始表('TableA')的交叉表查詢,而且還會從新交叉表的'Muffins'列中獲取值並將其放在'Muffin Count'控件中:

到目前為止,我有VBA:

Private Sub cboChoice_1_Click()

Dim SQL As String
Dim db As Database
Dim rs As DAO.Recordset

SQL = "TRANSFORM Count(TableA.CustomerID) AS CountOfCustomers " _
& "SELECT TableA.Year, TableA.Location FROM TableA " _
& "WHERE TableA.Product='Muffin' " _
& "AND TableA.Year='" & Me.cboChoice_1.Value & "' " _
& "AND TableA.Location='" & Me.cboChoice_2.Value & "' " _
& "GROUP BY TableA.Year, TableA.Location PIVOT TablaA.Product;"
Set db = CurrentDb
Set rs = db.OpenRecordset(SQL)


Me.txt_Muffin_Count.Value = rs!Muffins

End Sub

挑戰:

該模式適用,除非我選擇了Year-Location組合,且該組合的值應為Null(這意味着在該特定年份中該特定位置沒有出售松餅)。

這些事件(預計Muffin計數為Null)也會生成“在此集合中找不到運行時錯誤'3265'錯誤項目”。

我想找到一種方法(如果可能的話)讓我的VBA處理這些空實例。 我的最終目標是在選擇生成Null值的Year-Location時擺脫“運行時錯誤'3265'...”消息。

理想情況下,我也希望VBA在發生這種情況時,也可以在“松餅計數”文本框控件中簡單地插入“無記錄”文本。

在此示例中,我檢查了查詢是否有任何結果。 如果有結果,則像以前一樣設置松餅的數量。 如果查詢沒有結果,則將松餅的數量設置為0。這將避免在沒有結果的情況下出現錯誤。

if not rs.EOF
   Me.txt_Muffin_Count.Value = rs!Muffins
else
   Me.txt_Muffin_Count.Value = 0
end if

您無需為此進行轉換或創建查詢。 只需向組合框的OnChange事件中添加一些代碼,檢查兩個組合框是否都具有有效值即可。 如果是這樣,請像這樣填寫txt_Muffin_Count:

Me.txt_Muffin_Count = _
    DCount("RowID","TableA","Product = 'Muffin' " & _
                            "AND Year='" & Me.cboChoice_1.Value & "' " & _
                            "AND Location = '" & Me.cboChoice_1.Value & "'")

對於“無銷售”,這將返回0而不是NULL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM