Newsgroup: it.comp.lang.visual-basic
Titolo: Accesso ad Oracle via ODBC

Ciao a tutti,
Ho un problema con un cliente per un accesso a un loro DB via ODBC.
Fino ad oggi ho usato un driver ODBC prodotto da Oracle per Oracle9 e io 
  via DAO non ho mai avuto problemi a lavorarci.
Ora questi hanno dovuto sostituire il PC e i loro tecnici Oracle hanno 
sostituito il driver che funzionava, a loro dire perchč dava dei 
problemi con WinXP, con uno Microsoft che non dovrebbe dare problemi, ma 
il mio programma non si connette piů :)
Adesso io per aprire il DB uso:
     strLConnessioneODBC = "ODBC;DATABASE=" & DataBaseName & ";" & _
                           "UID=" & UserID & ";" & _
                           "PWD=" & Password & ";" & _
                           "DSN=" & DSN
     Set dbOdbcDataBase = wsOdbcWorkSpace.OpenDatabase("", _
				dbDriverNoPrompt, ReadOnly, _
				strLConnessioneODBC)
E' corretto?
Qualcuno ha avuto problemi di questo tipo?
Quale altro problema potrebbe essere dato che loro mi assicurano che la 
utente e password sono corrette?
Grazie
Ciao


domanda cretina: il dsn è stato configurato anche sulla macchina nuova?
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

 
Loro dicono di sì, come DSN di sistema.
Ciao

 Qualcuno ha avuto problemi di questo tipo?
Se e' quello che penso, devi eliminare la parola chiave DATABASE= che non ha
nessuno scopo nella connessione ad Oracle; mentre il driver Oracle la
ignora, quello Microsoft la segnala come parola chiave non supportata (o
qualcosa del genere).
Puoi tranquillamente toglierla anche per il futuro perche', ripeto, a quanto
mi risulta non serve; tutte le informazioni per la connessione ODBC sono
date dal nome utente e dall'alias indicato nel DSN.
Ciao
-- 
Luca Dormio - 
luca....@tin.it
________________________________
"Marty, non stai ragionando in maniera quadridimensionale"
Dr. Emmett L. Brown

 il mio programma non si connette piů :)
La prima prova da effettuare č una connessione ad Oracle dal client senza
passare dal tuo programma (per esempio tramite Sql+).
In questo modo verifichi che i file di configurazione  tnsnames.ora e
sqlnet.ora del client siano a posto.
Fatto ciň verifica che il Sid che compare nel file tnsnames.ora (dovrebbe
esserci '(CONNECT_DATA = (SID = ***))' ) sia lo stesso che trovi in ODBC
sotto la voce "server" e che la voce "nome origine dati" sempre di ODBC sia
la stessa che hai messo nella tua connessione alla voce DSN.
termoPilucco

 la stessa che hai messo nella tua connessione alla voce DSN.
Sai che non ho capito una parola?
SQL+?
*.ora?
SID?
Ma che sono?
Io dovrei avere solo un DSN, un user ID e una password...
Ciao

 qualcosa del genere).
Ma qualcuno ha un db Oracle su cui provare?
Il mio problema è che 'sto cliente mi sta a 300km e io non ho nessun Oracle
server...
Grazie!

 ha scritto nel messaggio
news:tFL0c.45731$gk.19...@news3.tin.it...

Non ho bisogno di provare, nei nostri programmi lo omettiamo da un pezzo, e
funziona con entrambi i driver... il punto e' se il tuo problema e'
riconducibile a questo oppure no; il sintomo pero' (errore con driver MS e
non con driver Oracle) mi sembra quello tipico.
Ti ripeto, prova ad eliminare quell'attributo, che comunque non viene
considerato da nessuno dei due driver; nel peggiore dei casi non risolve il
problema ma non ne aggiunge altri.
Per quanto riguarda il messaggio di termopilucco, per poter configurare
correttamente un DSN Oracle occorre che venga creato (tramite l'utility 'Net
easy config' o smanettando direttamente nel file TNSNAMES.ORA) un alias dove
vengono definiti nome del server, protocollo e porta, nome dell'istanza;
fatto questo, nel DSN viene specificato soltanto nome dell'alias e nome
utente. Se i tecnici hanno solo cambiato driver ODBC non dovrebbero nemmeno
averlo toccato.


In data Mon, 01 Mar 2004 16:17:10 +0100, Zanna ha scritto:
[cut]
Io ho sempre usato questo codice, sia per MS SQL sia per Oracle 8.1.7 con
driver Microsoft ODBC for Oracle
Public Function StartConnection(DSN As String, User As String, Password As
String) As Boolean
   Dim ConStr As String
 
   On Error GoTo ErrorHandler
 
   ConStr = "UID=" & User & ";PWD=" & Password & ";"
   Set DbEnv = rdoEnvironments(0).OpenConnection(DSN, rdDriverNoPrompt,
False, ConStr)
   StartConnection = True
   Exit Function
 
ErrorHandler:
End Function
Ciao
Stefano "HappyMan" (Lake Maggiore - Italy)
-- 
The Personal Framework for Object Oriented Windows Development (Win32)
http://www.sgr.info
Email happyman69 (at) 
despammed.com

 Io dovrei avere solo un DSN, un user ID e una password...
Sě dal punto di vista del programmatore, sě.
Dal puntyo di vista sistemistico dovrebbe funzionare in questo modo:
Il driver ODBC di MS per Oracle prevede la voce 'server'.
Tale voce non č necessariamente il nome del server, ma in generale puň
essere un identificatore dell'istanza del servizio Oracle.
In tal caso il client per sapere dov'č il server relativo ad un SID, legge
il file tnsnames.ora (creato sul client stesso dall'installazione dei driver
client di Oracle).
Dentro tale file si trovano dei blocchi di questo tipo:
**** =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = ****)(PORT = 1521))
    )
    (CONNECT_DATA = (SID = ****))
  )
dove al posto dei **** ci sono dei nomi.
Il **** vicino al SID (o al limite quello iniziale prima del segno =) č lo
stesso che deve essere inputato alla voce 'server' del driver ODBC di
Microsoft.
Per testare il tutto da un client, in genere, si installa il software SQL+
(ma forse nel tuo caso č piů utile 'Oracle ODBC Test') che utilizza invece i
driver forniti da Oracle, ma che compie lo stesso 'giro' per raggiungere il
server, quindi peremtte di verificare se i parametri di configurazione
client sono corretti.
termoPilucco