在我的餐馆POS软件应用程序中,餐馆老板可以使用一种表格来获取其销售的每日,每周,每月和自定义报告,以及该期间的总收入时间和售出商品的数量。现在,对于日报表和自定义报表,我没有问题,但是对于周报表和月报表,我不知道如何获取当前周或月的已售商品报表。我在Google上进行了很多搜索,但是找不到解决我问题的方法。
例如,今天是星期一,一周的第一天。我卖了30个汉堡和一些比萨饼。三天后,我想查看当前一周(即从星期一开始)的销售报告。从上周的同一天到当日,我的应用程序都会向我提供报告。这是我用于每周报告的代码。
Connection.Open();
OleDbCommand Cmnd = new OleDbCommand("SELECT SomeFields FROM Table WHERE [Date] between @Date2 and @Date1",Connection);
Cmnd.Parameters.Add("@Date2", DateTime.Now.AddDays(-7).ToShortDateString());
Cmnd.Parameters.Add("@Date1", DateTime.Now.ToShortDateString());
OleDbDataAdapter GetList = new OleDbDataAdapter(Cmnd);
DataTable DataT = new DataTable();
GetList.Fill(DataT);
Datagridview.DataSource = DataT;
Connection.Close();
现在,这段代码为我提供了过去7天到今天的销售报告,但是我想要的只是获取当前一周的销售报告。因此,如果是一周中的第三天,它将只给我3天的报告。
答案 0 :(得分:0)
根据您的情况,您需要确定一周的开始日期和一周的结束日期。一种方法是拥有一个函数,该函数将告诉您自一周开始以来已经过去了多少天。在您的情况下,星期一是开始,所以一种简单的方法是:
private int DaysSinceBeginOfWeek(DateTime dt)
{
switch (dt.DayOfWeek)
{
case DayOfWeek.Monday:
return 0;
case DayOfWeek.Tuesday:
return 1;
case DayOfWeek.Wednesday:
return 2;
case DayOfWeek.Thursday:
return 3;
case DayOfWeek.Friday:
return 4;
case DayOfWeek.Saturday:
return 5;
case DayOfWeek.Sunday:
return 6;
}
throw new Exception("impossible happened");
}
然后使用它来确定一周的开始和结束日期。喜欢:
var beginOfWeek = DateTime.Now.AddDays(-1 * DaysSinceBeginOfWeek(DateTime.Now));
var endOfWeek = beginOfWeek.AddDays(6);
要查找月份的开始和结束,可以执行以下操作:
var firstOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
var endOfMonth = firstOfMonth.AddMonths(1).AddDays(-1);
将它们插入查询中,您将获得所需的结果。