Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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
Vba 以编程方式设置文本框值,但返回运行时错误438_Vba_Ms Access - Fatal编程技术网

Vba 以编程方式设置文本框值,但返回运行时错误438

Vba 以编程方式设置文本框值,但返回运行时错误438,vba,ms-access,Vba,Ms Access,我试图根据我在组合框中选择的值和另一个文本框中预先存在的值来设置文本框的值。这两个控件都位于表单中的连续子表单中。当我在组合框中选择一个值时,我得到以下结果: Run-time error '438': Object doesn't support this property or method 我的代码如下所示: Private Sub Combo1_Dirty(Cancel As Integer) Dim con As ADODB.Connection Set co

我试图根据我在组合框中选择的值和另一个文本框中预先存在的值来设置文本框的值。这两个控件都位于表单中的连续子表单中。当我在组合框中选择一个值时,我得到以下结果:

Run-time error '438':

Object doesn't support this property or method
我的代码如下所示:

Private Sub Combo1_Dirty(Cancel As Integer)

    Dim con As ADODB.Connection

     Set con = Application.CurrentProject.Connection

    Dim rs As ADODB.Recordset

    Set rs = New ADODB.Recordset

    ssql = "(SELECT TABLE1.DESCRIPTION As d1 " & _
"FROM TABLE1 " & _
"INNER JOIN TABLE2 ON " & _
"(TABLE1.CATEGORY = TABLE2.CATEGORY) " & _
"AND (TABLE1.LEVEL = TABLE2.LEVEL) " & _
"WHERE " & _
"(((TABLE1.LEVEL)= " & [Forms]![MainForm].[Subform].[Combo1] & ") " & _
"AND ((TABLE2.CATEGORY)= '" & [Forms]![MainForm].[Subform].[CATEGORY] & "'));)"

    rs.Open ssql, con

    Do Until rs.EOF = True

       [Forms]![MainForm].[Subform].TextBox1.SetFocus

       [Forms]![MainForm].[Subform].TextBox1.Text = rs.Fields!d1

       rs.MoveNext

    Loop

End Sub

我在网上搜索了很多次,不太清楚自己做错了什么。非常感谢您的帮助。谢谢

尝试引用[表单]![MainForm].[Subform].Form.TextBox1


[Subform]指的是Mainform上的对象。您需要使用表单限定它,以引用其中的对象。

我更改了所有控件实例,以使用附加的“表单”限定符。现在我得到了以下错误:运行时错误“-2147217904 80040e10”:没有为一个或多个必需的参数提供值。当我运行调试器时,它会突出显示以下代码行:rs.Open ssql,conok,这是因为我在SQL中的数据元素名称中引入了输入错误。现在,我没有收到任何错误消息。但是Combo1实际上不会更改为我选择的任何值,代码也不会更改TextBox1中的值。我在组合框中选择一个值,什么都不会发生。好奇的人,好奇的人,好了,我几乎把它弄好了。一个关键是保存Combo1的OnDirty记录,然后在更新后执行更新TextBox1的代码。一切正常,除了每次更改Combo1中的值时都会收到以下错误消息:运行时错误“2115”:为此字段设置为BeforeUpdate或ValidationRule属性的宏或函数正在阻止数据库将数据保存在字段中。我必须打开这个问题的问题已经解决了,所以我将关闭这个,并将这个新错误作为一个新问题发布。谢谢你的帮助。