0

VBA 相当新。我在 Access 中的表单上有一个列表框,其中填充了表中的数据。从列表框中选择一个值会给出 ID,然后用于执行查询。我需要此 ID 可用于以另一种形式使用,以执行基于值的查询。实现这一目标的最佳方法是什么?

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

3 回答 3

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 & "'因为您的查询当前暗示了一个数字。

于 2013-09-27T16:23:50.537 回答
1

您可以通过指定完整路径来访问其他表单控件。例子 :

Forms!MyFormsName!MyControlsName.Value 

Forms!frmCustomer!CboCustomer.Column(0)

因此,如果您想访问 VBA 中包含在另一种形式中的值并将其用作查询的一部分,它看起来像:

CompDetailSQL = "SELECT * " & _
                "FROM Companies " & _
                "WHERE CompanyID = " & Forms!frmCustomer!lstBoxCompanyName.Value
于 2013-09-27T17:17:55.783 回答
0

在 ms Access 中,您也可以简单地使用 form_NAMEofFORM.NAMEofCONTROL

可以参考的例子

         dim myAmount as double
         myAmount = form_receipt.total

访问表单收据文本框总计上显示的值。

于 2014-08-29T08:11:38.903 回答