2010-06-22 6 views
0

자정에 24 시간마다 한 번 프로세스를 실행해야합니다. 자정 무렵 인 경우 12:00:00 또는 12:00:03이면 문제가되지 않습니다.프로세스를 예약하는 방법은 무엇입니까?

매분마다 몇시에 타이머를 점검해야합니까, 아니면 좀 더 세련되고 간단한 방법이 있습니까?

현재 자정인지 확인하는 if 문은 무엇입니까? 데이터베이스가 항상 열어두고 할 필요가 있습니까

+0

저는 VBA가 아니기 때문에 환경을 잘 모릅니다.하지만 자정에 데이터베이스를 열지 않아도됩니까? – Kendrick

+2

이 기사에서는 액세스 타이머 이벤트를 사용할 때 설정된 몇 가지 트랩과 "아마도"몇 가지 해결 방법을 보여줍니다. http://www.bluemoosetech.com/article.php?jid=8 –

+0

좋은 링크, @belisarius. 그뿐 아니라 Windows Scheduler를 사용하여 vbScript를 실행하여 데이터 업데이트를 수행 할 수 있다고 언급 한 경우에도 유용 할 것입니다. –

답변

2

에서 원하는 코드를 실행하기 위해 액티브 X를 사용할 수있는 VBS 파일을 실행하는 작업 스케줄러를 사용할 수 있을까요?

그렇지 않은 경우 자정에 데이터베이스를 열려면 Windows 스케줄러로 작업을 만드는 것이 좋습니다. 데이터베이스가 열릴 때 프로세스를 시작하는 자동 실행 매크로를 사용하십시오.

데이터베이스가 열릴 때마다 해당 프로세스를 실행하지 않으려면 매크로의 이름을 autoexec 이외의 이름으로 지정하십시오. 그런 다음 Windows 스케줄러에서 작업을 생성 할 때 매크로 이름과 함께 '/exec 명령 옵션을 사용하십시오.

업데이트 : 대답에서에이 표현 사용할 수있다 "는 자정 현재인지 문이 확인하는 경우 무엇을 할 것"그러나

If TimeValue(Now()) = #12:00:00 AM# Then 

을, 나는 당신을 의심 그것은 단지 자정에 정확하게 진실이기 때문에 많이 좋다. 프로세스가 아직 오전 12시 1 분에 실행되도록하려는 경우입니다. 그래서 당신이 필요로하는 것은 CompletedJobs 테이블에 날짜/시간 필드, run_date 및 해당 필드에 대한 고유 인덱스가 있다고 생각합니다. 그런 다음 Date 함수에 DCount를 사용하여 오늘 날짜가 CompletedJob에 존재하는지 확인할 수 있습니다.

DCount("run_date", "CompletedJobs", "run_date = #" & Date() & "#") 

DCount <> 0 인 경우 귀하의 프로세스가 오늘 실행됩니다. DCount = 0이면 프로세스를 실행 한 다음 CompletedJobs에 오늘 날짜를 삽입하십시오.

INSERT INTO CompletedJobs (run_date) 
VALUES (Date()); 
0

당신은하지 데이터베이스

+0

죄송합니다. vbs 파일>? –

+0

당신은 autoexec라는 매크로에 의해 실행되는 코드 (이 코드가 이미 작성되었다고 가정)로 액세스 파일을 열 수 있습니다. – JeffO

+0

vbs = vbScript. VBA와 매우 유사하지만 변수에 대한 데이터 유형 지정이 없습니다 (모든 변수는 변형입니다). VBA 코드는 후기 바인딩을 사용하는 방법을 이해하는 한 일반적으로 변환하기가 쉽습니다. –

관련 문제