2017-01-16 6 views
9

В настоящее время у меня есть мастер-рота, который хранит встречи вместе с TIME и DAY, но не DATE. База данных SQL Server выглядит ниже мастер дежурных назначений Он создается с помощью управления календаря DAYPILOTDayPilot SQL - Копирование встреч, у которых нет даты

enter image description here

enter image description here Как вы можете видеть, что время сохраняется, но не ДАТЫ но хранит День , EG День 0 - воскресенье, 1-й день - понедельник и т. Д.

Я хотел бы добавить кнопку в пользовательский интерфейс, который будет копировать через встречи от ведущего рота на LIVE rota с учетом ДАТЫ

EG Вставка в игру с первого дня в понедельник (понедельник) должна быть вставлена ​​в таблицу ролей LIVE, но добавив в DATE текущей недели из календарного управления Daypilot EG начало назначения в таблице LIVE ROTA будет 2016 -01-16 09:30. Он должен будет проверить текущую дату недели в календаре daypilot, а затем вставить в таблицу LIVE.

Возможно ли это? Как я могу проверить текущую ДАТА и убедиться, что DATE соответствует правильному дню, используя поле дня из БД? E.G День 0, День 1 и т. Д.?

Текущий SQL для создания мастер-рота

public void CreateAssignment(DateTime start, DateTime end, int location, int  week, string person, string note, DayOfWeek day) 
    { 
     using (DbConnection con = CreateConnection()) 
     { 
      con.Open(); 
      //string id = ""; 

      var cmd = CreateCommand("insert into [master_rota] ([AssignmentStart], [AssignmentEnd], [LocationId], [PersonId], [AssignmentNote], week, day) values (@start, @end, @location, @person, @note, @Week, @day)", con); 
      AddParameterWithValue(cmd, "start", start.TimeOfDay); 
      AddParameterWithValue(cmd, "end", end.TimeOfDay); 
      AddParameterWithValue(cmd, "location", location); 
      AddParameterWithValue(cmd, "week", week); 
      AddParameterWithValue(cmd, "person", person); 
      AddParameterWithValue(cmd, "note", note); 
      if (day == DayOfWeek.Saturday) 
      { 
       AddParameterWithValue(cmd, "day", day - 6); 
      } 
      else 
      AddParameterWithValue(cmd, "day", day + 1); 

      cmd.ExecuteScalar(); 

     } 
    } 
+0

Кто-нибудь знает об этом? –

ответ

3

Вот SQL единственным решением для получения даты начала и окончания/раз за указанный день недели в текущей недели:

SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) + day 
     - DATEPART(dw, GETDATE()) + [AssignmentStart] AS [StartInCurrentWeek], 
     DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) + day 
     - DATEPART(dw, GETDATE()) + [AssignmentEnd] AS [EndInCurrentWeek] 
FROM [master_rota]; 

Демо здесь : http://rextester.com/URJP8148

(Не уверен, что это именно то, что вы хотите, но это старт, пожалуйста, дайте мне знать, если он не соответствует требованиям ements ...)

Смежные вопросы