2013-02-20 1 views
0

나는 나와 같은 초보자를위한 매우 간단한 질문이라고 생각한 것에 대한 대답을 찾고 서핑을하고 있습니다. ! 일을 간단하게하기 위해 두 개의 코드를 첨부하여 두통을 줄 것입니다. 내가하려는 것은 버튼을 클릭하여 읽기 전용 모드에서 쓰기 허용 상태로 전환하는 것입니다. 그렇게하기 위해서, 나는 루틴이 레코드의 변경을 확인하고, 변경 사항을 저장할지 아니면 버릴지를 결정할 것을 사용자에게 묻는 것이 필요하다.이 특정 버튼을 테스트하는 동안, 나는 " 재미있다 ".. 변경 사항이 도입되지 않으면 잘 작동하는 것처럼 보입니다. 읽기 전용 상태에서 쓰기 허용 상태로 완벽하게 전환합니다. 그러나 쓰기 허용 및 변경시 "저장 옵션"이 선택/클릭 된 경우 다른 모든 서브 루틴 및 변경 사항이 구현 되더라도 내용이 잠기지 않습니다.읽기 전용 및 실행 취소 속성 MS 액세스 (VBA)

다른 문제는이 문제와 밀접한 관련이 있습니다. 실행 취소 옵션에 "저장 지점"을 설정하는 방법을 찾을 수 없다는 것입니다. "레코드를 저장하는"방법을 찾고 싶습니다. 언두 버튼을 눌렀을 때 데이터베이스가 처음 열렸으므로 레코드가 겪은 모든 변경 사항을 취소하지 않습니다 (현재 진행중).하지만 버튼이 눌렀다. DoCmd Save 기능을 시도했지만 예상대로 작동하지 않습니다. (참고 : 마지막 'else'는이 마지막 문제 였지만 예상대로 작동하지 않습니다.)

앞으로도 협업,

알렉스

Private Sub Command28_Click() 
    If Form_AODNewRecord.AllowAdditions = True Then 
     Call isModified_Save 

     Form_AODNewRecord.AllowAdditions = False 
     Form_AODNewRecord.AllowEdits = False 
     Form_AODNewRecord.AllowDeletions = False 
     MsgBox "Read Only. Addition, Edits and Deletions are now locked" 
     Command28.Caption = "LOCKED" 
    Else 
     Form_AODNewRecord.AllowAdditions = True 
     Form_AODNewRecord.AllowEdits = True 
     Form_AODNewRecord.AllowDeletions = True 
     MsgBox "New records, edits and deletions are now allowed" 
     Command28.Caption = "Lock mode OFF" 
    End If 

    MsgBox Form_AODNewRecord.AllowAdditions 
End Sub 

Sub isModified_Save() 
    If Form_AODNewRecord.Dirty Then 
     Dim strMsg As String, strTitle As String 
     strMsg = "You have edited this record. Do you want to save the changes?" 
     strTitle = "Save Record?" 
     If MsgBox(strMsg, vbQuestion + vbYesNo, strTitle) = vbNo Then 
      Me.Undo 
     Else 
      DoCmd.OpenTable "AOD Type", acViewPreview, acReadOnly 
      DoCmd.Save acTable, "AOD Type" 
      DoCmd.Close acTable, "AOD Type", acSaveYes 

     End If 
    End If 

End Sub 

답변

0

나는 다음과 같은 코드를 원하는 생각합니다. 폼이 바인딩 된 테이블을 열 수 없으며 폼에 영향을 미칩니다. 테이블을 열면 두 개의 다른 인스턴스가 있고 서로 영향을주지 않습니다.

Office 응용 프로그램에서 매크로를 실행하는 것의 이상한 효과는 실행 취소 목록을 지우는 것입니다. 그래서 "취소 된 메시지 취소"라는 메시지를 보여주는 작은 매크로를 만들었습니다.

제쳐두고 Command28 대신 cmdLock과 같은 의미있는 이름으로 컨트롤의 이름을 변경하면 나중에 감사 할 것입니다.

Private Sub Command28_Click() 
    If Me.AllowAdditions = True Then 
     Call isModified_Save 

     Me.AllowAdditions = False 
     Me.AllowEdits = False 
     Me.AllowDeletions = False 
     MsgBox "Read Only. Addition, Edits and Deletions are now locked" 
     Command28.Caption = "LOCKED" 
    Else 
     Me.AllowAdditions = True 
     Me.AllowEdits = True 
     Me.AllowDeletions = True 
     MsgBox "New records, edits and deletions are now allowed" 
     Command28.Caption = "Lock mode OFF" 
    End If 

    ''MsgBox Me.AllowAdditions 
End Sub 

Sub isModified_Save() 
    If Me.Dirty Then 
     Dim strMsg As String, strTitle As String 
     strMsg = "You have edited this record. Do you want to save the changes?" 
     strTitle = "Save Record?" 
     If MsgBox(strMsg, vbQuestion + vbYesNo, strTitle) = vbNo Then 
      Me.Undo 
     Else 
      ''Save record 
      Me.Dirty = False 
      ''Clear undo list 
      DoCmd.RunMacro "ClearUndo" 
     End If 
    End If 

End Sub 
+0

많은 감사의 말씀을드립니다. 적절한 피드백을 제공합니다.) – user1872905