2009-03-12 2 views
2
내가 ODBC 연결을 사용하려면 Access를 사용하여 Oracle 데이터베이스에 2003

MS-Access에서 ODBC SQL

를 연결하기 위해 노력하고있어

오라클에 연결하고 나는 그것을 설정하려면 암호를 입력 할 필요가 없습니다.

내가 가지고있는 문제 중 하나는 SQL 쿼리가 INTERFACE.Products를 사용하고 Access에서 기간을보고 파일을 여는 중입니다. IE Interface.MDB, 언제 내 SQL 쿼리의 일부. 이 단지 Oracle 데이터베이스에 그대로 쿼리를 보낼 것

Set rst = db.OpenRecordset(mQuery, dbOpenSnapshot, dbSQLPassThrough) 

:

Option Compare Database 

Function OracleConnect() As Boolean 

    Dim ws As Workspace 
    Dim db As Database 
    Dim LConnect As String 
    Dim myQuery As String 
    Dim myRS As Recordset 


    On Error GoTo Err_Execute 

    LConnect = "ODBC;DSN=Oracle;UID=user;PWD=password;" 

    'Point to the current workspace 
    Set ws = DBEngine.Workspaces(0) 

    'Connect to Oracle 
    Set db = ws.OpenDatabase("", False, True, LConnect) 

    myQuery = "Select * from INTERFACE.Products" 

    Set rst = db.OpenRecordset(myQuery) 


    rst.Close 
    db.Close 


    Exit Function 

Err_Execute: 
    MsgBox MsgBox("Error Number: " & Err.Number & " Message: " & Err.Description) 

End Function 

답변

3

당신이 뭔가를 시도 할 수 있습니다. 이 쪽지를 찾을 수 OpenRecordsetAccess documentation에서

:

에서는 Microsoft Access 작업 공간에서 레코드를 열고 유형을 지정하지 않으면 OpenRecordset 테이블 타입의 레코드를 작성합니다.

이 정보는 오류의 소스 일 수 있습니다. 기본 동작은 항상 일치하지 않습니다 그것은 이상한 오류를 생성 할 수 있습니다

는 원칙적으로, 나는 항상 OpenRecordset에 파라미터에 명시하는 것이 좋습니다 것입니다.

디자인에 대한 확신이 없지만 Access에서 링크 된 테이블을 만드는 것이 더 쉽습니다.
그런 경우 로컬 테이블 Products 인 것처럼 INTERFACE.Products Oracle 테이블에 대한 쿼리를 작성할 수 있습니다.
연결을 직접 관리하지 않아도됩니다.

0

만들고있는 레코드 집합은 Access SQL로 작성된 쿼리를 사용해야합니다. 테이블은 Access 테이블 (mdb에 정의 된 테이블)이어야합니다. 로컬 테이블 또는 링크 된 테이블이 될 수 있습니다. 액세스 테이블에는 "." (점). Access에서 Oracle 테이블 INTERFACE.Products를 링크하려는 경우 INTERFACE_Products가됩니다 (Access는 Access에서 이름을 바꾸지 않는 한 원격 데이터베이스 테이블 이름에 "_"이있는 잘못된 문자를 대체합니다). 따라서 쿼리는 "Select * from INTERFACE_Products"여야합니다.

Oracle SQL을 사용하여 레코드 세트를 만들 수는 있지만 통과 쿼리로 만들어야합니다.