2017-12-18 33 views
1

나는 DSN없이 오라클 데이터베이스에서 내 테이블을 반환 Excel에서 무언가를 가지고있다.액세스 패스 스루 DSN없는 오라클 쿼리

Dim db As DAO.Database 
    Dim qdf As DAO.QueryDef 
    Dim rs As DAO.Recordset 

    Set db = CurrentDb 
    Set qdf = db.CreateQueryDef("") 
    qdf.Connect = "ODBC;DRIVER={Microsoft ODBC for Oracle};CONNECTSTRING=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=" & IP & ")(PORT=XXXX))(CONNECT_DATA=(SERVICE_NAME=" & svcname & ")));" & _ 
    "Uid=" & Username & ";PWD=" & password &";" 


    qdf.Sql = "---some query" 

    qdf.ReturnsRecords = True 

    Set rs = qdf.OpenRecordset 

여기의 오류와 끝까지 : I Access에서 유사한 접근 방식을 원하지만, 나는이 시도

The error

아무것도 난 여기있을 수 있습니다 아니면 동등한이 없다 Access의 쿼리 테이블에 대한?

+0

Excel과 Access 간의 연결 문자열과 SQL이 완전히 동일합니까? 둘 모두의'Debug.Print'를 수행하여 비교를 위해 텍스트 편집기에 붙여 넣으십시오. – Parfait

+0

동일. 나는 복사하고 붙여 넣기를하고 있습니다. 또한 http://connectionstrings.com/oracle에서 연결 문자열을 확인하여 올바르게 사용하고 있는지 확인했습니다. 이것은 올바른 연결 문자열을 사용하여 얻는 오류입니다. 그 외의 경우 ODBC 오류가 발생합니다. –

+0

QueryTables에 해당하는 것과 마찬가지로, 레코드 세트 호출을 제거하고 변경 사항을 저장하기 위해 qdf,'Set qdf = Nothing'를 공개 한 후에'DoCmd.Open "mySavedQuery"'쿼리를 열면됩니다. 이것은 엑셀과 같은 엑셀을 열거 나 오히려 Excel과 같은 엑세스를 테이블과 같이 열 것입니다! – Parfait

답변

0

통과 쿼리를 작성하여 작동 시키십시오. 코드없이 PT 쿼리를 생성 + 실행할 수 있습니다. 액세스 UI로 PT 쿼리를 100 % 작동시킨 다음 코드를 시도합니다.

그래서 PT 쿼리를 만듭니다. 액세스 UI에서 해당 PT 쿼리를 클릭하면 작동합니까? 일단 (만 AFTER)이 쿼리 작업을 진행, 다음과 같은 코드에서 그 PT 쿼리를 실행할 수 있습니다 당신은 오라클 쿼리의 원시 SQL을 수정해야하는 경우

Dim rst  As DAO.Recordset 
Set rst = CurrentDb.OpenRecordset("qryPassR") 

하면, 당신은 갈 수 있습니다 :

Dim rst  As DAO.Recordset 

With CurrentDb.QueryDefs("qryPassR") 
    .SQL = "select * from tblHotels" 
    Set rst = .OpenRecordset 
End With 

그리고 당신은 상점 시저를 실행하려는 경우, 당신은 하나의 작업 PT 조회를 작성하면 그래서, 당신은 위와 같이 코드를 반복해서 사용할 수 있습니다

With CurrentDb.QueryDefs("qryPassR") 
    .SQL = "exec storeProc" 
    .ReturnsRecords = False 
    .Execute 
End With 

이동합니다. 코드에 연결 문자열 정보를 넣을 필요가 없습니다. PT 쿼리를 생성하면 연결 문자열을 저장하고 관리 할 수 ​​있습니다.

+0

VBA없이 PT를 통해 실행하려고 할 때 동일한 오류가 발생합니다. PT ODBC Conn Str 입력 내에서 동일한 Connectionstring 사용. 어느 connectionstring.com에 따르면 맞습니다. 그래서 나는 왜 나는 오류가 발생하는지 모르겠습니다. –

+0

새로운 연결을 만들 것입니다. 또 다른 방법은 ctrl-g을 눌러 디버그 창으로 이동 한 다음 입력하는 것입니다. currentdb.TableDefs ("링크 된 테이블 이름") Connect - 즉, 링크 된 테이블에서 기존의 알려진 연결을 가져 와서 사용합니다. 그래서 간단한 PT 쿼리가 Access UI에서 100 % 작동 할 때까지 VBA 코드를 시도 할 필요가 없습니다. 당신의 연결은 단순히 작동하지 않습니다. 연결된 테이블이 있습니까? (언급했듯이 그 연결 정보를 잡아). –

+0

그래서 하루가 끝나면 서버에 간단하고 기본적인 연결을 설정해야합니다. 연결된 테이블이나 다른 연결이 작동하지 않으면 코드에 대한 걱정은이 프로세스의 초기 단계입니다. 간단한 연결 테이블을 작동시켜야하고 기본 연결을 작동시켜야합니다. 단순히 연결을 작동시키는 것과 동시에 VBA 코드를 풀지 마십시오. 간단한 링크 테이블 작업을하십시오. 내 말은, 연결이 제대로 작동하지 않고 연결이되지 않는다면이 문제는 원래 질문 및 게시물과 관련이 거의 없습니다. –