DetailPage-MSS-KB

Microsoft Knowledge Base

Identificativo articolo: 113701 - Ultima modifica: venerdì 1 settembre 2006 - Revisione: 3.1

 

In questa pagina

Sommario

Quando si accede ai dati da più di un'origine di dati contemporaneamente in una singola query, sarà probabilmente necessario utilizzare il metodo più veloce e più generale allegare le tabelle dalle origini dati diverse a un singolo database Microsoft Access. A questo punto, è possibile creare query che si estendono su due database diversi come se tutte le tabelle, allegate o locale, sono stati locale per il database di Microsoft Access.
Collegamento di tabelle ha prestazioni potenti e vantaggi amministrativi, soprattutto se si esegue query ripetutamente. Tuttavia, talvolta si desideri eseguire la route più lenta, descritta in questo articolo quando è necessario utilizzare le query ad hoc che includono due o più database. In questo articolo viene descritto come creare queste query tra database più lente.

Informazioni

Esistono due metodi che utilizzabili per specificare un database all'esterno di quello attualmente aperto.

Metodo 1

SQL di Microsoft Access fornisce una clausola IN che consente di connettersi a un database esterno (un database diverso da quello corrente). Questo metodo, tuttavia, limitare è a un solo database esterno alla volta.

La clausola di IN ha due parti nome del database e la stringa di connessione. Il nome del database è un percorso completo del file o della directory contenente il file di database e la stringa di connessione contiene il tipo di database e altri parametri secondo le necessità.

Per specificare un database esterno, aggiungere un punto e virgola (;) per la connessione parte e racchiuderlo tra virgolette singole o doppie. Nell'esempio viene utilizzata la clausola IN per specificare una tabella (clienti) in un database di dBASE IV (vendite):
SELECT Customers.CustomerID
FROM Customers
IN "C:\DBASE\DATA\SALES" "dBASE IV;"
WHERE Customers.CustomerID Like "A*"
				
In Visual Basic consente di creare un dynaset da dell'esempio precedente utilizzando il seguente codice di Visual Basic:
Dim db As Database
Dim ds As Dynaset
Dim sql As String

' Open a database:
Set db = OpenDatabase("C:\VB\BIBLIO.MDB")

' Build the select statement, referencing the external dBASE IV file:
sql = "SELECT Customers.CustomerID, FROM Customers"
sql = sql & " IN 'C:\DBASE\DATA\SALES' 'dBASE IV;'"
sql = sql & " WHERE Customers.CustomerID Like 'A*'"

' Create the recordset:
Set ds = db.CreateDynaset(sql)

' Loop through and display the records:
While Not ds.EOF
   For i = 0 To ds.Fields.Count - 1
      Print ds(i); "  ";
   Next i
   Print
   ds.MoveNext
Wend
				

Metodo 2

Il modulo di gestione Microsoft Access incorporata in Visual Basic versione 3.0 consente di analizzare le query SQL per includere la stringa di connessione utilizzata per aprire un oggetto di database. La clausola FROM dell'istruzione SQL accetta un nome di tabella completo, che consente il selezione host della stringa di connessione in square brackets prima del nome della tabella. La stringa di connessione è separata dal nome della tabella da un periodo. Questo metodo consente di connettersi a più database esterni allo stesso tempo.

È possibile accedere a qualsiasi tabella in uno dei due database all'interno di una singola istruzione select utilizzando questa sintassi:
SELECT tbl1.fld1,tbl2.fld1
FROM [odbc;dsn=datasource;database=pubs;Username= <username>;PWD=<strong password>].tbl1,
[dbase iii;database=C:\DBASE3].tbl2
WHERE tbl1.fld1 = tbl2.fld1
				
questo esempio unisce in join due tabelle da due database diversi, uno un'origine dati ODBC e l'altro un dBASE III tabella nella directory C:\DBASE3.

In generale, la stringa di connessione usata racchiuso tra parentesi quadre è identica a proprietà Connect di un oggetto TableDef durante l'associazione o il quarto parametro dell'istruzione OpenDatabase. Sarà in uno dei tre formati, a seconda del database (ad esempio, ODBC, ISAM o Microsoft Access).

Per i database ODBC:
   [odbc;dsn=datasource;database=thedatabasename;Username=<username>;
PWD=<strong password>]
				
database ISAM per:
   [paradox 3.X;database=C:\DATABASE\PARADOX3]
   [foxpro 2.5;database=C:\DATABASE\FOX25]
   [dbase iv;database=C:\DATABASE\DBASEIV]
   [btrieve;database=C:\DATABASE\BTRIEVE\FILE.DDF]
				
database per Microsoft Access:
   [;database=C:\VB\BIBLIO.MDB]
				
