2009-11-30 6 views
1

Access 2003에서 동적 양식을 만듭니다. 양식을 열 때마다 "키워드"테이블을 기반으로하여 콤보 상자가 만들어집니다. 내 코드는 오래된 상자 (또는 해당 레이블, 나는 잘 모르겠다)를 삭제하는 데 어려움을 겪고 있으며 첫 번째가 중복 된 이름 (런타임 오류 '2450')에 매달린 후 모든 열기가 발생합니다.동적 액세스 양식

둘째, "checked"키워드를 포함하는 접합 테이블은 낮은 한정 량으로 채워집니다.

셋째, 접합 테이블 레코드를 기반으로 콤보 상자를 채우는 방법을 알아낼 수 없습니다. 양식이로드되면 상자는 항상 선택 취소됩니다.

도움 주셔서 감사합니다.

+1

귀하의 목표를 epxlain하십시오. 필요할 때 컨트롤을 만드는 사람들에게 대안을 줄 수 있습니다. 또한 MDE/ACCDE로 앱을 배포하는 경우에는 불가능합니다. –

+1

두 번째로 Tony의 요점 - 런타임에 컨트롤을 만드는 것이 장기적으로 작동하지 않을 것입니다. 결과적으로 컨트롤의 700 배 이상의 상한선에 도달하게되고 새로운 폼으로 다시 시작해야합니다. Access 97과 함께 제공되는 복제 충돌 해결 마법사는 Michael Kaplan이 작성한 것으로, Jet 및 SQL Server 용으로 모두 사용하기 전에 시작되었습니다. 그는 폼에 510 개의 보이지 않는 컨트롤을 추가 한 다음, 700 개의 컨트롤 한계 (정확한 숫자는 잊어 버렸습니다. 직관적 인 것이 아닙니다) 때문에 폼에 510 개의 보이지 않는 컨트롤을 추가 한 다음 필요했던 것들을 나타 냈습니다. –

+0

목표 1 : 사용자가 레코드에 "키워드"를 할당 할 수 있습니다. 목표 2 : "키워드"가 업데이트되면 양식을 쉽게 수정할 수 있습니다. ("키워드"가 변경되어 양식에 하드 코딩하는 것이 이상적이지 않습니다.) MDE의 헤드 업에 감사드립니다. 이 앱은 사내 앱이지만 향후 알게 될 것입니다. 또한 키워드/컨트롤이 200 개 미만입니다. 이전 컨트롤/레이블을 삭제하는 첫 번째 문제가 해결되었습니다. 그러나 접합 테이블의 레코드 수 제한은 "키워드"테이블의 레코드 수로 나타납니다. 이견있는 사람? –

답변

1

키워드 및 주요 레코드 당 하나의 레코드가있는 접합 테이블에 바인드 된 연속 하위 폼을 사용하는 것이 좋습니다. kwyword는 콤보 상자입니다. junction 테이블의 foriegn 기본 레코드 키와 foriegn 키워드 키 모두에 기초한 "dupe check"인덱스가 있는지 확인하십시오.

+0

필자는 설명하는대로 접합 테이블을 설정했다고 생각하고 접합 레코드 당 하나의 키워드 ID와 기본 레코드 ID를 저장합니다. 그러나 접합 테이블은 키워드 테이블보다 많은 레코드를 저장하지 않습니다. 왜 그런가요? 어떻게 수정합니까? 또한 하위 폼을 연속으로 만드는 이유는 무엇입니까? 도와 주셔서 감사합니다! –

+0

양식 기본보기를 연속 양식으로 변경하십시오. 레이블을 머리글로 이동하고 컨트롤을 이동하여 가로로 실행합니다. 또는 마법사를 사용하여 새 폼을 만들지 만 테이블로 만듭니다. –

+0

레코드를 추가 할 수 없을 때 어떤 메시지가 나타납니다. 색인에 중복이 허용되지 않는 것으로 지정된 외래 키가있는 것 같습니다. –

0

양식을 닫을 때 생성 된 컨트롤을 명시 적으로 삭제합니까? 액세스가 이런 식으로 처리되는 방법을 잘 모르겠지만 델파이에서는 컨트롤을 만들고 폼에 코드를 넣을 때 폼이 파기 될 때 컨트롤이 파괴되지 않습니다. 이 작업을 수행하려면 새 컨트롤의 owner 속성을 폼으로 설정해야합니다. 아마도 Access에도 비슷한 가능성이 있습니까?

+0

폼이로드되면 컨트롤이 업데이트됩니다.먼저 오래된 것들은 삭제되고, 새로운 것들은 모두 "keywords"테이블에 기초하여 생성됩니다. 컨트롤이 접합 테이블을 업데이트하기 위해 폼에 바인딩 될 수 없습니다 (이 양식이 다른 테이블에 바인딩되어 있기 때문에) –

+0

액세스 폼은 델파이 폼이 아니므로 델파이의 작동 방식은 아무 관련이 없습니다. 런타임에 추가 된 컨트롤은 현재 인스턴스뿐 아니라 폼의 총 수명 동안 양식에 추가 할 수있는 컨트롤의 최대 수를 카운터를 증가시킵니다. 이것은 접근 방식입니다. 동적으로 컨트롤을 추가하는 것은 나쁜 생각입니다. 또한 MDE에서는 디자인 변경이 허용되지 않으므로 MDE에서는 작동하지 않습니다. –