0

在我的餐厅 POS 软件应用程序中,餐厅老板可以使用一个表格来获取他/她的销售的每日、每周、每月和自定义报告,以及该时间段内的总收入和售出物品的数量。现在对于日报和自定义报告,我没有问题,但是对于周报和月报,我不知道如何获得当周或当月的已售商品报告。我在谷歌上搜索了很多,但我找不到我的问题的解决方案。

例如,今天是星期一,一周的第一天。我卖了 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 天,它只会给我 3 天的报告。

4

1 回答 1

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);

将它们插入您的查询中,您应该会得到所需的结果。

于 2019-08-04T23:59:17.083 回答