Nota il punto e virgola iniziale per i database Microsoft Access è importante. Questo corrisponde esattamente alla stringa necessaria per completare la proprietà Connect di un oggetto TableDef prima di associare la tabella in un database di formato di Microsoft Access. Il punto e virgola iniziale è un segnaposto per la specifica formato di database non necessari e consente il "database =" clausola da seguire.

Esempio di codice di una query di più database

In questo esempio viene creato un dynaset join di due tabelle da due origini dati, uno un server SQL e l'altro un database di Microsoft Access. La tabella di TestTab è sul server SQL e la tabella T1 è il database di Microsoft Access.

Nota <username>È necessario modificare <nomeutente> e < strong password > sui valori corretti prima di eseguire questo codice. Assicurarsi che nome utente disponga di autorizzazioni appropriati eseguire questa operazione sul database.
Dim db As database
Dim ds As dynaset
Dim sql As String, Uid$, Pwd$

Set db = OpenDatabase("C:\VB\BIBLIO.MDB")
' This obtains a valid database object. It does not have to be a Microsoft
' Access database; the following works equally as well:
' Set db = OpenDatabase("C:\FOXPRO25\", 0, 0, "foxpro 2.5")

' The values here are hard-coded, but you could prompt the user for their
' user id and password.
Uid$ = <username>
Pwd$ = <strong password>

' Build the select statement, concatenating the user's id and password:
sql = "SELECT T1.F2, TestTab.F2, TestTab.F3"
sql = sql & " FROM [;database=C:\ACCESS\DB1.MDB].T1 , "
sql = sql & " [odbc;dsn=texas;database=playpen;Username=" & Uid$
sql = sql & ";PWD=" & Pwd$ & "].TestTab"
sql = sql & " WHERE T1.F1 = TestTab.F1"

' Execute the select query:
Set ds = db.CreateDynaset(sql)

' Loop through and display the records:
While Not ds.EOF
   For i = 0 To ds.Fields.Count - 1
      Print ds(i); "  ";
   Next i
   Print
   ds.MoveNext
Wend
				

Gestione note speciali protetti database Microsoft Access

Se il database di Microsoft Access è protetto, l'applicazione Visual Basic deve eseguire il SetDataAccessOption e comandi SetDefaultWorkspace prima di eseguire tutti i dati accedere a codice correlato. Questo è necessario per un accesso riuscito in quanto Microsoft Access non utilizza il "nome utente ="e"PWD =" sezioni della stringa di connessione. Ad esempio:
   ' Establish the location of the SYSTEM.MDA files if in another
   ' directory other than the \WINDOWS directory:
   SetDataAccessOption 1, "C:\MYDIR\MYAPP.INI"
   ' Log on to a valid account:
   SetDefaultWorkspace "admin", "<password>"
				
durante questa operazione, la query per il database protetto di Microsoft Access avranno esito positivo. Si noti tuttavia che a causa di questo processo, non vi è un limite predefinito per questa tecnica ad hoc; solo uno protetto il database di Microsoft Access possibile accedervi con una query ad hoc. Infatti, una volta viene inizializzato il modulo di gestione di Microsoft Access in una sessione con una combinazione di nome e password utente specifico, tali valori vengono mantenuti fino alla sessione (programma eseguibile di Visual Basic o sessione dell'ambiente, VB.EXE) termina.

Tuttavia, se necessario accedervi per una query più di due database protetti di Microsoft Access, l'approccio migliore consiste spostare le tabelle effettive da un database protetti in un database protetto. Per effettuare questa operazione, è necessario modificare la password per l'account di amministrazione per "" temporaneamente durante le operazioni di trasferimento. È quindi possibile utilizzare codice di Visual Basic, ad esempio che nell'esempio di accesso ai dati Visdata, copiare le tabelle.

Riferimenti

Per ulteriori informazioni sulla protezione di Microsoft Access, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito riportato:
105990  (http://support.microsoft.com/kb/105990/ ) INFORMAZIONI: Come Visual Basic 3.0 Handles insieme protezione da Microsoft Access

Le informazioni in questo articolo si applicano a:
  • Microsoft Visual Basic 3.0 Professional Edition
Chiavi: 
kbmt kbhowto kbsqlprog KB113701 KbMtit
Traduzione automatica articoliTraduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell’articolo: 113701  (http://support.microsoft.com/kb/113701/en-us/ )
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.
Articolo KB ritiratoDichiarazione di non responsabilità per articoli della Microsoft Knowledge Base su prodotti non più supportati
Questo articolo è stato scritto sui prodotti per cui Microsoft non offre più supporto. L’articolo, quindi, viene offerto ‘così come è’ e non verrà più aggiornato.
Condividi
Altre opzioni per il supporto
Forum del supporto di Microsoft Community
Contattaci direttamente
Ricerca di un partner certificato Microsoft
Microsoft Store