Newsgroup: it.comp.lang.visual-basic
Titolo: [ADO] Come fare query tra tabelle contenute in differenti DB?

Ciao a tutti,
da VB accedo ad un gestionale (ado + odbc) diviso in una decina di db,
pertanto sono costretto a creare altrettante ADODB.Connection e spesso mi
capita di dovere creare delle query tra tabelle non presenti nello stesso
db, qual'è il sistema migliore ???
Grazie 1000
xandre

"xandre72" <xandr...@SPAMhotmail.com> ha

Lasci le cose come stanno per il db cui la connessione si riferisce,
anteponi al nome delle tabelle il nome degli altri db per il resto.

 anteponi al nome delle tabelle il nome degli altri db per il resto.
Ho provato ma non funziona...
Provo a spiegarmi meglio,:
Se io ho 2 differenti db:
- Archivio
- Produzione
In Archivio ho una tabella Anagrafica_Articoli con i seguenti campi:
-   CODICE
-   DESCRIZIONE
In produzione ho una tabella Ordini_Produzione con i sseguenti campi:
-   CODICE
-   GIACENZA
Creo 2 connessioni:
conArchivio
conProduzione
Creo i 2 recordset
rsAnagrafica_Articoli.open  "SELECT * FROM Anagrafica_Articoli",
conArchivio, adOpenStatic, adLockReadOnly
rsOrdini_Produzione.open "SELECT * FROM Ordini_Produzione", conProduzione,
adOpenStatic, adLockReadOnly
come faccio a creare una query:
- CODICE
- DESCRIZIONE
- GIACENZA
tra queste due tabelle in ado????
Grazie 1000
Alex

 - Produzione
Ipotizzando che la tua connessione faccia riferimento al db1 8e che la tab1
sia ad esso appartenente, mentre la tab2 appartiente al db2):
Select tab1.campo1, tab2.campo2 From tab1,
percorso_e_nome_db2_senza_estensione.Tab2
E' un vecchio trucco di DAO, ma dovrebbe funzionare anche per ADO verso
Access (sinceramente non ho provato). Sicuramente funziona con ADO+SQL
Server, ma la sintassi cambia in questo modo:
Select tab1.campo1, nome_db_sqlserver.dbo.tab2.campo2 From tab1,
nome_db_sqlserver.dbo.Tab2

 nome_db_sqlserver.dbo.Tab2
Ciao
io sto utilizzando Pervasive 2000i, via ODBC.
Per testare le query utilizzo l'editor del dataenvironment.
Cosa indica dbo in nome_db_sqlserver.dbo.Tab2
Grazie 2000
xandre

 Cosa indica dbo in nome_db_sqlserver.dbo.Tab2
Oddio, devo passare, non conosco Pervasive. Comunque ti posso garantire che
_normali_ comandi SQL, sia verso Access (anche con DAO, oltre che con ADO)
che verso SQL Server (quindi il motore di destinazione non dovrebbe avere
molta influenza), accettano di eseguire un comando appoggato su un oggetto
database (connection in ADO) e, nel comando stesso, "citare" altri database.
Quindi "nome_db_sqlserver.dbo.Tab2" vuol dire: "Tab2" del database con nome
"nome_db_sqlserver" di proprietà (owner/creatore) di "dbo".
In DAO verso Access, invece:
"Select Tab1.campo1, c:\cartella\db2.Tab2.campo2 From db1"

 "Select Tab1.campo1, c:\cartella\db2.Tab2.campo2 From db1"
Se accedi su db access crea su di uno dei dieci db un collegamento
alle tabelle presenti negli altri database, che ti interessano.
Per farlo sulla maschera di elenco delle tabelle usa il tasto destro
del mouse e seleziona "collega tabelle"; scegli il database e poi le
tabele che ti interessa collegare. A quel punto fai una select normale
come se le tabelle fossero presenti fisicamente sul db a cui sei
collegato.
Se usi oracle devi creare un dblink tra i database. Fatto cio' nella
clausola from della select sql, devi far seguire ad ogni tabella
presente su di un db remoto, il nome del dblink che hai creato.
Ciao