2010-11-27 4 views
0

두 개의 하위 폼이있는 MS Access 2010 양식이 있습니다. 양식 뒤에있는 테이블과 일대일 관계를 정의했습니다. 두 가지 하위 양식을 모두 사용하여 해당 테이블에 레코드를 만든 다음 상위 폼의 외래 키를 업데이트해야합니다. 그러나 먼저 하위 양식을 채울 때 해당 테이블에 항목이 만들어 지지만 외래 키는 업데이트되지 않습니다. 자동으로 일어나지 않아야합니까? 또는 부모 폼의 필드를 업데이트하는 코드를 추가해야합니까?Ms Access 2010에서 서브 폼 통합이 원활하게 이루어지지 않습니다.

또한 메인 폼을 먼저 채우고 하위 폼으로 이동하기 시작하면 다음과 같은 오류 메시지가 나타납니다.
"Activations.dbBoxID '필드에 값을 입력해야합니다."(Activations 여기에 주요 양식이 있고 dbBoxID는 외래 키 필드입니다.)

또 다른 문제는 기본 테이블의 항목도 생성 될 때까지 하위 테이블에서 해당 테이블을 업데이트하지 않기를 바라는 것입니다 (예 : 기본 양식도 채워짐).

저는 MS Access를 처음 사용했습니다. 어떤 도움이라도 정말 감사 할 것입니다!

+0

양식이 거꾸로되어 있습니다. 외래 키를 저장하는 테이블은 CHILD 테이블이며 FK 값이 상위 폼으로 그려지는 테이블이있는 하위 폼에 있어야합니다. 그것이 LinkChild/LinkMaster 속성이 작동 할 수있는 유일한 방법입니다. –

+0

그건 의미가 있습니다. 나는 subform-parentform 관계가 이런 식으로 작동한다는 것을 몰랐다.저는 샘플 데이터베이스를 신속하게 작성했으며 완벽하게 작동했습니다. David 감사합니다! – Prashant

답변

0

상위 양식의 데이터를 먼저 입력하면 하위 양식이있는 양식이 더 잘 작동합니다. 그런 다음 하위 형식을 코드없이 각 테이블의 parent_key to foreign_key에 조인 할 수 있습니다.

사용자가 하위 양식의 레코드를 먼저 입력하도록 허용하려면 상위 폼이 완료되거나 저장 될 때까지 하위 폼을 업데이트하지 마십시오. 코딩을해야 할 것입니다. 왜 당신이 필요/원하는지 잘 모르겠습니까?

청구서 및 지불 하위 서식이있는 클라이언트 양식입니다. 예를 들어 충분한 클라이언트 데이터를 입력하여 레코드를 만들 수 있습니다. 그런 다음 청구서 및/또는 지불을 입력 할 수 있습니다.

+0

의미가 있습니다. 양식 계층 구조를 변경했는데 모든 것이 이제는 잘 작동합니다. :) 감사! – Prashant

2

여기서 누락 된 개념과 설명되지 않은 점은 액세스 할 때 마스터와 하위 관계를 구축 할 때 양식과 하위 양식을 사용하여 이러한 관계를 모델링 할 수 있다는 것입니다. 실제 테이블 및 이러한 테이블을 함께 결합한 결과가 아닌 쿼리

즉, 마스터 양식은 기본 테이블 또는 상위 테이블을 기반으로해야합니다. 자식 테이블에 가입하지 마십시오. 나는 이것을 다시 반복 할 것이다. 자식 테이블에 참여하지 말라.

따라서 마스터 또는 기본 폼을 쿼리에 기반 할 수 있지만 그렇게 할 때는 해당 쿼리의 하위 테이블에 참가하지 마십시오. 사실, 대부분의 경우 어쨌든 쿼리에서 폼을 사용하고 기반을 두는 것은 실제로 이점이 없습니다. 폼을 만들어 테이블에 올려 놓기 만하면됩니다.

동일한 메모가 하위 양식에 적용됩니다. 자식 폼은 자식 테이블을 기반으로합니다. 조인과 함 2 u 리를 g 용하지 마십시오.

오류 메시지가 나타나는 이유는 두 테이블을 기반으로하는 기본 폼에 대한 쿼리가 있기 때문입니다. 강제 관계로 기본 폼에서 하위 폼으로 포커스를 전환하면 기본 폼의 레코드 저장이 발생하므로 오류 메시지가 나타납니다.

그래서이 경우에는 두 테이블을 조인하는 쿼리를 기반으로하기 때문에 오류와 문제가 발생합니다.

+0

나는 서브 테이블을 쿼리가 아닌 실제 테이블에 기반을 두었다. 그러나 기본 폼은 외래 키가있는 테이블을 기반으로했다. 다윗이 말했듯이, 제 형태는 거꾸로되어있었습니다. 양식을 교환하면 문제가 해결되었습니다. 감사! – Prashant

관련 문제