2017-01-16 60 views
9

Obecnie mam master rota, który zapisuje spotkania wraz z TIME i DAY, ale nie DATE. Baza danych SQL Server wygląda jak poniżej dla Mistrza Rota nominacji jest on tworzony poprzez kontrolę kalendarzowego DAYPILOTDayPilot SQL - Kopiowanie spotkań, które nie mają daty

enter image description here

enter image description here Jak widać jest czas przechowywane, ale nie jest datą, lecz to jest przechowywanie Dzień . EG Dzień 0 to niedziela, Dzień 1 to poniedziałek itd. ...

Chciałbym dodać przycisk do interfejsu użytkownika, który będzie kopiować po terminach od roty głównej do ruty LIVE, biorąc pod uwagę DATY

EG w aplikacji z master rota w 1. dniu (poniedziałek) należy wstawić do tabeli ruty LIVE, ale dodając w dniu DATE bieżącego tygodnia z kontrolki kalendarza Daypilot, EG rozkaz startu w tabeli LIVE ROTA będzie 2016 -01-16 09:30. Musiałby sprawdzić aktualną datę tygodnia w kalendarzu Daypilot, a następnie wstawić do tabeli LIVE.

Czy to możliwe? Jak mogę sprawdzić bieżącą DATĘ i upewnić się, że DATE pasuje do poprawnego dnia przy użyciu pola dnia z DB? E.G Dzień 0, Dzień 1 itd ..?

Aktualny SQL do tworzenia mistrz rota

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

Czy ktoś o tym wie? –

Odpowiedz

3

Oto SQL jedynym rozwiązaniem dla uzyskania datę rozpoczęcia i zakończenia/czasy dla określonego dnia tygodnia w bieżącym tygodniu:

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

Demo tutaj : http://rextester.com/URJP8148

(Nie jestem pewien, czy to jest dokładnie to, czego chcesz, ale to jest początek, proszę dać mi znać, jeśli nie spełnia wymagań ementy)