首页 > 解决方案 > MS Access 提供#Name?在某些情况下 SQL SP Fed 表单上的错误

问题描述

我有一系列我正在调用的 SP 来填充我的 Access 表单。这些都是沿着相同的代码行调用的,很典型:

Public Sub cssLoadAllJobs(lngCID As Long, frm As Form)
    'See methods and notes under cssLoadClient
    Dim rst As New ADODB.Recordset

    With rst
       Set .ActiveConnection = gcn
       .Source = "EXEC mysp_ActiveJobsForClient " & Nz(lngCID) 'Runs sp with parameter
       .LockType = adLockOptimistic
       .CursorType = adOpenKeyset
       .Open
    End With

    Set frm.Recordset = rst

    Set rst = Nothing
End Sub

这些都工作正常,没有问题。

然而,在我的主窗体上,我正在连续加载其中的几个,例如客户端、站点和作业。

对于工作,我有两个不同的 SP。一个由客户端过滤,然后由站点过滤,然后由该站点上的设备过滤。另一个仅由客户端过滤。

发生的事情是,如果我将带有大量过滤器的那个加​​载到主窗体中,则主窗体可以正常工作。但是,如果我加载仅由 CLient 过滤的作业,则主表单将抛出#Name?所有客户端记录字段,并且作业子表单字段也全部发送到#Name?.

认为这应该很容易诊断,我注释掉了加载 Job 子表单的行,一切都很好。如果我随后为完整过滤的子表单添加代码,那么主表单可以正常工作。

不要被打败,毕竟这一定是一个简单的错误,我复制了作业子表单并加载了唯一由客户端过滤的子表单,它显示了准确的记录没有问题。

尝试使这一点更清楚:

我想一个简单的测试是创建一个新的子表单并交换它们但是......为什么?

标签: sql-servervbams-accessms-access-forms

解决方案


推荐阅读