2013-05-17 2 views
1

나는 VBA 프로그래머가 아니지만 변경 사항을 저장할지 여부를 결정하기 전에 폼을 종료하기 전에 다음 코드를 사용하여 사용자에게 프롬프트를 표시했습니다. 코드는 다음과 같습니다.저장을위한 VBA 코드 수정 - MS Access

Private Sub Form_BeforeUpdate(Cancel As Integer) 


    Dim ctl As Control 

    On Error GoTo Err_BeforeUpdate 


    If Me.Dirty Then 

     If MsgBox("Do you want to save?", vbYesNo + vbQuestion, _ 
       "Save Record") = vbNo Then 
     Me.Undo 
     End If 
    End If 

Exit_BeforeUpdate: 
    Exit Sub 

Err_BeforeUpdate: 
    MsgBox Err.Number & " " & Err.Description 
    Resume Exit_BeforeUpdate 
End Sub 

언제든지 보고서를 PDF로 인쇄하려고 할 때마다 저장 여부를 묻는 메시지가 항상 표시됩니다. 나는 위의 코드를 작성하여 누군가가 인쇄하기를 원하는 경우를 제외하고는 항상 레코드를 저장할지 여부를 묻는 방식으로 작성하고자합니다.

누군가이 코드를 수정하는 데 도움을 줄 수 있습니까?

미리 감사드립니다.

+1

* "보고서를 PDF로 인쇄하십시오"*라고 말했을 때 실제로 "양식 인쇄"*를 의미한다고 가정 할 때 양식을 PDF로 인쇄하는 방법을 알려주십시오. – HansUp

+0

예 @hansup "양식 인쇄"를 의미합니다. "Cute PDF"라는 도구를 사용하고 있습니다. 내가 CutePDF를 설치하면 물리적으로 종이를 인쇄하는 것과 같은 방식으로 양식을 인쇄하고 프린터 이름으로 "CutePDF"를 선택할 수 있습니다. 인쇄를 클릭하면 양식에서 레코드를 저장하라는 메시지가 나타납니다. 그게 뭔지 제거하려고하는 건데 ... – JT2013

+0

고마워. 나는 프린터 목적지로 CutePDF가 정말로 여기 핵심 문제가 아니라고 생각한다. Access에서 인쇄하기 전에 저장하지 않은 변경 내용을 저장하려고하므로 인쇄 대상에 관계없이 같은 문제가 발생할 수 있습니다. 제출 한 답변이 유용한 방향으로 당신을 가리키는 지 확인하십시오. – HansUp

답변

2

"더티"인 바운드 폼을 인쇄하려고하면 --- 저장하지 않은 변경 내용을 포함합니다 --- 인쇄하기 전에 자동으로 저장 작업을 수행합니다.

당신이 직면하고있는 문제는 양식이 저장되지 않은 변경 사항을 저장 또는 폐기 여부를 사용자에게 묻는 Form_BeforeUpdate 절차를 포함하고, 액세스 각 저장 작업 직전에 그 Form_BeforeUpdate 절차를 처리합니다.

먼저 인쇄 한 후, 자체 저장 수행 할 수있는 양식을 인쇄 할 수 귀하의 VBA 코드 ...

If Me.Dirty = True Then 
    Me.Dirty = False ' saves changes to current record 
End If 
' insert your print statement here 

이 접근 가능한 문제는이 사용자의 확인없이 당신이 원하는 모든 시간을 절약 강제입니다 인쇄가 ... 받아 들여지지 않을 수도 있습니다.

사용자가 저장하지 않은 데이터가 포함 된 양식을 인쇄하도록 허용하는 경우 운이 좋지 않을 수도 있습니다 ... 이라고 묶어 양식으로 가정합니다.

+0

@ JT2013 내가 제안한 코드로 실험했습니다. Me.Dirty = False를 호출하면 여전히 Form_BeforeUpdate 프로 시저가 트리거됩니다. 나는이 대답을 쓸 때 그 점을 간과했다. 당신이 대답을 받아 들였기 때문에 나는 이것이 OK라고 생각합니다. 그러나 그것이 당신이 원하는 것이 아니라면 더 많은 노력을 기울일 필요가 있습니다. – HansUp