2013-07-16 2 views
1

Я ищу код, который автоматически вводится в следующую дату дня недели в поле 2, если поле 1 не равно нулю. Или, точнее, Field2 = Field1 + 1 weekdayКак установить field2 = рабочий день +1

Я использую Access 2007 как front end и SQL 2008 в качестве бэкэнд.

Любая помощь была бы принята с благодарностью!

ответ

0

Если вы выполняете запрос из Access в связанной таблице SQL Server, запрос должен использовать Access-compatible SQL.

Чтобы сделать Field2 один день позже, чем Field1 дата:

UPDATE YourTable 
SET Field2 = DateAdd('d', 1, Field1) 
WHERE Field1 Is Not Null; 

Чтобы пропустить выходные дни, используйте функцию Weekday в Switch заявлении, чтобы определить, сколько дней нужно добавить.

UPDATE YourTable 
SET Field2 = 
    DateAdd 
     (
      'd', 
      Switch 
       (
        Weekday(Field1) = 6, 3, 
        Weekday(Field1) = 7, 2, 
        Weekday(Field1) >= 1 AND Weekday(Field1)<=5, 1 
       ), 
      Field1 
     ) 
WHERE Field1 Is Not Null; 
+0

Спасибо Вам за вашу помощь! – David

0

Похоже, вы ищете UPDATE заявление с DATEADD:

update YourTable 
set Field2 = dateadd(day,1,Field1) 
where Field1 is not null 

Или, если вы пытаетесь удалить выходные и всегда обновлять до ближайшего понедельника, то это один из способов с CASE:

update YourTable 
set Field2 = 
    case 
    when datepart(dw,Field1) = 1 then dateadd(day,1,Field1) 
    when datepart(dw,Field1) = 7 then dateadd(day,2,Field1) 
    else dateadd(day,1,Field1) 
    end 
where Field1 is not null 
Смежные вопросы