2010-08-03 25 views
10

Tôi đang cố gắng kết nối các dự án VBA khác nhau với đầu cuối Oracle 10g bằng ADO (2.8) và không có TNS. Sau những nỗ lực khác nhau, chúng tôi đã quyết định rằng loạt đơn giản nhất của bước này cho một cài đặt sạch bao gồm:Cú pháp chuỗi kết nối cho ADO/ODBC/Oracle 10g EZConnect

  1. Thiết lập một Oracle tức thì khách hàng
  2. Cài đặt trình điều khiển ODBC kèm
  3. (Kiểm tra các kết nối sử dụng EZCONNECT qua SQL Plus)
  4. (Kiểm tra kết nối bằng cách tạo Windows DSN)

Mọi thứ đến đây hoạt động tốt. Vấn đề là, tôi không thể tìm ra cú pháp để yêu cầu ADO sử dụng trình điều khiển máy khách tức thì ODBC, xuất hiện trong danh sách trình điều khiển ODBC của tôi là "Oracle trong MyTest" (không có dấu ngoặc kép). Sử dụng trình điều khiển MSBC ODBC với EZConnect là this post cho thấy không hoạt động tốt hơn trước khi thiết lập ứng dụng khách (tức là không nói gì cả). Nhưng this post dường như cho thấy nó có thể, mà không nói rõ chính xác như thế nào, và connectionstrings.com chỉ cho bạn biết phần Data Source của chuỗi trông như thế nào, tức là SomeUser/SomePassword @ AServer: PortNumber/InstanceName

phiên bản ngắn: là gì cú pháp chính xác của chuỗi kết nối ADO cổ điển tham chiếu trình điều khiển ODBC của máy khách ngay lập tức?

Cảm ơn trước sự giúp đỡ của bạn. Đã cho tôi một thời gian dài ngu ngốc để đi với SO ...

+0

Bài đăng này http://forums.oracle.com/forums/thread.jspa?threadID=621679&tstart=90 dường như giải thích tại sao trình điều khiển ODBC của MSFT không thích ứng dụng khách ORCL - nó cung cấp các tệp dll mà nó không hỗ trợ cho ODBC mà không bao gồm các phụ thuộc của họ. Thật không may là không có gì tôi có thể làm sẽ nhận được trình điều khiển của MSFT để xem những phụ thuộc ngay cả khi tôi sao chép chúng vào thư mục IC. – downwitch

+0

Tại nơi làm việc (Tôi đang ở nhà bây giờ, múi giờ của tôi là CET), chúng tôi luôn làm việc này. Có (một hiện tại) DB truy cập và đôi khi khi một Oracle DB mới được thêm vào tôi về cơ bản thêm vào trung tâm điều khiển một kết nối ODBC (somwhat như mô tả ở đây http://support.microsoft.com/kb/303968) tiếp theo tôi đi và sau đó đi sao chép đối tượng passthru trong Access DB và thay đổi tên DB trong chuỗi dài vô tận này. Tôi đoán bạn đang tìm kiếm chuỗi dài này. Vâng, nếu câu hỏi của bạn vẫn chưa được trả lời vào ngày mai tôi có thể cần phải dán chuỗi đó và nó có thể giúp đỡ. – hol

+0

Cảm ơn sự giúp đỡ của bạn, nhưng tôi thực sự tìm cách kết nối trực tiếp với máy chủ Oracle theo cú pháp "tự nhiên nhất" của nó, hoặc là EZ Connect hoặc một loại kết nối chuỗi TNS nhúng như bài viết này mô tả cách sử dụng http: // www.codeproject.com/KB/vbscript/connection_string.aspx nhưng thất bại như tôi đã mô tả trong bình luận đầu tiên của tôi. – downwitch

Trả lời

2

Hãy thử điều này và thay thế các giá trị phù hợp:

Set Connection = CreateObject("ADODB.Connection") 

blnTest = Connection.Open("Driver={Oracle in instantclient};Dbq=127.0.0.1:1521/SERVICENAMEHERE", "USERNAME", "PASSWORD") 

Nếu Oracle trong instantclient không hoạt động kiểm tra HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC \ Khóa đăng ký trình điều khiển ODBCINST.INI \ ODBC để xem giá trị của Oracle Instant Client (có thể có một số phiên bản được thêm vào).

Nếu điều này vẫn không hiệu quả với bạn. Để lại một bình luận với các chi tiết về những gì đã xảy ra và tôi sẽ cố gắng điều chỉnh câu trả lời cho bạn.

0
' Create a connection object.' 
Dim cn As ADODB.Connection 
Set cn = New ADODB.Connection 

' Create a recordset object.' 
Dim rs As ADODB.Recordset 
Set rs = New ADODB.Recordset 

' Provide the connection string.' 
Dim strConn As String 
Dim str As String 

'Use the SQL Server OLE DB Provider.' 
strConn = "Driver=(Oracle in OraHome92);" & "Data Source=;Uid=;Pwd=;" 

'Now open the connection.' 
cn.Open strConn 
With rs 

    ' Assign the Connection object.' 
    ActiveConnection = cn 

    ' Extract the required records.' 
    .Open "SELECT ", cn 


End With 
4

Tương tự như 'câu trả lời user1206604 của - tôi thiết lập một kết nối ODBC sử dụng ODBC Data Source Administrator (vì dụ của chúng ta sẽ đặt tên nó 'DEMO') và kết nối như thế này:

Dim conn As New adodb.Connection 
Set conn = New adodb.Connection 

connStr = "Provider=OraOLEDB.Oracle;Data Source=DEMO;User Id=yourUserID;Password=yourPassword;" 
conn.Open connStr 

Dim api As New adodb.Recordset 
Set api = New adodb.Recordset 

yourQueryString = "SELECT foo FROM bar" 
api.Open yourQueryString, conn, adOpenDynamic, adLockReadOnly 
'adjust above setting as needed 

while not api.EOF 
    'do interesting stuff here 
wend 

'clean up resources 
api.Close 
Set api = Nothing 

conn.Close 
Set conn = Nothing 

Các ODBC quản trị nguồn dữ liệu được tìm thấy (trên máy tính của tôi) trong menu start> Programs> Oracle - oraClient10g> Cấu hình và Migration Tools> Microsoft quản trị viên ODBC và trông như thế này:

ODBC Data Source Administrator

+0

Điều này đã cứu mạng tôi. Cảm ơn bạn! Chỉ cần khai báo "Dim connStr, yourQueryString As String" và thêm "api.MoveNext" vào vòng lặp. – SeaBass

Các vấn đề liên quan