运行时错误 2185
Posted
技术标签:
【中文标题】运行时错误 2185【英文标题】:Run time error 2185 【发布时间】:2013-12-20 12:17:38 【问题描述】:我收到run time error 2185
,“除非控件具有焦点,否则您不能引用控件的属性或方法...”。
这是我正在使用的代码。
Private Sub Command5_Click()
Dim cardno As Integer
cardno = cardnumber.Text
DoCmd.OpenForm "search_card_number", acNormal, , WHERE & cardno = [Account Number]
End Sub
【问题讨论】:
【参考方案1】:引用控件的.Text
属性要求它具有焦点。
只需删除它,它应该可以工作(默认为.Value
)
或
尝试按照 Access 的建议放入 SetFocus 方法,即
Private Sub Command5_Click()
Dim cardno As Integer
cardnumber.SetFocus <-------Use this line to set the focus
cardno = cardnumber.Text
DoCmd.OpenForm "search_card_number", acNormal, , WHERE & cardno = [Account Number]
End Sub
【讨论】:
我得到一个运行时错误 6,溢出。但 carnumber.text 确实得到了我在文本框中输入的值 我猜数据不能再被整数保存了。尝试将行Dim cardno As Integer
更改为 Dim cardno As Long
应该可以解决眼前的问题。
我收到 2465 运行时错误,并以黄色突出显示 Docmd 部分。【参考方案2】:
那个运行时错误意味着You can't reference a property or method for a control unless the control has the focus.
当控件获得焦点时,您可以使用.Text
。
【讨论】:
如果我将文本更改为文本框,我会得到一个未找到的数据和方法成员 使用cardno = cardnumber
而不是cardno = cardnumber.Text
【参考方案3】:
我的解决方案是在更新控件属性之前测试控件是否有焦点,
这里我将组合框搜索更新为通配符搜索
Private Sub Combo_Change()
'Note control passed to after update sub, then returns to change sub where error occurs
'Combo is the name of your combo box
If (Combo Is Me.ActiveControl) Then
Me.Combo.RowSource = _
"SELECT [CCL sites v Contract No].ContractID, [CCL Sites].[Site Address], [CCL sites v Contract No].[Contract No] " & _
"FROM [CCL sites v Contract No] INNER JOIN [CCL Sites] ON [CCL sites v Contract No].SiteID = [CCL Sites].SiteID " & _
"WHERE [CCL Sites].[Site Address] LIKE '*" & Me.Combo.Text & "*' " & _
"ORDER BY [CCL Sites].[Site Address]"
Me.Combo.Dropdown
End If
End Sub
【讨论】:
以上是关于运行时错误 2185的主要内容,如果未能解决你的问题,请参考以下文章
如图写了批处理文件,可是点击运行的时候,提示:请键入NET HELPMSG 2185以获得更多帮助