2017-09-07 1 views
0

Access 데이터베이스에서 작업을 일시 중지하는 방법을 찾으려고 애 쓰고 있습니다. 나는 많은 제안을 발견했으며 그 중 일부는 작동하지만 원하는 방식이 아닙니다.MS Access - 프로그램 일시 중지

나는 그것을 작동시킬 수 있는지를 알기 위해 미니 예제를 만들었다. (실제 프로그램에서 사용하겠다.)

두 가지 양식 (Form1 및 Form2)이 있습니다. Form1의 단추를 클릭하면 Form1이 닫히고 Form2가 열립니다. Form2에 클릭하면 버튼을 눌러 필요한 작업을 수행 할 수 있습니다 (5 초 동안 일시 중지).

Sub WaitFor(NumOfSeconds As Long) 

Dim SngSec As Long 

SngSec = Timer + NumOfSeconds 

Do While Timer < SngSec 

DoEvents 

Loop 

End Sub 

명령 단추 코드 :

Call WaitFor(5) 

    MsgBox "Waited for 5 seconds", vbOKOnly 

DoCmd.Close 

DoCmd.OpenForm "Form1", acNormal 

내가 코드를 필요로 여기에 내가 사용하고 코드 ....


모듈 코드는 사용자가 클릭하지 않고도 실행할 수있는 Form2의 단추 행운을 불렀던 여러 가지 Form 이벤트에이 코드를 넣으려고했습니다. 들어가는 이벤트에 따라 "작동"하지만 Form2는 실제로 화면에 표시되지 않습니다.

다양한 이벤트 (Load, Activate, Current, Focused)에서 Form2에 대한 명령 단추를 호출 해 보았습니다. 그것이 작동 할 때 나는 Form2가 결코 스크린에 결코 보이지 않는 곳에 문제가있다.

제안 사항? (Visual Basic과 같은 타이머 컨트롤이 좋을 것입니다!)

+0

왜 실행을 일시 중지해야 할를 호출하려면? 타이머를 구현하는 것보다 간단하다는 단점이 있습니다. – Parfait

+0

이 프로그램은 초등학생들이 학생 정부 공무원에게 "투표"하기 위해 사용하는 데 사용됩니다. 지연이 필요한 화면은 투표를 마쳤다 고 말하는 마지막 화면입니다. 지연의 필요성은 많은 학생들이 투표 모니터 (선생님)가 학생들을 붙잡고 그들을 따라갈 수 있기 전에 가능한 많은 시간 동안 프로그램을 사용하려고 시도하기 때문입니다. 지연과 함께 나는 아무것도 할 수없고 교사는 그들이 끝났다는 것을 알 수있는 상황이 일어나지 않기 때문에 학생이 스스로 쉽게 움직이는 것을 발견했습니다. – user3574547

+0

많은 사람들이 여러 번 입력하기 위해 지연된 후에도 여전히 대기 할 수 있기 때문에이를 처리하는 데는 몇 가지 방법이 있습니다. 제출 데이터를 확인하고 조건부로 사용하지 않도록 설정하거나 ([사용] (https://msdn.microsoft.com/en-us/vba/access-vba/articles/commandbutton-enabled-property-access) 참조) 숨기기 ([사용 안 함 ] (https://msdn.microsoft.com/en-us/library/office/aa663049 (v = office.11) .aspx)) 단추를 적절한 경고 메시지와 함께 사용자에게 보냅니다. – Parfait

답변

0

두 번째 폼을 표시하려면 원하는지 확실하지 않으며 THEN에 약간의 지연이 발생합니다. on-on/on-load evet에 넣는 데일리는이 두 "시작"이벤트 코드 스텁이 100 % 완료 될 때까지 양식이 표시되지 않도록합니다.

양식을 시작한 다음 지연이 발생하면 양식 "타이머"이벤트를 사용할 수 있습니다.이 이벤트는 vb 또는 vb.et과 비슷합니다. 양식을 저장하기 직전에도

Private Sub Form_Timer() 

    Me.TimerInterval = 0 ' turn off the timer event 
          ' so it fires only one time 

    MsgBox "hello after 5 second delay" 


End Sub 

당신은 (종로에있는 동안 : formB가 열린 후

그래서 5 초 "안녕하세요", 당신은 다음 코드를 사용합니다 표시하는 MSGBOX 후 원하는 말 모드)는 타이머 "간격"을 5 초 (5000 밀리 초)로 설정해야합니다.

enter image description here

+0

완벽하고 간단합니다. 나는 Timer Interval으로 놀았지만, 정말로 내가 무엇을하고 있는지 알지 못했다. 매우 감사! 약 2500 명 이상의 초등학생이 흥분됩니다 (세 개의 다른 학교에서 사용). – user3574547

1

또 다른 방법 :이처럼

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Public Sub SleepFor(ByVal MilliSeconds As Long) 
    Sleep MilliSeconds 
End Sub 

SleepFor 5000 '5 seconds delay 
+1

이 대답을 x64 호환 가능하게하십시오. OP는 그가 x86 버전을 사용하고 있다고 시작하지 않았습니다. –

+0

x64 및 x86 버전의 Access를 모두 사용할 수 있습니다. 이것은 단순히 각 선생님이 액세스 할 수있는 컴퓨터에 따라 다릅니다. 내 통제에서. – user3574547

관련 문제