2013-09-27 64 views
0

VBA相當新穎。我在Access中的窗體上有一個列表框,其中填充了表中的數據。從列表框中選擇一個值,然後使用ID來執行查詢。我需要此ID可用於另一種形式來執行基於值的查詢。達到這個目標的最好方法是什麼?創建變量或方法以使用多種形式的值

`Dim IDValue As String 
IDValue = Me.lstBoxCompanyName.Value 
CompDetailSQL = "SELECT * FROM Companies WHERE Companies.CompanyID = " & IDValue` 
+0

Dim IDValue As String將其更改爲Public IDValue As String並將其放置在模塊中。 –

+1

您可以簡單地將ID添加到查詢輸出中,然後繼續引用查詢結果。或者(我不會真正推薦這種方法),你可以通過在標準模塊的頂部聲明它,而不是在任何子例程中創建一個公共(全局)變量:'Public IDValue As String'。然後,您將像通常那樣爲公共變量賦值,但它可供所有表單使用。 – tigeravatar

回答

2

在模塊

Dim IDValue AS Integer 

Sub setIDValue(id As Integer) 
    IDValue = id 
End Sub 

Function getIDValue() As Integer 
    getIDValue = IDValue 
End Function 
從您的任何代碼

'This will set you ID 
setIDValue YOUR_VALUE 
'This will retrieve the value 
getIDValue 
'so your code could be 
setIDValue Me.Me.lstBoxCompanyName.Value 
CompDetailSQL = "SELECT * FROM Companies WHERE Companies.CompanyID = " & getIDValue 

那麼很明顯,這可能使用一些錯誤,沒有IDValue設置事件處理。我也使用了整數,即使我看到您使用的是字符串,數據類型應該與CompanyID的類型相同,因此如果需要,您可以將整數更改爲字符串,但是您還必須將查詢更改爲SELECT * FROM Companies WHERE Companies.CompanyID = '" & getIDValue & "',因爲您的查詢意味着當前的數字。

1

您可以通過指定完整路徑來訪問其他表單控件。例如:

Forms!MyFormsName!MyControlsName.Value 

Forms!frmCustomer!CboCustomer.Column(0) 

所以,如果你想訪問包含在另一種形式在VBA的值,並把它作爲一個查詢它看起來像的一部分:

CompDetailSQL = "SELECT * " & _ 
       "FROM Companies " & _ 
       "WHERE CompanyID = " & Forms!frmCustomer!lstBoxCompanyName.Value 
+0

作品一種享受!謝謝 –

0

在MS Access你也可以簡單地使用form_NAMEofFORM.NAMEofCONTROL

實例可以參考

  dim myAmount as double 
     myAmount = form_receipt.total 

訪問在表單收據文本框總數上顯示的值。

相關問題