Newsgroup: it.comp.lang.visual-basic
Titolo: ADO + ORACLE

   RDO -> ODBC -> Access ODBC Driver -> Jet
CHI ME LO TRADUCE IN VB?
P.S. Naturalmente ho un DSN, uno UID e una PWD.
In DAO la stringa di connessione era qualcosa del tipo: "ODBC;
DSN=...;UID=...; PWD=...;", ma con l'ADO non funziona!
Il messaggio di errore è: IMPOSSIBILE TROVARE ISAM INSTALLABILE. Ma cosa
significa???
Grazie!
A.

Ciao,
  premesso che ti sconsiglio di usare l'MS Jet per un qualsiasi DB
relazionale (Oracle come SQL Server), quanto piuttosto le OLE DB libraries,
la sintassi è più o meno come quella di DAO.
Prima di tutto devi avere il tuo bel driver odbc per Oracle installato,
altrimenti ottieni un errore simile a quello che hai scritto.
Secondo, ti crei il tuo DSN, con il driver Oracle.
Terzo, la sintassi ADO è più o meno la seguente:
Dim adoConn As ADODB.Connection
 Set adoConn = New ADODB.Connection
 adoConn.ConnectionString = "{DSN=name | FileDSN=filename };
[DATABASE=database;] UID=user; PWD=password"
 adoConn.Open
una volta aperta la connessione, la puoi usare per aprire recordset, command
e ogni altro (o quasi) oggetto ADO.
Se invece vuoi usare l'OLE DB Provider for Oracle, leggi quanto segue
(tratto da MSDN di Ottobre 1999).
Ciao,
RiK
*****
Microsoft OLE DB Provider for Oracle
The Microsoft OLE DB Provider for Oracle allows ADO to access Oracle
databases.
Connection String Parameters
To connect to this provider, set the Provider argument of the
ConnectionString property to:
MSDAORA
Reading the Provider property will return this string as well.
If a join query with a keyset or dynamic cursor is executed in an Oracle
database, an error occurs. Oracle only supports a static read-only cursor.
Typical Connection String
A typical connection string for this provider is:
"Provider=MSDAORA;Data Source=serverName;User ID=userName;
Password=userPassword;"
Consisting of these keywords:
Keyword Description
Provider Specifies the OLE DB Provider for Oracle.
Data Source Specifies the name of a server.
User ID Specifies the user name.
Password Specifies the user password.
Provider-Specific Connection Parameters
The provider supports several provider-specific connection parameters in
addition to those defined by ADO. As with the ADO connection properties,
these provider-specific properties can be set via the Properties collection
of a Connection or as part of the ConnectionString.
These parameters are fully described in the OLE DB Programmer's Reference.
(The ADO Dynamic Property Index provides a handy cross-reference between
these parameter names and the corresponding OLE DB properties.)
Parameter Description
Window Handle Indicates the window handle to use to prompt for additional
information.
Locale Identifier Indicates a unique 32-bit number (for example, 1033) that
specifies preferences related to the user's language. These preferences
indicate how dates and times are formatted, items are sorted alphabetically,
strings are compared, and so on.
OLE DB Services Indicates a bitmask that specifies OLE DB services to enable
or disable.
Prompt Indicates whether to prompt the user while a connection is being
established.
Extended Properties A string containing provider-specific, extended
connection information. Use this property only for provider-specific
connection information that cannot be described through the property
mechanism.

Grazie Rik per la risposta.
Però non va!
Innanzitutto sono un po' costretto a usare il Jet perchè diversamente il
server Oracle non riconosce le query che ho scritto (con la parola JOIN per
esempio), quindi mi serve un "filtro" come il Jet; utilizzando l'MSDAORA
riesco infatti a connettermi, ma appena richiedo dei records via-query il
server Oracle mi risponde dicendo che il comando SELECT non termina
correttamente (in realtà non riconosce il JOIN).
Con il Jet riesco a connettermi utilizzando lo stesso codice del DAO (e
aggiungendo myConn.Provider="...[il Jet 4.0]...") solo che mi viene fuori un
errore di runtime: OPERAZIONE NON SUPPORTATA PER QUESTO TIPO DI OGGETTO.
Cosa sto sbagliando?
Grazie, A.

 esempio),
ah, ok .. questo non l'avevi scritto prima...  per cui, se proprio non
vuoi/puoi convertire le tue query alla sintassi Oracle (SQL ANSI 92), il che
ti consentirebbe una maggiore portabilità, prova così, se non l'hai già
fatto:
conn.provider = "Microsoft.Jet.OLEDB.quel che l'è..."
conn.open "DSN=..." ecc ecc...
Probabilmente, la causa del tuo errore è che la libreria che usi per la
connessione non supporta le inner join di access... che tristezza... non
saprei cos'altro suggerirti...
ciao,
RiK

Ciao e scusa ancora (scusa anche se ti ho postato nell'e-mail, ma sto
impazzendo!).
Sě, probabilmente convertirň le query e buonanotte, anche perchč se utilizzo
la tua connection string proprio non ci siamo (č in questo caso che mi dice
che non trova un ISAM installabile, se aggiungo ODBC; prima mi da' l'errore
che ti ho descritto nell'altro post).
Il punto č che non riesco a capire quale sia il problema!!!
Comunque grazie!
A.