2010-03-26 2 views
0

Access (2003) 설명서에 따르면 레코드를 삭제하면 버퍼에 저장되고 BeforeDeleteConfirm 이벤트가 발생하고 AfterConfirmDelete 광고 삭제 이벤트가 발생합니다. 내 테이블에서 레코드가 삭제되면 필드 값 (수량 값) 중 하나를 다른 테이블의 필드에 추가해야합니다.삭제 된 레코드 버퍼 읽기

현재 이벤트에서 수량을 개인 변수로 설정하려고 시도했지만 삭제를 삭제하자마자 현재 이벤트가 다시 발생하고 변수가 재설정되는 것처럼 보입니다.

삭제 된 레코드의 필드 값에 액세스하려면 어떻게해야합니까?

답변

0

바운드 컨트롤의 값은 delete 이벤트 형식에서 계속 사용할 수 있습니다. 이 샘플에서 txtid은 바운드 텍스트 상자입니다. 나는 기본 동작 이외의 OnDelete 이벤트에 뭔가를하려는 경우

Private Sub Form_Delete(Cancel As Integer) 
    Dim strActivity As String 
    Dim strSql As String 

    strActivity = Me.txtid & " deleted." 
    strSql = "INSERT INTO tblAudit (activity) " & _ 
     "VALUES (""" & strActivity & """);" 
    CurrentDb.Execute strSql, dbFailOnError 
End Sub 
0

이 솔루션은 약간의 재 설계가 필요할 수 있습니다,하지만 난 내 자신의 한 형태에 사용하는 작업은 다음과 같습니다

  1. 는 "보이는"라는 기록 테이블에 부울 필드를 추가합니다. 당신의 기본 폼에
  2. , 당신의 form.filter을 설정 = "[표시] 진정한 =의"기본 폼에
  3. AllowFilters을 설정 = 예. 당신의 기본 폼에
  4. 을 설정하여 Form.Allow 삭제 사항 = 거짓
  5. 사용자 정의가 보이는 = 거짓을 설정하는 명령 단추를 삭제합니다 (우리가 기록을 삭제 그들 실제로을 원하지 않는다).
  6. 나중에 필요하다고 생각되면 일부 maketable 쿼리를 추가하고 쿼리를 삭제하여 메인 테이블을 정리하고 삭제 된 값을 다른 테이블로 옮길 수 있습니다.

이렇게하면 사용자가 실제로 레코드를 '삭제'하지 않습니다. 오히려 그들은 그 기록을 보이지 않게 만듭니다. 나중에 양식이 언로드되면 일부 정리 쿼리를 추가 할 수 있습니다.

0

일반적으로, 나는 AllowDeletes을 끄고 내가 원하는 것을 그 레코드 삭제 명령 단추를 만드는 경향이있다.

따라서 내장 이벤트에 의존하지 않습니다. 값을 저장해야하는 경우, 확인 메시지를 팝업 한 다음 필요한 방법을 수행합니다. 가장 쉬운 방법으로 생각합니다.

특히 사용자 설정이 상황에 따라 다르게 행동 할 수 있기 때문에 훨씬 쉽습니다. 예를 들어, 사용자가이 설정되면,이 확인 이벤트가 발생하지 않는합니다 (A2003 도움말 파일에서, 그러나 항상 이런 식이었다) :

AfterDelConfirm 이벤트가 가 발생하지 않습니다 및 삭제 확인 의 편집/찾기 탭에서 확인 대화 상자의 옵션 대화 상자의 도구 메뉴에서 옵션을 클릭하면 대화 상자가 표시되지 않습니다.

그래서 나는 자신의 삭제 코드를 굴려 기본 동작을 피함으로써 모든 것을 피할 수 있습니다.

(예, 지난 몇 년 동안 내 게시물을 읽었을 때 간단히 기본 액세스 동작을 사용하는 것에 대한 조언은 매우 드뭅니다. 그러나 이것은 거의 대부분의 컨트롤이 적절하다고 생각하는 경우입니다. 모든 경우)