2009-09-29 6 views
1

이 페이지에서 너무 많은 시간을 잃어 버릴 것 같습니다.액세스 : 보고서 생성을 취소하면 오류가 발생합니다. 2501

주문 양식이 있는데, "보고서"버튼을 클릭하면 대화 상자 에서 선택할 수있는 다른 보고서의 목록이 팝업됩니다. 두 번 클릭하면 이 선택되고 해당 보고서가 시작됩니다.

이러한 보고서 중 하나에는 사용자가 데이터를 입력해야하는 언 바운드 텍스트 상자가 있습니다. 이 필드의 ControlSource는 Name 속성으로 설정됩니다. 보고서가 시작되면 확인 및 취소 버튼이있는 입력 상자가 나타납니다. 데이터를 입력 할 때마다 괜찮습니다.

하지만 취소를 클릭하면 응용 프로그램이 충돌하고 errormessage가 발생합니다. "런타임 오류 2501 : 작업 OpenReport가 취소되었습니다"(독일어 번역).

DoCmd.OpenReport vBerichtName, nAnsicht 
End If 

On Error Resume Next 
    DoCmd.Close acForm, "F_BerichtDrucken" 
On Error GoTo 0 

1) 당사에서 오류 걷어하지 핸들링 않습니다

보고서는이 코드를 통해이라고?
2) 내가 봤 거든이 공식 Microsoft는 당신이 설치/프린터 드라이버 (와서 ...)를 업데이 트하는 데 필요한 말처럼 이상한 솔루션을 많이 발견. 아무도 도왔다.

나는이 일을 친구에게하고 있는데, 보통 linux/php, java 등에서 일한다. 해결책이 다소 분명한 경우 나 사과한다.

답변

2

필립의 답변입니다. 당신은 우리에게 모든 절차를 포기하지 않았다하지만 당신은 이런 일을 할 필요가 ... 이것은 일반적인 오류입니다

Sub MyButton_Click 
On Error Goto myError 

DoCmd.OpenReport vBerichtName, nAnsicht 


MyExit: 
    Exit Sub 

MyError: 
    If Err.number = 2501 then goto myExit 
    msgbox err.description 
    goto myExit 

End Sub 

하지만 당신은 다른 오류처럼 잡아 2501
경우 무시할 수 Seth

+0

OK 얘들 아, 고마워, 나는 한 걸음 더 나아 갔어. 이제는 다음과 같습니다 : On Error GoTo CancelError If Not IsNull(vFilter) Then DoCmd.OpenReport vBerichtName, nAnsicht, , vFilter Else DoCmd.OpenReport vBerichtName, nAnsicht End If Echo True CancelError: Exit Function (안녕하세요, 저는 다른 사람의 코드를 편집하고 있습니다. VB에서 초보자입니다.) 이제 실제로 작동하지만 취소를 클릭하면 다시 대화 상자가 나타납니다. -하지만 응용 프로그램이 응답하지 않습니다 .... 계속하려면 Access를 다시 시작해야합니다! – faboolous

+0

코멘트에 서식이 잘못되어 코드를 잘못 작성하면 죄송합니다. 수행 방법을 찾아야합니다.) – faboolous

+0

예 - 언제든지 DoCmd.OpenReport를 사용하면 해당 오류를 트랩해야합니다. –

1

아마도 DoCmd.OpenReport 줄에서 오류가 발생합니다. 이것이 오류 처리기가 작동하지 않는 이유입니다.

요청하신 값이 보고서에 필수 항목이라고 생각됩니다. docmd.openReport 앞에 오류 관리 행을 넣으려고 했습니까?

0

이제 정상적으로 작동합니다.

은 제안 후,이 같은 코드를 넣어 : 나는 오류 처리로 진정한 에코를 넣어, 작동 즉시

On Error GoTo CancelError 
    If Not IsNull(vFilter) Then 
     DoCmd.OpenReport vBerichtName, nAnsicht, , vFilter 
    Else 
     DoCmd.OpenReport vBerichtName, nAnsicht 
    End If 
CancelError: 
    DoCmd.Close acReport, vBerichtName 
    DoCmd.Close acForm, "F_BerichtDrucken" 
    Echo True ' this did the trick 
    Exit Function 

을 지금 원활하게 이전의 형태로 돌아가서에 허용 계속 작업하십시오 - "Echo"가 화면을 되살리는 것 같습니까?

+0

예 ... echo는 고통입니다. 아주 조심스럽게 사용해야합니다. Seth –

+0

fablife ... 다른 하나 ... if 블록을 수행하는 대신에 다음과 같은 작업을 수행 할 수 있습니다. Docmd.OpenReport vBerichtName, nAnsicht ,, NZ (vFilter, vbnNullString) ... null to ' "모든 레코드 표시" –

+0

마지막으로 한 가지 ... ECHO False Prevents 화면이 새로 고침 ... 그래서 내가 조심해야한다는 말은 절대 Echo가 어떤 점에서 사실. 코드 또는 매크로가 화면을 점프하고 깜박이는 등 많은 일을하는 경우에만 Echo를 사용해야합니다. –

1

기본 프린터를 확인하십시오. & 내 모든 코드가 올바르게 작동하고있어 동일한 오류가 발생했습니다. 컴퓨터를 사용하는 사람이 기본 프린터를 레이블 프린터로 설정합니다. 어떻게 든 Access는 프린터 &이 올바른 크기 설정으로 인쇄 할 수 없다는 것을 알고 있었기 때문에 보고서 표시를 중단했습니다.

기본 프린터를 다른 풀 사이즈 용지 프린터로 변경했는데 정상적으로 작동했습니다.

내가 처음 발생한 때를 잃어 버렸기 때문에 이것이 도움이되기를 바랍니다.

관련 문제