簡體   English   中英

訪問編譯錯誤:參數不是可選的

[英]Access Compile Error: Argument not Optional

我有一個訪問數據庫,這類似於我之前問過的一個問題,有一個下拉菜單和一個子表單。 我希望能夠從下拉列表中選擇一個選項,並讓它在下面的子窗體中打開相應的子窗體。 這是我的代碼...

Option Compare Database
Option Explicit

Private Sub btnCloseHRForms_Click()
  DoCmd.Close

End Sub

Private Sub cmbSelectFrms_AfterUpdate()
Select Case selectSubform
  Case 1
    Forms!frm_HRForms!subformHRForms.Form!subform1.Visible = True
  Case 2
    Forms!frm_HRForms!subformHRForms.Form!subform2.Visible = True
  Case 3
    Forms!frm_HRForms!subformHRForms.Form!subform3.Visible = True
End Select
End Sub

Private Sub Form_Load()
Dim dba As Database
Dim rst As Recordset
Dim SQL As String

Set dba = CurrentDb
Set rst = dba.OpenRecordset("tbl_Forms", dbOpenDynaset, dbSeeChanges)
SQL = "SELECT ListName FROM tbl_Forms"
Set rst = dba.OpenRecordset(SQL, dbOpenDynaset, dbSeeChanges)

Set rst = Nothing
Set dba = Nothing
End Sub

Function selectSubform(ID)
Dim dbacurrent As Database
Dim rstcurrent As Recordset
Dim SQL As String

Set dbacurrent = CurrentDb
SQL = "SELECT * FROM tbl_Forms WHERE ID = " & ID
Set rstcurrent = dbacurrent.OpenRecordset(SQL, dbOpenDynaset, dbSeeChanges)
selectSubform = rstcurrent.Fields("ID")

Set dbacurrent = Nothing
Set rstcurrent = Nothing

End Function

有什么建議么? 剛接觸 VBA

您的函數 selectSubform(ID) 需要傳遞一個 ID 參數,而您沒有傳遞一個。 定義函數時:

Function selectSubform(ID)
    ' ... Do some stuff
    selectSubform = SomeValue
End Function

您告訴編譯器需要一個名為 ID 的參數。

順便說一句,我強烈建議您在每個代碼模塊的頂部放置一個 Option Explicit 語句,並在編輯器中打開 Option Explicit 選項。 這將要求您指明數據類型。 目前,我們不知道期望什么數據類型作為 ID 參數,也不知道您的函數返回什么數據類型(盡管在您的 Select Case 語句中作為一個明顯的整數使用暗示了這一點)。 做出一些假設,我會嘗試以下更改(我現在無法測試,也無法與您的其余代碼交談)。

我在這里假設組合框中的選擇是相應子表單的 ID。 如果沒有,您可能需要向我們說明 ID 參數的來源):

Private Sub cmbSelectFrms_AfterUpdate()
    Select Case selectSubform(Me.cmbSelectForms)
        Case 1
            Forms!frm_HRForms!subformHRForms.Form!subform1.Visible = True
        Case 2
            Forms!frm_HRForms!subformHRForms.Form!subform2.Visible = True
        Case 3
            Forms!frm_HRForms!subformHRForms.Form!subform3.Visible = True
    End Select
End Sub 

這里可能還隱藏着其他問題。 但是,將 VBA IDE 設置為需要顯式變量聲明並向每個代碼模塊添加 Option Explicit 將大大有助於您識別問題。

暫無
暫無

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

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