2010-08-03 27 views
10

Çeşitli VBA projelerini Oracle 10g arka ucuna ADO (2.8) ve TNS kullanmadan bağlamaya çalışıyorum. Çeşitli denemeden sonra temiz bir kurulum için adımların basit dizisi içerir karar verdik:Klasik ADO/ODBC/Oracle 10g için bağlantı dizesi sözdizimi EZConnect

  1. (ekteki ODBC sürücüsü
  2. yükleyin aracılığıyla EZConnect kullanarak bağlantısını test Oracle Instant Client
  3. kurun SQL Plus)
  4. (Windows DSN oluşturarak bağlantısını test) buraya kadar

Her şey iyi çalışır. Sorun "MyTest Oracle" (tırnak işaretleri) olarak benim ODBC sürücü listesinde görünür anlık istemci ODBC sürücüsü kullanmak için ADO anlatmak için sözdizimi çözemiyorum vardır. EZConnect ile birlikte this post olarak MSFT ODBC sürücüsünü kullanmak, anlık istemciyi kurmadan önce yaptığından daha iyi çalışmadığını gösterir (yani, hiç değilse). Ama this post o tam olarak nasıl belirtmeden, mümkün önermek görünüyor ve connectionstrings.com sadece dizesi veri kaynağı bölümü AServer @ yani SomeUser/birşifre, neye benzediğini söyler: PortNumber/ınstancename

Kısa versiyon : nedir anlık bir istemci ODBC sürücüsünü başvuran klasik bir ADO bağlantı dizesinin tam sözdizimi? Yardımlarınız için şimdiden

teşekkürler. ... Bana SO gidiyor almak için bir aptal uzun zaman aldı

+0

Bu gönderi http://forums.oracle.com/forums/thread.jspa?threadID=621679&tstart=90 neden MSFT'nin ODBC sürücüsünün ORCL anlık istemcisini sevmediğini açıklıyor gibi görünüyor - desteklemediği DLL'ler sunuyor ODBC için bağımlılıklarını dahil etmeden. Ben IC klasörüne bunları kopyalanmış bir kez bile yapabileceğim Maalesef hiçbir şey bu bağımlılıkları görmek için msft en sürücüsü tanınacak. – downwitch

+0

İşteyim (Şu an evdeyim, saat dilimim CET), bunu her zaman yapıyoruz. Var olan bir Access DB var ve bazen yeni bir Oracle DB eklendiğinde temel olarak kontrol merkezine bir ODBC bağlantısı ekliyorum (burada anlatıldığı gibi bir şekilde http://support.microsoft.com/kb/303968) Şimdi gidip sonra Access DB'deki passthru nesnesini kopyalayın ve DB adını bu sonsuz uzun dizede değiştirin. Sanırım bu uzun ipi arıyorsun. Eğer sorunuz hala yarın cevapsız ise, bu dizeyi yapıştırmam gerekebilir ve yardımcı olabilir. – hol

+0

Yardımlarınız için teşekkürler, ancak aslında "en doğal" sözdiziminde doğrudan Oracle sunucusuna bağlanmak istiyorum. EZ Connect ya da bu yazı gibi bir bağlantı dizesi gömülü TNS, http: // www.codeproject.com/KB/vbscript/connection_string.aspx ancak ilk yorumumda tarif ettiğim gibi başarısız. – downwitch

cevap

2

bu deneyin ve uygun şekilde değerlerini değiştirin:

Set Connection = CreateObject("ADODB.Connection") 

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

instantclient Oracle HKEY_LOCAL_MACHINE \ SOFTWARE kontrol çalışmazsa \ ODBC \ ODBCINST.INI \ ODBC Sürücüleri kayıt defteri anahtarı, Oracle Instant Client için değerin ne olduğunu görmek için (eklenen bir sürüm numarası olabilir). Bu hala senin için

çalışmazsa. Olanların ayrıntılarını içeren bir yorum bırakın ve cevabı sizin için ayarlamaya çalışacağım.

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 

The: - benzer

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

'(DEMO 've bunun gibi bağlamak user1206604 cevabı bir ODBC ODBC veri kaynağı yöneticisi kullanarak bağlantı Örnekteki uğruna biz adını vereceğiz) kurmak' ODBC veri kaynağı yöneticisi başlangıç ​​menüsü> Programlar> Oracle içinde (benim makinede) bulunursa - oraClient10g> Yapılandırma ve Göç Araçlar> Microsoft ODBC yöneticisi ve şöyle görünür:

ODBC Data Source Administrator

+0

Bu hayatımı kurtardı. Teşekkür ederim! Sadece "Dim connStr, QueryString As String" i bildirmek ve döngüye "api.MoveNext" eklemek zorunda kaldı. – SeaBass