0

我只是不知道该怎么做。

我设计了一个使用 MS Access 作为其数据库的程序。我有一个月份和年份的字段(字段数据类型是文本),用户可以在其中注册详细信息。该程序将记录用户选择的月份和年份,例如月份= 9 月,年份=2011。

我现在的问题是如何选择用户使用月份和年份作为标准查看的数据范围,例如用户可能希望查看(2011 年 9 月至 2013 年 7 月)的数据范围。

我什至不知道如何尝试。帮助将不胜感激。

4

4 回答 4

1

也许您可以更改应用程序逻辑以将月份和年份存储为各自的数字而不是文本,并将字段数据类型更改为数字。

然后,您可以从它们构造一个DateTime对象,例如九月是 9,您可以使用如下代码:

var startDate = new DateTime(year, month, 1); // get year and month as integers from database, uses the first as the date
var endDate = new DateTime(year, month, 10); // change the date but keeps the month and year the same
var endDate2 = startDate.AddMonths(1); // adds 1 month to the date

或者,您可以尝试使用日历控件来允许用户选择两个日期,而不是从多个字段中构建它。根据您使用的内容,这可以通过多种方式实现,例如在 ASP.Net 或 WPF 中,您可以使用两个日历控件并将它们的SelectedDate属性用作您的范围。

于 2013-08-02T11:21:17.860 回答
1

范围是从起点到终点。对于起点,您可以自动添加月份的第一天。对于端点来说,它更复杂,因为没有固定端点。您可以执行以下操作:

  1. 编写一个数组,其中包含每个月的天数(例如 30 或 31)。除了 2 月,还有一个固定模式。
  2. 对于二月,使用选定的年份来检查是否是闰年。如果不加 28,则加 29。
  3. 之后为您的 SQL 创建日期字符串: Startdate 1.9.2011。为 entdate 做同样的事情。
  4. 之后,我认为您可以between在 SQL 查询中使用关键字。
于 2013-08-02T11:22:53.013 回答
1

您可以假设在每个月的第一天输入所有内容。我会使用对数据库的查询来提取信息。

select * from [tablename] where DateSerial([colYear], [colMonth], 1) between DateSerial([fromYear], [fromMonth], 1) and DateSerial([toYear], [toMonth], 1)
于 2013-08-02T13:10:34.220 回答
0

在这个问题中,有一些方法可以做到这一点:

第一的。假设您使用日期,过滤范围内的日期'07-12-2012'

2011 年 9 月至 2013 年 7 月

 Where DateColumn > '09-01-2011' and DateColumn < '07-31-2013'

或者

指定日期和年份

 Where month(DateColumn)='1' and year(DateColumn)='2016'

注意:有很多方法可以做到这一点。

您可以根据所需的输出来操作您的语句。

于 2016-01-07T01:05:24.167 回答