2011-08-19 4 views
1

Ms 액세스 사용 ...tabledef에서 연결 문자열이 잘못 표시되었습니다.

Access에서 SQL Server 데이터베이스에 연결된 사용자를 변경하려고합니다. 내 액세스 응용 프로그램의 시작 양식이 Microsoft의 KB에 게시 된 루틴의 변경된 버전을 통해 테이블에 동적으로 연결됩니다. Essence에서는 호출 한 localName과 일치하는 테이블 정의를 삭제하고, Currentdb.CreateTableDef를 호출하여 적절한 새 연결 문자열로 새 테이블을 작성하고 CurrentDb.TableDefs 콜렉션을 추가합니다. 내가 볼 수있는 한, 실제로 데이터베이스에 접속하고 연결 문자열이 잘못되면 오류가 발생하는 append 함수입니다.

필자의 경우 데이터베이스에있는 모든 테이블을 원래의 패스 (기존의 표준화 된 문자열)로 호출하면 모든 테이블이 정상적으로 연결됩니다.

이제 데이터베이스의 여러 권한을 테스트 할 수 있도록 새 사용자/암호 조합으로이 시작 양식을 두 번 통과하려고합니다.

나는 수정 된 이름과 암호로 새 연결 문자열을 작성했으며 방금 설명한 기능을 통해 현재 하나의 스테핑입니다.

내가 새로 만든있는 TableDef이 들어있는 변수 TD을 가지고 있고 나는 Currentdb.TableDefs 수집 디버거에서

에 추가하기 직전이다 "즉치"창 ?td.connect은 새로 형성된 연결 연결 문자열을 제공합니다 문자열을 올바르게 입력하고 ?td.name은 테이블 이름으로 tblConfig을 제공합니다.

그냥있는 TableDef 올바르게 내가 직접 실행 창에서 ?CurrentDb.Tabledefs("tblConfig").Connect했다 현재 컬렉션에서 삭제되어

나는 다음 컬렉션이 그 이름을 가진 멤버를 포함하지 않았다 대화 상자로 보상을했다 보장하기 위해

CurrentDb.TableDefs.Append td 

그리고 지금은 디버거 직접 실행 창 및 응답에서 다시 ?CurrentDb.Tabledefs("tblConfig").Connect를 호출 라인을 통해 한 단계 이전 연결 문자열이 아닌 새로운 하나입니다.

이 루틴에는 OnError가 활성화되어 있지만 단일 스테핑 중에는 활성화되지 않습니다.

내가 생각할 수있는 유일한 설명은 어떻게 든 오래된 연결 문자열이 데이터베이스에 어떤 시점에 저장 한 결과로 디스크에 저장되고 마지막으로 추가 될 때 connectionstring을 통해 복사하지 않는다는 것입니다.

더 좋은 설명이 있습니까?

답변

0

새로운 연결 문자열에 대한 암호가 잘못되었습니다 (한 문자가 잘못됨). 문제가 발생하면 새로운 사용자 이름과 암호가 저장되지 않습니다.

이전의 사용자 이름과 암호로 이전 tabledef를 삭제 했음에도 불구하고 Access에서 다시 가져올 수있었습니다. 캐시 된 것일 수도 있고 잘 모르는 것일 수도 있습니다. 분명히 그것이 효과가 있었고 그래서 새로운 것보다는 그 문자열로 계속 이어졌습니다.

이전 문자열이 작동했기 때문에 오류가 발생하지 않았으므로 예상했던 것과 동일한 권한을 가지고 있지 않은 서버 로그인으로 테이블에 연결되었습니다.

+0

MS 액세스의 마법을 캐시 밝혀! –

관련 문제