ACC: Utilizzare DAO in Codice di Visual Basic per importare le relazioni| Identificativo articolo | : | 128157 | | Ultima modifica | : | venerdì 19 gennaio 2007 | | Revisione | : | 2.3 |
Sommario
Passato: Richiede il codice esperto, l'interoperabilità e le competenze multiutente.
Questo articolo illustra come utilizzare Data Access Objects (DAO) nel codice Visual Basic Applications Edition per leggere le relazioni da un database esterno Microsoft Access e importare quelle relazioni che si possono accodare correttamente 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, vedere la versione del manuale "Microsoft Access con Creazione di applicazioni".
NOTA: Access Basic Visual Basic Applications Edition si dice in Microsoft Access versione 2.0. Per ulteriori informazioni su Access Basic, vedere il manuale "Creazione di applicazioni".
Informazioni
Quando si tenta di aggiungere le relazioni nel database corrente, è possibile accodare solo quelle relazioni che hanno i nomi di tabella e i nomi di campo che corrispondono a quelli nel database corrente.
Nel seguente esempio si illustra come utilizzare gli oggetti Relazione in DAO per importare le relazioni appropriate nel database corrente:
| 1. | Creare un nuovo database denominato ImpRel.mdb.
| | 2. | Le seguenti tabelle dal Northwind.mdb o da NWIND.MDB di esempio di database nella versione 2.0 al database ImpRel importare:
| ? | Prodotti | | ? | Clienti | | ? | Ordini | | ? | Order Details |
NOTA: In Microsoft Access 7.0 e 97, fare clic sul pulsante Opzioni nella finestra di dialogo Importa oggetti e deselezionare l'opzione Relazioni prima che le tabelle importino.
| | 3. | Creare un nuovo modulo e digitare la seguente riga nella sezione Dichiarazioni se non è già qui:
Option Explicit
| | 4. | Digitare la seguente routine:
NOTA: Nel seguente codice di esempio, un segno di sottolineatura (_) si utilizza come un carattere di continuazione della riga. Rimuovere il carattere quando si ricrea questo 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
| | 5. | Salvare il modulo come DAOExample e chiuderlo.
| | 6. | Creare la nuova macro come riportato di seguito
NOTA: Nella seguente espressione di macro, un segno di sottolineatura (_) al fine di una riga si utilizza come un carattere di continuazione della riga. Rimuovere il carattere quando si ricrea questa 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 (directory), Programmi\Microsoft Office\Office, sull'unità C, specificare l'unità e il percorso corretto nella funzione ImportRelations().
| | 7. | Salvare la macro e quindi chiuderlo.
| | 8. | Eseguire la macro. Le tre relazioni definite tra le quattro tabelle importanti del database Northwind vengono importate. Le altre quattro relazioni del database Northwind non vengono importate.
| | 9. | Per visualizzare le relazioni nel database corrente, si seleziona la finestra di database e quindi sugli Strumenti, il menu (o il menu Modifica nella versione 2.0) fa clic su Relazioni. Dal menu Relazioni, scegliere Mostra tutto. Tutte le tabelle e le relazioni si visualizzano nella finestra; le relazioni tra le tabelle si prelevano automaticamente.
|
Le informazioni in questo articolo si applicano a| ? | Microsoft Access 2.0 Standard Edition | | ? | Microsoft Access 95 Standard Edition | | ? | Microsoft Access 97 Standard Edition |
Torna all'inizio
| kbinfo kbprogramming KB128157 KbMtit kbmt |
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. Nel caso in cui si riscontrino degli errori e si desideri inviare dei suggerimenti, è possibile completare il questionario riportato alla fine del presente articolo.Clicca qui per visualizzare la versione originale in inglese dell?articolo: 128157 (http://support.microsoft.com/kb/128157/en-us/) Torna all'inizio
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. | Other Support Options- Need More Help?
Contact a Support professional by Email, Online or Phone. - Customer Service
For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more. - Newsgroups
Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.
|
|