【问题标题】:MS Access setting RecordSource results in errorMS Access 设置 RecordSource 导致错误
【发布时间】:2018-12-27 10:34:37
【问题描述】:

我喜欢使用未绑定的子表单来显示交叉表查询的结果。但是下面的代码

Me.subFormForecastSummary.Form.RecordSource = "SELECT ....."

导致此错误消息:“您输入的表达式引用了一个已关闭或不存在的对象”。

当我在表单设计器中使用 Source Object 并指定 select 语句时,上面的代码可以正常工作,我可以设置属性 RecordSource。

我面临的问题是 select 语句基于交叉表查询,并且可以包含不同数量的列(在我的情况下为周),具体取决于主记录。我面临的问题是数据表仅根据 SourceObject 中指定的原始查询显示列(尽管数据本身已刷新)。有谁知道我如何强制刷新列或如何克服错误消息?

谢谢

【问题讨论】:

  • 您是否尝试过使用简单的 SELECT 语句? SELECT a,b,c FROM someTable.
  • 为什么不在表单中将保存的交叉表查询显示为子表单?
  • 是的,我尝试了简单的 SELECT 语句,结果相同。
  • 还尝试通过表单设计器直接绑定交叉表查询。问题在于,如果结果集的列发生变化,这不会反映在数据表中。它只显示与 for 最初保存的相同数量的列。
  • 我没有说使用表格。我说的只是查看表单中的查询。或者查看固定的列标题 - 这可能会有所帮助access-programmers.co.uk/forums/showthread.php?t=298615

标签: ms-access subform datasheet


【解决方案1】:

感谢您迄今为止的回复。根据 cmets 和进一步的研究,我决定采用以下解决方案:

  • 创建了一个虚拟查询,返回 1 条具有最大列数的记录。我已将它们命名为 001 槽到 100
  • 仍然创建了一个子表单并将其绑定到虚拟查询
  • 在 VBA 中,我根据需要在运行时更改记录源
  • 同样在 VBA 中根据需要重命名标题

你会认为应该有一个更优雅的解决方案,但这对我有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多