You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

列表框双击打开指定记录表单时运行时错误3075的问题求助

Access运行时错误3075的排查与解决

咱们一步步拆解你遇到的问题,这个错误主要是筛选条件的语法问题加上重复设置筛选导致的,具体来说有这几个坑:

1. 字段类型不匹配引发的语法错误

你现在的代码直接拼接了列表框的列值,但如果fieldname是文本类型的字段,SQL语法要求文本值必须用单引号包裹——比如你现在生成的条件是[fieldname] = abc,这会被数据库当成语法错误;如果是数字类型就没问题,但文本类型必须写成[fieldname] = 'abc'。

另外,如果文本值本身包含单引号(比如O'Neil),直接拼接还会触发新的语法错误,所以最好用Replace函数转义单引号。

2. 新表单的筛选属性重复设置

你在新表单数据选项卡设置了fieldname=,这本身就是一个不完整的筛选条件(等于空?但语法不对),而且会和OpenForm时传递的筛选条件冲突,直接导致数据库解析筛选表达式时出错。

3. 多余的Requery操作

DoCmd.OpenForm加载表单时已经会应用筛选条件并显示对应记录,你紧接着调用Requery不仅多余,还可能在表单未完全加载时破坏筛选逻辑。


修正后的代码(分两种情况)

如果fieldname是数字类型:

Private Sub ListBoxname_DblClick(Cancel As Integer)
    Dim RecordId As Variant
    ' 先判断是否有选中行,避免双击空白区域出错
    If Not IsNull(Me.ListBoxname.Value) Then
        RecordId = Me.ListBoxname.Column(2)
        DoCmd.OpenForm "newformname", acNormal, , "[fieldname] = " & RecordId
    End If
End Sub

如果fieldname是文本类型:

Private Sub ListBoxname_DblClick(Cancel As Integer)
    Dim RecordId As Variant
    If Not IsNull(Me.ListBoxname.Value) Then
        RecordId = Me.ListBoxname.Column(2)
        ' 转义值里的单引号,避免语法错误
        DoCmd.OpenForm "newformname", acNormal, , "[fieldname] = '" & Replace(RecordId, "'", "''") & "'"
    End If
End Sub

后续需要调整的操作

  • 打开新表单的设计视图,找到数据选项卡,把「筛选」属性里的fieldname=清空,彻底移除这个无效的筛选设置。
  • 测试双击列表框行,应该就能正常打开筛选后的表单了。

内容的提问来源于stack exchange,提问作者Mari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:29:53