/ / MS-Access ODBC Połączenie z Oracle for SQL - oracle, ms-access, odbc

MS-Access ODBC Połączenie z Oracle dla SQL - Oracle, MS-Access, odbc

Próbuję połączyć się z bazą danych Oracle za pomocą programu Access 2003.

Chcę użyć połączenia ODBC i chcę je skonfigurować, aby użytkownik nie musiał wprowadzać hasła.

Jednym z problemów, które mam, jest to, że moje zapytanie SQL używa INTERFACE.Products i Access widzi kropkę i myśli, że próbuję otworzyć plik. IE Interface.MDB, gdy jest to część mojego zapytania SQL.

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

Odpowiedzi:

3 dla odpowiedzi № 1

Czy możesz spróbować czegoś takiego:

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

To po prostu wysłałoby zapytanie dosłownie do bazy danych Oracle.

w Dostęp do dokumentacji dla OpenRecordset znajdziesz tę notatkę:

Jeśli otworzysz zestaw rekordów w obszarze roboczym Microsoft Access i nie określisz typu, OpenRecordset utworzy zestaw rekordów typu tabelowego.

Może to być przyczyną występującego błędu.

Z reguły sugerowałbym, aby zawsze podawać wyraźne parametry w parametrach OpenRecordset: zachowanie domyślne nie zawsze jest spójne i może generować dziwne błędy.

Nie jestem pewien co do twojego projektu, ale jednym ze sposobów na ułatwienie może być po prostu tworzenie połączonych tabel w programie Access.
W takim przypadku możesz napisać zapytania do swojego INTERFACE.Products Tabela Oracle, jakby była lokalna Products stół.
Pozwoliłoby to również zaoszczędzić Ci konieczności samodzielnego zarządzania połączeniami.


0 dla odpowiedzi nr 2

Tworzony zestaw rekordów musi używać zapytanianapisane za pomocą Access SQL. Tabela musi być tabelą dostępu (tabelą zdefiniowaną w mdb). Może to być tabela lokalna lub tabela połączona. Tabela dostępu nie może zawierać „.” (kropka) w nazwie. Jeśli miałbyś połączyć tabelę Oracle INTERFACE.Products w programie Access, byłoby to INTERFACE_Products (Access zastąpi niedozwolone znaki w nazwie tabeli zdalnej bazy danych literą „_”), chyba że zmienisz jej nazwę w Access. Dlatego zapytanie powinno brzmieć „Wybierz * z INTERFACE_Products”

Możliwe jest utworzenie zestawu rekordów przy użyciu Oracle SQL, ale należy go utworzyć za pomocą zapytania tranzytowego.