使用参数和排序访问 2010 查询

问题描述 投票:0回答:2

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

姓名日期时间

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

如果我第二次添加“日期”列并显示带有排序的列,并且不显示带有参数的列,则效果很好。 查询看起来像这样:

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

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

我的问题是:我可以采取哪些不同的措施来达到预期的结果?

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

有没有办法让列不合并? 我是否必须使用带有输入框的表单并从中获取数据(我不想这样做,因为它需要大量额外的工作来处理我在数据库中执行的各种操作)。 我是否遗漏了一些明显的东西?

感谢您的任何建议。

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

选择 Intentions.Intention、Intentions.MassDate、Intentions.[请求的时间]、Intentions.[请求的地点]、Intentions.[提供者]、Intentions.Completed
来自意图
WHERE (((Intentions.MassDate) 在 [输入开始日期] 和 [输入结束日期] 之间))
按意向.MassDate、意向.[请求时间]排序;

ms-access-2010
2个回答
1
投票

确实,有时 Access 中的查询设计器会在您保存查询时“重新组织”查询。然而,我不记得这样的重组实际上会“破坏”任何东西。 就其价值而言,以下查询似乎可以满足您的要求。保存并重新打开后,它的外观和行为都一样:

DateQuery.png供参考,其背后的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;



-1
投票

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

然后在设计模式下打开查询并将排序顺序添加到适当的列。

那么你就可以开始了。

问候 一月

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.