Avanzate: Richiede la codifica degli esperti, interoperabilità e competenze multiutente.
In questo articolo viene illustrato come utilizzare DAO (Data Access Objects) in Visual Basic, Applications Edition per leggere le relazioni da un database Microsoft Access esterno e per importare le relazioni che possono essere aggiunto al database corrente.
Si suppone che l'utente conosca Visual Basic Applications Edition e sappia creare applicazioni Microsoft Access avvalendosi degli strumenti di programmazione forniti con Microsoft Access. Per ulteriori informazioni su Visual Basic, Applications Edition, fare riferimento alla versione del manuale "Building Applications con Microsoft Access".
Nota: Visual Basic, Applications Edition viene chiamato Access Basic in Microsoft Access versione 2.0. Per ulteriori informazioni su Access Basic, consultare il manuale "Building Applications".
Quando si tenta di aggiungere le relazioni nel database corrente, è possibile aggiungere solo le relazioni con i nomi delle tabelle e nomi dei campi che corrispondono a quelli nel database corrente.
Nell'esempio seguito viene illustrato come utilizzare gli oggetti di relazione in DAO per importare le relazioni appropriate nel database corrente:
Creare un nuovo database chiamato ImpRel.mdb.
Importare le tabelle seguenti dagli esempio database Northwind.mdb (o Nwind.mdb nella versione 2.0) per il database ImpRel:
Prodotti
Clienti
Ordini
Dettagli ordini
Nota: In Microsoft Access 7.0 e 97, fare clic sul pulsante Opzioni nella finestra di dialogo Importa oggetti e deselezionare l'opzione di relazioni prima di importare le tabelle.
Creare un nuovo modulo e il tipo la seguente riga in dichiarazioni di sezione se non è già presente:
opzione Explicit
Digitare la seguente routine:
Nota: Nel codice di esempio riportato di seguito, un carattere di sottolineatura (_) viene utilizzato come un carattere di continuazione di riga. Consente di rimuovere il carattere di sottolineatura alla fine del campo quando si ricrea il codice in Access Basic.
Function ImportRelations (DbName As String) As Integer
'------------------------------------------------------------------
' PURPOSE: Imports relationships where table names and field names
' match.
' ACCEPTS: The name of the external database as a string.
' RETURNS: The number of relationships imported as an integer.
'------------------------------------------------------------------
Dim ThisDb As Database, ThatDB As Database
Dim ThisRel As Relation, ThatRel As Relation
Dim ThisField As Field, ThatField As Field
Dim Cr As String, i As Integer, cnt As Integer, RCount As Integer
Dim j As Integer
Dim ErrBadField As Integer
Cr$ = Chr$(13)
RCount = 0
Set ThisDb = CurrentDB()
Set ThatDB = DBEngine.Workspaces(0).OpenDatabase(DbName$)
' Loop through all existing relationships in the external database.
For i = 0 To ThatDB.Relations.count - 1
Set ThatRel = ThatDB.Relations(i)
' Create 'ThisRel' using values from 'ThatRel'.
Set ThisRel = ThisDb.CreateRelation(ThatRel.name, _
ThatRel.table, ThatRel.foreigntable, ThatRel.attributes)
' Set bad field flag to false.
ErrBadField = False
' Loop through all fields in that relation.
For j = 0 To ThatRel.fields.count - 1
Set ThatField = ThatRel.fields(j)
' Create 'ThisField' using values from 'ThatField'.
Set ThisField = ThisRel.CreateField(ThatField.name)
ThisField.foreignname = ThatField.foreignname
' Check for bad fields.
On Error Resume Next
ThisRel.fields.Append ThisField
If Err <> False Then ErrBadField = True
On Error GoTo 0
Next j
' If any field of this relationship caused an error,
' do not add this relationship.
If ErrBadField = True Then
' Something went wrong with the fields.
' Do not do anything.
Else
' Try to append the relation.
On Error Resume Next
ThisDb.Relations.Append ThisRel
If Err <> False Then
' Something went wrong with the relationship.
' Skip it.
Else
' Keep count of successful imports.
RCount = RCount + 1
End If
On Error GoTo 0
End If
Next i
' Close databases.
ThisDb.Close
ThatDB.Close
' Return number of successful imports.
ImportRelations = RCount
End Function
Salvare il modulo come DAOExample e chiuderla.
Creare la nuova macro come riportato di seguito:
Nota: Nell'espressione macro riportata di seguito, un carattere di sottolineatura (_) alla fine di una riga viene utilizzato come un carattere di continuazione di riga. Consente di rimuovere il carattere di sottolineatura alla fine del campo quando si ricrea la macro.
Macro Name Macro Actions
----------------------------------
DAOImportRelations RunCode
MsgBox
DAOImportRelations Actions
---------------------------------------------------------------
RunCode
Function Name: ImportRelations("C:\Program Files\Microsoft _
Office\Office\Samples\Northwind.mdb")
MsgBox
Message: All Done.
Nota: se la copia di Microsoft Access non è installata nella cartella Programmi\microsoft Office\Office (directory) dell'unità C, sostituire l'unità corretta e il percorso nella funzione ImportRelations().
Salvare la macro e quindi chiuderlo.
Eseguire la macro. Tre le relazioni definite tra le quattro tabelle importati dal database Northwind vengono importate. Non vengono importate le relazioni altri quattro nel database Northwind.
Per visualizzare le relazioni nel database corrente, selezionare il database finestra, quindi scegliere Opzioni dal menu (o del menu Modifica nella versione 2.0) scegliere relazioni. Scegliere Mostra tutto dal menu, relazioni. Le tabelle e le relazioni sono visualizzate nella finestra; le relazioni tra le tabelle sono disegnate automaticamente.
Le informazioni in questo articolo si applicano a:
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: 128157
(http://support.microsoft.com/kb/128157/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.
Dichiarazione 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.
Per salvaguardare la privacy, non includere informazioni personali nei commenti.
Grazie. I commenti e suggerimenti forniti verranno utilizzati per migliorare la qualità dei contenuti di supporto tecnico. Per ulteriori opzioni di assistenza, visitare la home page del Supporto Tecnico Microsoft.