2016-12-22 1 views
0

A, B, C의 세 테이블이 있습니다. A와 B, B와 C 사이에 일대 다 관계가 있습니다.두 번째 테이블에서 레코드를 추가 할 때 하나의 테이블에서 레코드를 선택하고 ID를 사용하는 형식

테이블 A에 추가 된 모든 새 레코드에는 고유 한 정수 ID가 부여됩니다.

양식을 통해 표 B에 새 레코드를 추가 할 때, 사용자는 먼저 표 A의 레코드를 드롭 다운을 통해 선택하도록 요청됩니다.

테이블 A의 레코드에서 ID를 가져와 테이블 B에 레코드의 새 ID를 만들려면 0.001을 추가하는 방법을 알아 내려고합니다. 예를 들어 테이블 A의 ID가 30이면 테이블 B의 첫 번째 연관된 레코드는 ID 30.001을 가지게됩니다. 테이블 B의 두 번째 연관된 레코드는 ID 30.002를 가지게됩니다.

거기에서 동일한 생각을 표 C에 적용 할 수 있습니까? 즉, 사용자는 폼을 사용하여 드롭 다운을 통해 테이블 ​​B의 레코드를 선택한 다음 테이블 C의 연관된 레코드에 .001이 추가됩니다. 앞의 예제를 빌드하면 테이블 C의 첫 번째 연결된 레코드는 30.001.001이됩니다. 다음에 연결된 레코드는 30.001.002입니다.

ID 생성 종속성을 제외하고 양식이 만들어져 있습니다. 어떤 통찰력이라도 대단히 감사하겠습니다. 감사! 위에서 언급 한 바와 같이

+0

이것은 잘못된 디자인 같아 보입니다. 테이블 B에서는 테이블 A 외래 키 (예제에서는 30 개)와 테이블 B ID (예제에서는 001)에 대해 별도의 필드를 갖는 것이 더 좋습니다. 출력물이 30.001을 표시해야한다면,이 필드들을 연결하는 것은 사소한 일입니다. 이 디자인을 변경할 수있는 위치에 있습니까? – Chance

+0

저는 디자인을 100 % 통제하고 있습니다. ID/필드를 별도로 유지하는 데는보고/데이터 가져 오기의 관점에서 보면 더 쉬울 것입니다. – William

답변

0

, 그것은 나쁜 디자인,하지만 당신은이 일에 설정되어있는 경우 :

LastUsedID=Nz(DMax("ID","B","ID LIKE '" & A.ID & ".*'"), A.ID & ".000") 

은 최고 사용 ID 반환 (또는 전혀 사용하지 않은 경우 가짜 .000 일). 그런 다음 CLng(Right(LastUsedID,3))과 같은 것을 사용하여 숫자로 변환하고 하나를 추가하여 다시 텍스트로 변환 할 수 있습니다.

관련 문제