2011-07-28 4 views
1

테이블의 변경 내용을 추적하려는 데이터베이스를 설계하고 있습니다.이 경우 "person"테이블과 같은 내 Access 사용자 인터페이스에서 사람 레코드 편집으로 표시되는 것은 실제로 내 PostgreSQL 백엔드에서 시간 스탬프와 사용자 이름 필드가 편집 한 시간과 사람을 반영한 새 레코드로 나타납니다.액세스 동작 - 레코드를 업데이트하려고합니다. 새 레코드를 삽입하고 타임 스탬프를 통해 이전 레코드를 추적하려고합니다.

우선, 이처럼 처음에는 디자인을 시도한 적이 없으므로이 감각적 인면에서 약간의 안심감이 좋을 것입니다. 그러나 내 기본 질문은이를 구현하는 방법입니다. 일반적으로 Access 폼은 레코드를 편집 할 수 있도록 설계된 것처럼 보입니다. 대신 액세스를 통해 새 폼을 삽입하기 위해 어떻게 동작을 바꿀 수 있는지 확실하지 않습니다.

나는 그것을 이해하기 때문에 BeforeUpdate 이벤트는 데이터베이스 수준 업데이트 전에 발생합니다.

  1. 데이터베이스 업데이트
  2. 업데이트가
  3. 널 recordId는 현장에서 함께 일하고 기록에 대한 접근의 타임 스탬프를 취소 내가 뭘 싶네요 것은 같은 코드 뭔가 내 양식의 BeforeUpdate 방법을 편집하다 이 레코드는 auto_increment 기본 키이므로 삽입시 새 recordid가 자동으로 할당됩니다.
  4. 내가 액세스 할 때 사용하는 레코드의 새 복사본을 삽입하십시오.
  5. 필요하다면 (필자는 생각 하나?) 방금 삽입 한 새 레코드에 내 액세스 양식을 가리 키십시오. 삽입 한 새 레코드를 찾으십시오. 삽입시 또는 자동 증가 기본 키가 생성 될 때 해당 참조를 얻을 수 있습니까?)

누구든지 제공 할 수있는 도움에 감사드립니다.

+0

아주 좋은 생각은 아닙니다. 그러나 Access 폼에서 데이터 입력 모드를 조사하고 싶을 수도 있습니다. –

답변

1

나는 Access에서 테이블을 업데이트하고 PostgreSQL 백엔드에 대한 insert 문을 만들 수 있습니다. 그것을 로그로 사용할 수 있습니다. 액세스의 현재 기록을 전환하려는 것은 복잡하고 불필요한 것처럼 보입니다. 기본 키를 변경하는 것은 무의미하며 다른 데이터베이스의 변경된 데이터 레코드를 참조하는 데 사용해야합니다.

폼 뒤에있는 코드에서 VBA를 사용할 수 있으며 현재 데이터로 다른 레코드를 만들 수 있지만 타임 스탬프 값으로 Now() 함수를 사용할 수 있습니다.

+0

+1 "대신"트리거를 사용하여 PostGreSQL 측에서이 작업을 수행 할 수 있습니다. http://developer.postgresql.org/pgdocs/postgres/sql-createtrigger.html – HansUp

+0

그래, 편집 및 삽입을 가로 채는 대신 그것은 새로운 레코드로서 Postgres 트리거를 사용하여 레코드를 편집하기 전에 원래의 복사본을 삽입합니다.이 복사본에는 Access에서 어쨌든 알 필요가없는 새 recordid가 할당됩니다. 그런 식으로 Access는 하나의 레코드로만 계속 작동하며 보관이 수행되는지 여부를 알 필요조차 없습니다. 이 말이 맞는 것 같아! –

관련 문제