2009-11-25 2 views
0

코드로 연결된 테이블에 연결하십시오. SQL 서버의 일부 연결된 테이블이 있습니다. 이들은 ODBC 연결로 링크됩니다. 연결시 암호가 저장되지 않습니다. Access table-view에서 테이블을 두 번 클릭하면 사용자 이름과 암호를 묻는 메시지가 나타납니다. 암호를 입력하면 테이블의 데이터를 볼 수 있습니다.코드로 연결된 테이블에 연결

내 문제는 내가 이런 식으로 열 전에 코드로 테이블에 액세스하려고 할 때입니다. 오류 # -2147467259, ODBC : 테이블 전에이 오류가 발생합니다 액세스하지 않고이 코드를 실행

Dim rst as new ADODB.Recordset 
Dim sql as string 
Sql = “SELECT * FROM LinkedTable” 
rst.Open sql, CurrentProject.Connection, adOpenForwardOnly, adLockReadOnly 

: 내가 뭘하려고하는 것처럼, 연결된 테이블에서 데이터 레코드를 엽니 다 ADODB를 사용하는 것입니다 : dns-name에 대한 연결에 실패했습니다.

그래서, 내 질문은 어떤 방법으로 데이터베이스를 열 때 실행할 수있는 코드로 데이터베이스에 연결할 수 있습니까? 또한 SQL 서버에 대한 비밀번호를 기억하지 않아도되므로 사용자에게 도움이됩니다.

+0

코드를 알려주십시오. "시도하기 전에 항상 테이블을 여는 것을 잊지 않는다"는 것은 무엇을 의미합니까? "전에 테이블을 열어 ..."라는게 무슨 뜻이야? – shahkalpesh

+0

"시도하기 전에 항상 테이블을 열어야한다는 것을 기억합니다 ..." Access에서 일반 테이블 뷰에서 테이블을 열 때입니다. 연결이 ODBC 인 경우 암호는 ODBC 연결 설정에 저장되지 않습니다. 그래서 링크 된 테이블을 더블 클릭하면 암호를 입력해야하는 로그인 프롬프트가 나타납니다. 이 작업을 잊어 버렸고 오류가 발생한 vba로 테이블에 액세스하려고 시도하는 것을 잊었을 때입니다. 코드에서 테이블에 액세스하는 데 ADOB.Recordset을 사용하고 있습니다. – Markus

답변

0

당신은 당신의 코드에서 연결 문자열을 사용할 수 있습니다, 그것은 이미 ADO를 사용하는 당신을보고, 충분히 쉽게 : http://www.connectionstrings.com/

당신은 당신이에 연결하고 SQL 서버의 버전을 찾아야합니다.

+0

그러나 양식을 사용하여 테이블을 원본으로 사용하는 경우에도 작동합니까? 나는 테이블에 액세스하기 위해 코드를 사용하지 않는 시간에 대해 이야기하고 있습니다. 사용자가 암호를 입력하지 않고도 테이블을 열 수 있다면 아주 좋을 것입니다. – Markus

+0

일반적으로 양식 및 보고서를 통한 경우를 제외하고는 사용자에게 표에 대한 액세스 권한을 부여해서는 안됩니다. 양식을 ADO 레코드 집합 (http://support.microsoft.com/kb/281998/EN-US/)에 바인딩 할 수 있습니다. 암호없이 테이블을 열려면 DSN을 설정하는 것이 가장 좋습니다. http://support.microsoft.com/kb/892490 – Fionnuala

+0

사용자가 절대로 테이블에 액세스해서는 안된다는 것에 동의합니다. ADO를 사용하여 양식, 보고서, 목록 상자, 콤보 상자 등에 레코드 세트를 바인딩하는 방법을 알아보아야 할 것입니다. 어쩌면 이것이 작동하는 해결책 일 수 있습니다. – Markus

1

ODBC와 ADODB 레코드 세트를 통해 연결된 테이블과 같이 함께 작동하지 않을 수도있는 2 가지 기술이 혼합되어있는 것처럼 보입니다. 연결된 테이블에서 DAO 레코드 세트를 열려고 했습니까? 액세스가의 양식과 콤보에

Dim rsSQL as ADODB.recordset, _ 
    rsACCESS as ADODB.recordset, _ 
    connectionSQL as ADODB.connection, _ 
    connectionACCESS as ADODB.connection 

set connectionSQL = New ADODB.connection 
set connectionACCESS = New ADODB.connection 

connectionSQL.properties(...) = enumerate your SQL parameters 
connectionACCESS.properties(...) = enumerate your ACCESS parameters (use currentproject.accessConnection if your access tables are local tables only) 

set rsSQl = New ADODB.recordset 
set rsACCESS = New ADODB.recordset 

rsSQL.open "SELECT * FROM ...", connectionSQL, <other parameters> 
rsACCESS.open "SELECT * FROM ...", connectionACCESS, <other parameters> 

링크하기 ADO 레코드 :

Dim rst as DAO.Recordset 
Dim sql as string 
Sql = “SELECT * FROM LinkedTable” 
set rst = currentDb.openRecordset(sql,<your parameters>) 

당신은 물론 2 개 ADODB 연결, 액세스 파일에 하나, 당신의 SQL 서버에 다른 하나를 통해 ADODB 레코드 집합을 사용할 수 있습니다 가능한. 그러나 양식을 만들 때이 기술은 주로 VBA 코드 (set me.recorset = ...과 같은 '개방형'이벤트에 작성해야 함)를 통해 관리해야하며 표준 '연결 테이블'기술은 사용자 친화적 인 ' 양식 - 디자인 '인터페이스.

+0

흠, 네가 맞다고 생각해. 내가 어떻게 해결할 지 지켜 볼 것이다. – Markus

관련 문제