访问2013报表/表单未使用修改后的查询

时间:2017-07-21 21:33:09

标签: ms-access

我正在修改一个已经多次升级的非常旧的访问应用程序。它可能从2003年开始。我在2013年运行。我修改了一个查询以过滤我刚刚添加到表中的列。我的表单和我的报告都没有使用修改后的查询。我知道这是因为我在表中添加了一列,然后修改了查询以过滤此列。查询运行正常。报告和表单肯定是使用旧查询。该应用程序还使用VB6代码,实际上根据所选报告添加更多SQL。如果我创建一个全新的报告,它将执行新的查询。我不想创建所有新报告。而且我知道VB6也已经过时了,但是这家公司已经停业了,这只是一种保持其组织化的方式。

1 个答案:

答案 0 :(得分:0)

诀窍在于弄清楚报告在运行时从哪里获取数据。因为你说有改变SQL的VB6代码,这可能很复杂。

有很多方法可以改变,而且目前问题中的信息,我不可能缩小范围,但有些地方你可以查看。

报告的数据可以通过多种方式指定。

  • 您可以选择表或查询作为报告属性中的数据源。如果发生了这种情况,那么只要您修改了查询,您的报告就会发生变化。所以它可能不是。
  • 报表可以使用该属性定义自己的查询。这可以是使用表和其他查询的select语句,选择特定字段并应用过滤器。
  • 你说有一堆VB6也改变了查询。 (你确定它是VB6而不是VBA吗?可能并不重要)。这将改变您需要查看的位置。

所以我要做的是:

  • 查看报告的属性并找出数据源的内容。看看它只是一个查询名称还是一个SQL语句。如果它是一个SQL语句,请在构建器中将其激活,并查看是否可以找到您修改的查询,或者重新应用修改并查看是否有效。

如果这不起作用,那么你将需要查看VB代码。找到修改此报告的SQL的代码。最有可能的是,用户点击的按钮会运行一堆代码,更新SQL并启动报告。在那里粘贴一个断点并一步一步,直到你看到正在构建一些SQL,然后找出如何从那里改变SQL。

很可能你会有两个策略:

  • VB代码构造SQL raw,它看起来很像查询中的SQL,但具有不同的标准。因此,您可以使用修改后的查询中修改的SQL来模拟您在VB构造的SQL
  • 中需要进行的更改
  • VB代码执行类似SELECT * FROM [TheQuery] WHERE的操作,只添加条件。这可能会让你的生活更轻松,但它可能不会发生什么,因为修改查询并没有改变任何东西。