2009-07-09 4 views
0

SQL Server 테이블이있는 작은 Access 2007 UI를 디자인하고 있습니다.양식에 대한 일부 액세스 2007 프로그래밍 질문

내 페이지에 데이터 시트 인 하위 폼이 있습니다. 양식보기에서 선택된 모든 상위 레코드 (예 : 테이블 A 및 테이블 B는 테이블 A의 외래 키를 가짐)에 대해 데이터 시트의 모든 관련 레코드를 작성하려고합니다.

고객이 5 명 있습니다. 각각에는 몇 가지 명령이 있습니다. 양식을 통해 고객을 검색 할 수 있습니다. 하지만 다음 버튼을 클릭 할 때마다 관련 주문을 모두 데이터 시트에 표시하려고합니다 (데이터 시트를 통해 새 레코드를 쓸 수 있음).

또한 데이터 시트 (주문이라고 가정)에서 현재 표시된 고객 기록과 동일한 ID로 자동으로 PK ID 값을 설정할 수 있습니까?

감사

답변

0

내가 올바르게 읽고 있어요 경우, 당신은 당신이 양식의 주요 부분으로 메인 부모 테이블을 가지고 말을하는지, 당신은 당신이 주위를 탐색 할 때 자식 레코드가 서브 형태로 표시합니다 . 기본적으로 액세스는이 방법으로 작동하며 코드를 전혀 작성하지 않아도됩니다.

하위 레코드에 하위 레코드를 추가하면 외래 키 값이 올바르게 설정됩니다. 다시 코드가 필요 없습니다.

따라서 기본 상위 테이블을 기반으로 표준 양식을 작성하십시오. 그런 다음 하위 테이블을 기반으로 연속 양식을 작성하여 위의 기본 양식에 드롭 할 수 있습니다.

그러면 데스윙 모드에서 기본 폼을 열고 하위 폼 속성 시트를 설정합니다. 이 속성 시트에서 링크 마스터 및 링크 하위 필드를 설정하기 만하면됩니다. 링크 마스터는 기본 양식의 기본 키로 설정되고 링크 하위는 하위 양식의 테이블에서 외래 키 필드로 설정됩니다.

위의 작업을 완료하면 코딩 작업없이 모든 작업이 완료됩니다. 아이 추가 오류 메시지에 대해서는


: 그들은 새로운 고객 레코드를 탐색 할 때까지

당신이 주요 고객 양식을 가정하면, 다음 사용자가 순서를 추가 할 수 없습니다. 새 고객 레코드로 이동하지 않으면이 주 폼에서 기존 고객을 편집하게됩니다. 따라서 모든 경우에 고객 주문을 입력하기 전에 주요 고객 기록이 항상 추가됩니다.

사용자가 빈 고객 레코드로 이동 한 다음 커서 (포커스)를 주문이있는 하위 양식으로 이동하고 입력을 시작한다고 가정합니다. 이 시나리오에서도 포커스가 주요 고객 양식에서 주문 하위 양식으로 이동하면 빈 고객 레코드가 추가됩니다. (따라서 기본 UI 기본 양식과 하위 양식 설정을 사용하는 경우 액세스 UI가 상위 레코드 추가를 처리합니다)

그래서 사용자 인터페이스 관점에서 볼 때 실제로 사용자는 불가능할 것입니다 이미 주요 고객 기록없이 주문을 입력 할 수 있습니다. 이 때문에 부모 고객 기록이 없다는 오류 메시지가 표시되지 않습니다. 그 사람이 비 (非) 하위 양식으로 주문 양식을 열고 새 주문 레코드를 추가하려고 시도하는 경우에만이 종류의 오류를 가져올 것입니다. 이 경우 오류 메시지가 나타납니다. 따라서이 오류 메시지를 잡아낼 필요가 없습니다. 사용자가 독립형으로 하위 양식을 열도록 허용하지 않습니다.이상한 이유로 하위 양식을 기본 양식과 분리하여 열 수있게하려면 additons = false를 사용하여 양식을 연다 (오류 메시지가 다시 필요하지 않도록).

사용자가 하위 양식이나 주문 양식을 별도로 열고 허용 추가 기능을 사용 중지하지 않은 경우 사용자가 새로운 빈 레코드로 이동할 수 있다고 가정합니다. 고객 레코드에 대한 FK가 올바르게 설정되지 않는다는 것을 의미합니다. 정말 오류 메시지를 트래핑되지 않은 의미에서 다시 한번

If isnull(foreign key field name goes here) = true then 
    Msgbox “ you must select a customer before you can enter an order” 
    Cancel = true 
End if 

을이 주문 조항이 고객을 선택하는 양식이 있다면, 당신은 가장 확실하게이 주문 양식의 업데이트 이벤트 전에 다음 코드를 넣을 수 있습니다 부모 레코드가 없으면 자식 레코드가 추가 될 것입니다. UI 인터페이스를 사용하여 사용자에게 오류 메시지가 처음부터 발생하지 않도록 조치를 취하도록 알려줍니다.

+0

고마워요! 이전에이 작업을했는데 연습이 필요했습니다. 단일 고객 행이 없을 때 사용자가 레코드를 추가하지 못하도록하는 방법이 있습니까 (이 경우 Orders)? Access에서 오류가 발생했습니다 (세부 정보를 기억할 수 없음). 오류 메시지/상자에서 Access의 오류를 재정의 할 수 있습니까? – dotnetdev

+0

테이블 B의 외래 키가 필요한 경우 데이터 베이 스 엔진이 오류를 발생시켜야합니다. 폼에는 Form_Error 이벤트가있어 모든 데이터 오류가 발생합니다. – Mark3308

관련 문제