0

확인 된 만료 날짜가 0 일, 7 일, 30 일, 60 일, 90 일 전에 다음과 같은 다양한 질의가 설정되었습니다. 알림 날짜를 계산하는 나의 방법은 나에게 어떤 유연성도주지 않습니다. 예를 들어 내 사무실이 열려 있지 않은 토요일 12/5 만료 계약이 30 건 있다고 가정 해보십시오. 계약이 만료되었다는 알림과 7 일을 놓친다.금요일에 주말에 내가 무엇을보아야하는지

SELECT qryAllSold.SoldID, qryAllSold.CompanyName, qryAllSold.Product, qryAllSold.Description, qryAllSold.Quantity, qryAllSold.Price, qryAllSold.ConfirmedExpires, qryAllSold.Note 
FROM qryAllSold 
WHERE (((qryAllSold.ConfirmedExpires)=DateAdd("d",0,Int(Now()))) AND ((qryAllSold.RenewedToID) Is Null) AND ((qryAllSold.NonOpportunity)=No)); 

이러한 각각의 쿼리는 일별 작업 목록으로 제공되는 하나의 "대시 보드"폼에 표시됩니다. 양식에서 날짜를 나타내고 화살표를 클릭하여 한 번에 하루 앞으로 또는 뒤로 이동할 수 있으면 좋겠지 만 Access에 해당 기능이 있는지 여부는 알 수 없습니다.

그래도 문제가 해결되지 않으면 이러한 만료에 대한 알림을 놓치지 않도록 다른 방법으로 내가 할 수 있습니까? 여기 프로그래머가 아닌 경우

답변

2

[편집]

왜 쿼리, 예를 들어,에 형식 기능을 사용하지 대체 솔루션입니다

Format([ConfirmedExpires],"ww",2,1) 

"WW"- 주를 지정, 2 주일의 첫날 월요일을 지정, 1 주일에 1 예를 들어 주에 날짜 계산을 쉽게 지금 1월 1일

이 포함되어 의미 계약 미래로 4 주 이상 만료 : 주에 미래까지 4 주 이상 만료

Format([ConfirmedExpires],"ww",2,1)-Format(Now(),"ww",2,1))>4 

계약을 미래

Format([ConfirmedExpires],"ww",2,1)-Format(Now(),"ww",2,1))>4 - 
Format([ConfirmedExpires],"ww",2,1)-Format(Now(),"ww",2,1)),=5 

으로는 도움이됩니까?


은 왜 그냥 DateAdd 함수 같은 기능의 평일 기능을 사용하지 않는?

앞으로 30 일 (달력 일 기준)을 계산하는 대신 25 일 또는 다른 평일을 계산할 수 있습니다.

아래 코드는 메시지 상자를 표시하지만 메시지 상자 뒤의 SQL 쿼리에서이 함수를 똑같이 사용할 수 있습니다.

Sub TestWeekDay() 
    Dim FirstDate As Date ' Declare variables. 
    Dim IntervalType As String 
    Dim Number As Integer 
    Dim Msg 

    IntervalType = "ww" ' "ww" specifies weeks as interval. 
    FirstDate = InputBox("Enter a date") 
    Number = InputBox("Enter number of weekdays to add") 
    Msg = "New date: " & DateAdd(IntervalType, Number, FirstDate) 
    MsgBox Msg 
End Sub 
+0

나는 이것에 대해 생각했지만, 일요일에 - 1 W는 나에게 금요일을 줘? 이것이 휴가를 어떻게 허용합니까? – NickSentowski

+0

계약서에 금융 등이있는 경우 외환, 상품 등을 거래하는 경우 계약은 토요일, 일요일 또는 공휴일에 결제 할 경우 수행 할 작업을 지정합니다. 프로그램은 문서를 따라야합니다. Sun - 1w = 금요일은 기능이 발견 된 첫 근무일로 거슬러 올라 가기 때문입니다. 이것은 대부분 필요한 시간 즉, 주말 전에 금요일에 거래를 정하는 것입니다. – heferav

+0

어디에서 이것을 SQL에 삽입합니까? Sry, 저는 프로그래머가 아닌 내 도구를 쓰는 세일즈맨입니다. – NickSentowski

1

아마도 약간의 합병증이 지금처럼, 당신의 위치를 ​​문에 넣을 수

IIf(Weekday(DateAdd("d", 0, Date())) = 7, DateAdd("d", 0, Date()) + 2, IIf(Weekday(DateAdd("d", 0, Date())) = 1, DateAdd("d", 0, Date()) + 1, DateAdd("d", 0, Date()))) 

:이 같은 qryAllSold의 별칭 Q를 사용하고

SELECT q.SoldID, q.CompanyName, q.Product, 
     q.Description, q.Quantity, q.Price, 
     q.ConfirmedExpires, q.Note 
FROM qryAllSold AS q 
WHERE q.ConfirmedExpires=IIf(Weekday(DateAdd("d", 0, Date())) = 7, DateAdd("d", 0, Date()) + 2, IIf(Weekday(DateAdd("d", 0, Date())) = 1, DateAdd("d", 0, Date()) + 1, DateAdd("d", 0, Date()))) 
AND q.RenewedToID Is Null AND q.NonOpportunity=No 

주 쿼리를 더 쉽게 읽을 수 있습니다. qryAllSold 그대로 q

아니요 대신 False를 사용하는 것이 가장 좋습니다.원하는 경우

, 당신은 매개 변수를 사용할 수 있어야합니다 :

PARAMETERS NoDays Short; 
SELECT q.SoldID, q.CompanyName, q.Product, 
     q.Description, q.Quantity, q.Price, 
     q.ConfirmedExpires, q.Note 
FROM qryAllSold AS q 
WHERE q.ConfirmedExpires=IIf(Weekday(DateAdd("d",[NoDays],Date()))=7,DateAdd("d",[NoDays],Date())+2,IIf(Weekday(DateAdd("d",[NoDays],Date()))=1,DateAdd("d",[NoDays],Date())+1,DateAdd("d",[NoDays],Date()))) 
AND q.RenewedToID Is Null AND q.NonOpportunity=No 

매개 변수는 일 수를 선택할 수 있습니다. 이것이 양식의 필드를 참조하거나 VBA에 설정된 경우 더 좋습니다.

+0

어떻게 도움이 될지 모르겠습니다. 내가 잘못 읽고 있니? 그것은 SQL 쿼리에서 작동하는 것처럼 보이지 않습니다. 여기 내가 의사에 그것을 읽고 있어요 방법은 다음과 같습니다 만약 오늘 + 0 = 7 다음 오늘 + 그밖에 + 2 0 오늘 + 0 = 1 다음 오늘 + 0 + 1 그렇지 오늘 + 0 IF Endif Endif – NickSentowski

+0

오늘 = 오늘의 요일 (토요일이 일요일에 시작하는 토요일), 오늘 +2 일 (월요일), 오늘 = 1 일의 주일 (일요일), 1 일 (월요일), 오늘이면. – Fionnuala

+0

어디에서 이것을 SQL에 삽입합니까? Sry, 나는 프로그래머가 아니라 내 도구를 쓰는 세일즈맨이다. – NickSentowski