powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Высчитывание и подстановка нескольких дат в sql запрос
4 сообщений из 4, страница 1 из 1
Высчитывание и подстановка нескольких дат в sql запрос
    #38043572
HellFosa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ребят, есть SQL-запрос(дело происходит с MS SQL 2008R2 и MS Project Server 2010), который возвращает число.

Используются 4 параметра:

MSP_EpmResource.ResourceEmailAddress - тут опознается пользователь, который зашел на сайт (чтобы для него считалось)
MSP_EpmTask.TaskPercentCompleted - процент выполнения задачи (чтобы считались задачи выполненные на 100%)
MSP_EpmAssignment.AssignmentActualStartDate - дата начала отсчета
MSP_EpmAssignment.AssignmentActualFinishDate - дата окончания отсчета

Иными словами задается период, за который нужно выбрать все задачи, завершенные на 100% для определенного человека, потом посчитать сумму затрат по этим задачам и получить число (у нас это премия сотрудника).

В текущей реализации это делается с помощью 2х календарей и кнопки, после чего число выводится в текстбокс. Начальство не оценило, сказано идти по "iphone way", т.е при открытии страницы должно выводиться уже посчитанное число для текущего периода (с 17 числа предыдущего месяца по 16 число текущего месяца). Прикрутить это с onload не проблема. Проблема сделать так, чтобы даты автоматически подставлялись в запрос. К примеру сегодня 15.11, значит считать должен с 17.10 по 16.11. А если сегодня 26.11, значит должен считать с 17.11 по 16.12. Подскажите как сделать?

Вот код запроса

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
<script language="c#" runat="server">   
    
        protected void Button1_Click(object sender, EventArgs e)
        {
 
        string date = Calendar1.SelectedDate.ToString();
        string date2 = Calendar2.SelectedDate.ToString();
        string strConnection = "тут строка соединения";
            SqlConnection ThisConnection = new SqlConnection(strConnection);
        ThisConnection.Open();
        SqlCommand thisCommand = ThisConnection.CreateCommand();
        thisCommand.CommandText = "SELECT DISTINCT SUM(MSP_EpmTask.TaskCost) AS Expr1 FROM MSP_EpmAssignment INNER JOIN MSP_EpmTask ON MSP_EpmAssignment.TaskUID=MSP_EpmTask.TaskUID INNER JOIN MSP_EpmResource ON MSP_EpmAssignment.ResourceUID = MSP_EpmResource.ResourceUID WHERE (MSP_EpmResource.ResourceEmailAddress = '" + SPContext.Current.Web.CurrentUser.Email + "') AND (MSP_EpmTask.TaskPercentCompleted = '100') AND (MSP_EpmAssignment.AssignmentActualStartDate >= @date) AND (MSP_EpmAssignment.AssignmentActualFinishDate <= @date2)";
        SqlParameter StartDate = new SqlParameter("@date", date);
        SqlParameter FinishDate = new SqlParameter("@date2", date2);
        thisCommand.Parameters.Add(StartDate);
        thisCommand.Parameters.Add(FinishDate);
        SqlDataReader thisReader = thisCommand.ExecuteReader();
        string res = string.Empty;
                while (thisReader.Read())
            {
                res += thisReader["Expr1"];
            }
        thisReader.Close();
        ThisConnection.Close();
        textBoxnext.Text = res;
        }
    </script>
...
Рейтинг: 0 / 0
Высчитывание и подстановка нескольких дат в sql запрос
    #38043623
HellFosa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в принципе, как выставлять месяц, я придумал, но как теперь фиксировано задавать 17 или 16 число?

куча текстбоксов чисто для информативности


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
   string curdate = DateTime.Now.ToString();
            textdate.Text = curdate;

            int curday = DateTime.Now.Day;
        

            if (curday == 17)
            {

                newdate.Text = "yes";
                string bmonth = DateTime.Now.ToString();
                string amonth = DateTime.Now.AddMonths(+1).ToString();
                datebmonth.Text = bmonth;
                dateamonth.Text = amonth;
            }

            else
            {

                newdate.Text = "no";
                string bmonth = DateTime.Now.AddMonths(-1).ToString();
                string amonth = DateTime.Now.ToString();
                datebmonth.Text = bmonth;
                dateamonth.Text = amonth;
            }
        
        
        }
...
Рейтинг: 0 / 0
Высчитывание и подстановка нескольких дат в sql запрос
    #38043695
Primus inter pares
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
            DateTime dtNow = DateTime.Now;
            DateTime dt17;
            DateTime dt16;
            if (dtNow.Day <= 16)
            {
                dt17 = new DateTime(dtNow.AddMonths(-1).Year, dtNow.AddMonths(-1).Month, 17);
                dt16 = new DateTime(dtNow.Year, dtNow.Month, 16);
            }
            else
            {
                dt17 = new DateTime(dtNow.Year, dtNow.Month, 17);
                dt16 = new DateTime(dtNow.AddMonths(1).Year, dtNow.AddMonths(1).Month, 16);
            }
...
Рейтинг: 0 / 0
Высчитывание и подстановка нескольких дат в sql запрос
    #38044830
HellFosa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Primus inter pares
Спасибо! :)
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Высчитывание и подстановка нескольких дат в sql запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]