【问题标题】:Variable name not accepted in VBA in MS AccessMS Access 中的 VBA 不接受变量名
【发布时间】:2018-03-04 15:48:38
【问题描述】:

我有一个 SQL VBA 查询,用于通过单击按钮更新表单上多个文本框中的值。

查询从表单上的多个标签名称标题中获取输入。所以Label1的标题将被输入TextBox1Label2标题为Textbox2等等。

我正在尝试通过变量将标签名称传递给查询。但是在生成变量b 的值的行返回以下错误:

“Microsoft Access 找不到您的表达式中引用的字段 '&labelname&'。

我的代码如下。我想使用一个变量,以便稍后我可以使它成为一个接受标签名称并返回记录集值的函数。通过这种方式,我将能够避免大约。 150 行代码,因为我必须使用来自相同数量标签的输入更新 20 到 25 个文本框。

Private Sub Command111_Click()
Dim dbs As DAO.Database
Dim rs As DAO.Recordset
Dim ssql As String
Dim labelname As String
Dim b As String
Set dbs = CurrentDb

'---------------------------------------------------------------------------    ----
labelname = "Label24"
b = [Forms]![Bal_Sheet]![& labelname &].Caption
ssql = "select sum(a.[Bal Fwd]) from Trial_Balance a,Act_Master b where a.GBOBJ = b.object and a.GBSUB = b.sub and b.Cat = " & "'" & b & "'"
Debug.Print ssql
Set rs = dbs.OpenRecordset(ssql, dbOpenDynaset)
[Forms]![Bal_Sheet]![Text1].Value = rs(0)
'-------------------------------------------------------------------------------
rs.Close
Set rs = Nothing
dbs.Close
End Sub

【问题讨论】:

    标签: ms-access vba ms-access-2010


    【解决方案1】:

    你的表情:

    b = [Forms]![Bal_Sheet]![& labelname &].Caption
    

    没有连接字符串,因为[Forms][Bal_Sheet] 指的是对象。

    相反,您应该使用:

    b = Forms("Bal_Sheet").Controls(labelname).Caption
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 2016-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多