Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 创建变量或方法以多种形式使用值_Variables_Ms Access_Vba_Global Variables - Fatal编程技术网

Variables 创建变量或方法以多种形式使用值

Variables 创建变量或方法以多种形式使用值,variables,ms-access,vba,global-variables,Variables,Ms Access,Vba,Global Variables,对VBA来说相当陌生。我在Access中的表单上有一个列表框,其中填充了表中的数据。从列表框中选择一个值会给出一个ID,然后用于执行查询。我需要这个ID可以在另一个表单中使用,以便根据该值执行查询。实现这一目标的最佳方式是什么 `Dim IDValue As String IDValue = Me.lstBoxCompanyName.Value CompDetailSQL = "SELECT * FROM Companies WHERE Companies.CompanyID = " &

对VBA来说相当陌生。我在Access中的表单上有一个列表框,其中填充了表中的数据。从列表框中选择一个值会给出一个ID,然后用于执行查询。我需要这个ID可以在另一个表单中使用,以便根据该值执行查询。实现这一目标的最佳方式是什么

`Dim IDValue As String
IDValue = Me.lstBoxCompanyName.Value
CompDetailSQL = "SELECT * FROM Companies WHERE Companies.CompanyID = " & IDValue`
在模块中

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的情况下,这可能会使用一些错误处理。此外,我还使用了integer,尽管我看到您使用的是字符串。数据类型应与CompanyID的类型相同,因此如果需要,您可以将integer更改为字符串,但您还必须将查询更改为
SELECT*FROM companys.CompanyID='“&getIDValue&”“
,因为您的查询当前暗示了一个数字。

在模块中

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的情况下,这可能会使用一些错误处理。此外,我还使用了integer,尽管我看到您使用的是字符串。数据类型应与CompanyID的类型相同,因此如果需要,您可以将integer更改为字符串,但您还必须将查询更改为
SELECT*FROM companys.CompanyID='“&getIDValue&”“
,因为您的查询当前包含一个数字。

您可以通过指定完整路径来访问其他窗体控件。例如:

Forms!MyFormsName!MyControlsName.Value 

因此,如果要访问VBA中包含在另一个表单中的值,并将其用作查询的一部分,则如下所示:

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

通过指定完整路径,可以访问其他窗体控件。例如:

Forms!MyFormsName!MyControlsName.Value 

因此,如果要访问VBA中包含在另一个表单中的值,并将其用作查询的一部分,则如下所示:

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

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

您可以参考的示例

         dim myAmount as double
         myAmount = form_receipt.total

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

在ms access中,您也可以简单地使用表单_NAMEofFORM.NAMEofCONTROL

您可以参考的示例

         dim myAmount as double
         myAmount = form_receipt.total

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

Dim IDValue As String
将其更改为
Public IDValue As String
,并将其放置在模块中。您只需将ID添加到查询输出中,然后继续引用查询结果即可。或者(我不推荐下一种方法),您可以通过在标准模块顶部而不是在任何子例程中声明公共(全局)变量来创建公共(全局)变量:
public IDValue As String
。然后,您可以像通常一样为公共变量分配一个值,但它将可供所有表单使用。
Dim IDValue As String
将其更改为
public IDValue As String
并将其放置在模块中。您只需将ID添加到查询输出中,然后继续引用查询结果即可。或者(我不推荐下一种方法),您可以通过在标准模块顶部而不是在任何子例程中声明公共(全局)变量来创建公共(全局)变量:
public IDValue As String
。然后你会像平常一样给公共变量赋值,但是所有表单都可以使用它!谢谢你的款待!谢谢