【问题标题】:Access 2010 Query with Parameter and Sort使用参数和排序访问 2010 查询
【发布时间】:2013-12-22 21:17:14
【问题描述】:

我在 Access 2010 中遇到了一个问题。想象一下包含这些列的表格:

名称日期时间

现在,我有一个查询,要求用户输入开始日期和结束日期,并返回这两个日期之间的所有记录。这工作正常。但是,一旦我向 Date 列添加排序,事情就会出错。一旦您对带有参数的列进行排序,用户就会被要求输入两次参数。据我所知,这是 Access 中的正常(尽管很烦人)行为。

如果我第二次添加日期列并显示带有排序的列而不显示带有参数的列,它可以正常工作。查询类似于:

名称日期(显示和排序)日期(未显示和参数)时间

现在,当我运行查询时,它一切正常,并以我想要的方式出现。这显然是一个很好的解决方案。但是,还有另一个问题。当我保存查询、离开并重新打开查询时,这两列会相互合并。因此,更改丢失,用户再次看到两个输入。

我的问题是:我可以做些什么不同的事情来达到预期的结果?

我想过但不知道答案的一些可能的事情是:

有没有办法让列不合并?我是否必须使用带有输入框的表单并从中获取数据(我不希望这样做,因为它需要大量额外的工作来处理我在数据库中所做的各种事情)。我有什么明显的遗漏吗?

感谢您的任何建议。

仅供参考:这是查询中的 SQL

选择 Intentions.Intention、Intentions.MassDate、Intentions.[请求的时间]、Intentions.[请求的地点]、Intentions.[提供者]、Intentions.Completed
来自意图
WHERE (((Intentions.MassDate) [输入开始日期] 和 [输入结束日期]))
ORDER BY Intentions.MassDate, Intentions.[Time Requested];

【问题讨论】:

    标签: ms-access-2010


    【解决方案1】:

    确实,有时 Access 中的查询设计器会在您保存查询时“重新组织”查询。但是,我不记得这样的重组实际上破坏任何事情的实例。

    对于它的价值,以下查询似乎可以满足您的需求。保存并重新打开后,它的外观和行为都一样:

    供参考,后面的SQL是

    PARAMETERS startDate DateTime, endDate DateTime;
    SELECT NameDateTime.Name, NameDateTime.Date, NameDateTime.Time
    FROM NameDateTime
    WHERE (((NameDateTime.Date) Between [startDate] And [endDate]))
    ORDER BY NameDateTime.Date DESC , NameDateTime.Time DESC;
    

    【讨论】:

    • 现在我完全糊涂了。我做了一个像你一样的虚拟数据库,它工作得很好。然后我回到真正的数据库,突然它开始工作了。所以为了确保我不是在做梦,我回到了我昨天创建的数据库的副本。问题仍然在那里发生。所以我查看了查询。早期数据库中的 SQL 与后来数据库中的 SQL 相同。据我所知,我没有保留我所做的任何更改,并且我所做的更改不会与此查询或表相关联。我将不得不继续调查。
    【解决方案2】:

    我遇到了同样的问题,我发现了原因: 如果在您运行查询后,对结果网格中的列进行排序并选择“是”以保存对查询的更改,则排序操作将与查询一起存储。这实际上会导致查询运行两次。首先创建结果,然后再进行一次排序。因此,系统会要求您提供两次参数。

    解决方案:运行查询(输入您的参数两次 ;-))。然后通过单击上方任务栏中的 AZ 橡皮擦符号(在排序隔间中)删除排序。

    然后在设计模式下打开您的查询并将排序顺序添加到相应的列中。 那么你就可以开始了。

    问候 一月

    【讨论】:

      猜你喜欢
      • 2016-10-17
      • 2021-11-10
      • 2018-11-11
      • 2016-05-29
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多