1

내 Access 데이터베이스에서 사용자 지정 기본 키를 만들고 싶습니다.사용자 지정 주 키에 액세스

데이터베이스가 여러 사용자가 될 것이므로 여러 사용자가 동일한 테이블에 새 레코드를 추가하려고 할 때도 각 키가 고유하도록하는 방법이 필요합니다.

사용자 정의 기본 키를 작성해야하는 이유는 데이터베이스가 제어 할 수없는 다른 외부 시스템으로 이동하는 감사 추적을 시작하기 때문입니다.

그러나이 다른 시스템에서는 12 문자 길이의 단일 사용자 정의 필드를 사용하여 우리가 선택한 데이터를 전달할 수 있습니다.

사용자 정의 필드를 사용하여 다양한 약어가있는 12 문자 코드를 기록하고 싶습니다. 나중에 추측 할 수 있습니다 (예 : 처음 2 자는 우리 부서의 부서와 관련되며 다음 3 문자는 제품과 관련됩니다.) 등등 ...)

Access에서 사용자 지정 키가 지뢰밭처럼 보입니다.

제 목적을 위해, 필자는 Access의 자동 번호 필드를 조합하여 필자가 원하는 기본 키를 만드는 데 도움이되는 종류의 타협을 볼 수 있습니다. 여기

내가 생각하고있는 작업은 다음과 같습니다

내가 그렇게 예를 들어, 부서 인 경우 인적 자원, 처음 2 개 문자는 항상 수, 나중에 우리의 사용자가 구축 될 수 추정 할 것입니다 코드의 부분 "HR"이되어야합니다.

그런 다음 내 "HR"항목이 채워진 동일한 테이블의 필드에 대해 일련 번호를 실행하도록합니다 ... 동일한 테이블에 2를 자동으로 연결하는 세 번째 필드를 얻을 수 있습니까? 질문)...? 이 같은 예 : 그 VBA에서 어떤 이벤트를 할 수있는 일이 있다면

| Department | AutoNumber | CustomPrimaryKey | 
| HR  |  1  |  HR1  | 

는, 그이 (나에게 코드를 보여 :)!) 좋은 것

두 번째 부분은 내가 할 수 있는지 여부가 될 것입니다 앞에 0이 사용자 정의 기본 키의 "고유 번호"부분을 보장와 연결할 수있는 일련 번호를 얻을 수 있었다 같은 같은 5 문자 공간 점유 99999 및 00001, 즉 사이 :

| Department | AutoNumber | CustomPrimaryKey | 
| HR  |  1  |  HR00001  | 
| HR  |  2  |  HR00002  | 

을 내가 것이 매우 어렵다 100,000 개 이상의 항목이 필요합니다.

가능한 한 안전합니다.

+1

귀하의 접근 방식은 나에게 들리지만 문제가있는 곳을 분명히 알지 못합니까? 당신은 "코드를 보여줘!"라고 언급합니다. (하지만 SO는 무료 코드 작성 서비스가 아닙니다). – pnuts

+0

죄송합니다 - 저는 VBA에 조금 익숙합니다.하지만 VBA 변수에 Department & AutoNumber의 연결을 저장 한 다음 양식의 일부 텍스트 상자에 밀어 넣기를 원합니다. 그래도 어떤 이벤트가 적절한 지 확인하십시오. 나는 아마도 'LEN'으로 선행 제로를 얻는 방법을 찾아 낼 수있을 것이다. –

답변

1

나는 당신이 당신이 필요로하는 것에 대해 완전히 분명하다고 생각하지 않기 때문에 대답보다는 주석으로 남기고 싶지만 가능한 한 최선을 다해 답변하려고 노력할 것입니다. 또한, 나는 "당신에게 코드를 보여줍니다!"라고하지 않을 것입니다. 당신이 가르치는대로 가르쳐주세요.

세 번째 필드를 자동으로 연결하는 첫 번째 질문은 실제로 필드가 채워지는 방식에 대한 질문입니다.

양식 입력을 거친 경우 해당 구성 요소 필드가 채워지는 컨트롤의 업데이트 이벤트 중에 모든 구성 요소 필드를 키 필드에 연결할 수 있습니다. VBA에서는 폼의 레코드 세트에 액세스하여 레코드 멤버를 쉽게 참조 할 수 있습니다.

이미 가져 오기 사양이있는 파일 가져 오기를 통해 필드를 채우는 경우 키 필드를 제외한 가져 오기를 수행 한 다음 가져온 테이블의 레코드 세트를 열고 레코드 세트를 반복합니다. ADO 레코드 세트 here.에 대해서도 배울 수 있습니다. 다시 필요한 코드가 무엇인지 모르기 때문에 코드를 작성하지 않습니다.

필자가 파서를 통해 필드를 채우는 경우에는이 방법을 설명 할 필요가 없을 것입니다.

두 번째 질문에 대해서는 format() 함수를 사용하여 문자열의 숫자를 쉽게 오른쪽 정렬 할 수 있습니다. 예를 들어 format(2,"00000")은 "00002"이고 format(210,"0000")은 "0210"을 산출합니다. string() 함수를 사용하여 변수를 정렬하려는 0의 수를 만들 수도 있습니다. 예를 들어 format(2054,string(12-len("HR"),"0"))은 "0000002054"

을 추가로 남기고 싶습니다. "내가 할 수있는 가능성은 희박합니다 ..."와 같이 준비하는 것은 결코 좋은 생각이 아닙니다. . 머피의 법칙은 B.의 고통입니다. 당신은 당신의 키가 처리 할 수있는 한도를 초과하는 조건을 고려해야합니다.

+0

감사합니다. 죄송합니다 "내게 보여줘 코드"코멘트 - 그것은 다소 혀로 - 뺨을 의미했습니다. 나는 코딩으로 시작하지만 누군가 나를 위해 일하는 것을 원하지 않을 것이다. 올바른 방향으로 약간의 뉘앙스가 필요하다. (단지'format'과' string'을 사용하면 매우 유용 할 것입니다.) –

관련 문제