Come ricollegare le tabelle back-end con il controllo finestra di dialogo comuni in Access 2000

Traduzione articoli Traduzione articoli
Identificativo articolo: 209862 - Visualizza i prodotti a cui si riferisce l?articolo.
Per la una versione di Microsoft Access 97 di questo articolo, vedere 181076.
Avanzate: Richiede la codifica degli esperti, interoperabilitÓ e competenze multiutente.

Il contenuto di questo articolo Ŕ applicabile solo ai database Microsoft Access (mdb).

Espandi tutto | Chiudi tutto

In questa pagina

Sommario

In questo articolo viene illustrato come utilizzare il controllo della Finestra di dialogo comune per aggiornare le tabelle collegate nel database. Il controllo della Finestra di dialogo comune Ŕ disponibile con Microsoft Office 2000 Developer Edition Tools. Le tabelle vengano collegate possono risiedere in uno o pi¨ database di back-end.

Per un esempio di un metodo diverso per ricollegare le tabelle che utilizza funzioni di Microsoft Windows application programming interface (API), vedere il programma di esempio Developer Solutions (Solutions9.mdb). Per consente di ottenere Solutions9.mdb, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
248674ACC2000: Ordini e database di esempio Developer Solutions disponibili in Microsoft Developer Network (MSDN)
Aprire il database Solutions9.mdb, selezionare utilizza pi¨ database nella casella Selezionare una categoria di esempi e quindi scegliere le tabelle di collegamento all'avvio nella casella Selezionare un esempio .

Informazioni

Microsoft fornisce esempi di programmazione a scopo puramente illustrativo, senza alcuna garanzia espressa o implicita. Questo include, ma non Ŕ limitato a, le garanzie implicite di commerciabilitÓ o idoneitÓ per uno scopo specifico. Questo articolo si presuppone che conosca il linguaggio di programmazione in questione e gli strumenti utilizzati per creare ed eseguire il debug di procedure. Tecnici del supporto Microsoft possono spiegare la funzionalitÓ di una particolare procedura, ma in nessun sono caso a modificare questi esempi per fornire funzionalitÓ aggiuntive o creare procedure per soddisfare specifiche esigenze. Un programma che utilizza dividere la progettazione di database dispone delle tabelle in un database in un percorso di rete condivisa (il database back-end) e tutte le query, maschere, report, macro e moduli in un altro database in ogni computer client (il database front-end). Il database front-end collega tutte le tabelle al database back-end. Se viene spostato il database back-end, nel programma si verificano errori. ╚ possibile attivare il programma rileva che il file di database back-end dalla posizione prevista Ŕ manca e quindi richiede all'utente per il nuovo percorso.

Nell'esempio seguente viene illustrato come ricollegare i dati della tabella nel programma. Questo metodo utilizza un modulo che un utente pu˛ aprire ricollegare le tabelle back-end e un altro form facoltativo che Ŕ possibile verificare automaticamente il collegamento del server back-end quando il database Ŕ aperto.

In questo articolo si presuppone che il controllo Microsoft Common Dialog , che Ŕ disponibile con Microsoft Office 2000 Developer Edition Tools. Se non si dispone di questo controllo, Ŕ possibile ignorare la funzione Browse() nell'esempio.

Nota : se si utilizza il controllo della Finestra di dialogo comune e si prevede di distribuire il programma di database, Ŕ necessario utilizzare il pacchetto e il Deployment Wizard per includere il controllo Common Dialog file, Comdlg32.ocx e il supporto DLL con i file di installazione. Per ulteriori informazioni sull'utilizzo dei package e distribuzione guidata, vedere gli articoli elencati nella sezione "Riferimenti" di questo articolo.

Metodo per Ricollega tabelle di database back-end

attenzione : se la procedura in questo esempio, Ŕ possibile modificare il database di esempio Northwind.mdb. ╚ possibile che si desidera eseguire il backup del file Northwind.mdb attenersi alla seguente procedura su una copia del database.

  1. Creare un nuovo file di database Access vuoto e denominarlo FrontEnd.mdb .
  2. Scegliere Carica dati esterni dal menu file , quindi Collega tabelle .
  3. Individuare e per selezionare il database di esempio Northwind.mdb e quindi fare clic su collegamento . Nella finestra di dialogo Collega tabelle , scegliere Seleziona tutto e scegliere OK .
  4. Consente di creare la seguente nuova maschera non basata su alcuna tabella o query in visualizzazione struttura:
    modulo: frmNewDataFile

    Casella di testo:
    Nome: txtFileName
    Larghezza: 3 "
    Controllo della finestra di dialogo comune:
    Nome: xDialog
    Pulsante di comando:
    Nome: cmdBrowse
    Didascalia: Sfoglia...
    Su clic: =Browse()
    Pulsante di comando:
    Nome: cmdLinkNew
    Caption: Aggiorna collegamenti
    Su clic: =Processtables()
    Pulsante di comando:
    Nome: cmdCancel
    Didascalia: Annulla
    OnClick: [Routine evento]
    Annulla: Sý
  5. Scegliere codice dal menu Visualizza .
  6. Digitare o incollare la seguente procedura:
    Private Sub cmdCancel_Click()
       On Error GoTo Err_cmdCancel_Click
     
       MsgBox "Link to new back-end cancelled", vbExclamation, "Cancel Refresh Link"
       DoCmd.Close acForm, Me.Name
    
    Exit_cmdCancel_Click:
       Exit Sub
    
    Err_cmdCancel_Click:
       MsgBox Err.Description
       Resume Exit_cmdCancel_Click
    
    End Sub
    					
  7. Scegliere dal menu debug , Compilazione FrontEnd .
  8. Salvare il modulo frmNewDataFile e chiuderla.
  9. Nella finestra del database, fare clic su moduli e scegliere Nuovo .
  10. Dal menu Strumenti , fare clic su riferimenti , selezionare Microsoft DAO 3.6 Object Library , se non Ŕ giÓ selezionata e quindi fare clic su OK .
  11. Digitare o incollare il codice riportato di seguito:
    Dim UnProcessed As New Collection
           
    Public Function Browse()
        ' Prompts user for back-end database file name.
        On Error GoTo Err_Browse
        
        Dim strFilename As String
        Dim oDialog As Object
        Set oDialog = [Forms]![frmNewDatafile]!xDialog.Object
        
        With oDialog                    ' Ask for new file location.
            .DialogTitle = "Please Select New Data File"
            .Filter = "Access Database(*.mdb;*.mda;*.mde;*.mdw)|" & _
            "*.mdb; *.mda; *.mde; *.mdw|All(*.*)|*.*"
            .FilterIndex = 1
            .ShowOpen
            If Len(.FileName) > 0 Then  ' user responded, put selection into text box on form.
               [Forms]![frmNewDatafile]![txtFileName] = .FileName
            End If
        End With
    
    Exit_Browse:
        Exit Function
    
    Err_Browse:
        MsgBox Err.Description
        Resume Exit_Browse
    
    End Function
    
    Public Sub AppendTables()
    
        Dim db As DAO.Database, x As Variant
        Dim strTest As String
        ' Add names of all table with invalid links to the Unprocessed Collection.
        Set db = CurrentDb
        ClearAll
        For Each x In db.TableDefs
            If Len(x.Connect) > 1 And Len(Dir(Mid(x.Connect, 11))) = 0 Then
            ' connect string exists, but file does not
                 UnProcessed.Add Item:=x.Name, Key:=x.Name
            End If
        Next
    
    End Sub
    
    Public Function ProcessTables()
    
        Dim strTest As String
        On Error GoTo Err_BeginLink
        
        ' Call procedure to add all tables with broken links into a collection.
        AppendTables
        
        ' Test for existence of file name\directory selected in Common Dialog Control.
        strTest = Dir([Forms]![frmNewDatafile]![txtFileName])
        
        On Error GoTo Err_BeginLink
        If Len(strTest) = 0 Then   ' File not found.
            MsgBox "File not found. Please try again.", vbExclamation, "Link to new data file"
            Exit Function
        End If
        
        ' Begin relinking tables.
        Relinktables (strTest)
        ' Check to see if all tables have been relinked.
        CheckifComplete
        
        DoCmd.Echo True, "Done"
        If UnProcessed.Count < 1 Then
             MsgBox "Linking to new back-end data file was successful."
        Else
             MsgBox "Not All back-end tables were successfully relinked."
        End If
        DoCmd.Close acForm, [Forms]![frmNewDatafile].Name
        
    Exit_BeginLink:
        DoCmd.Echo True
        Exit Function
        
    Err_BeginLink:
        Debug.Print Err.Number
        If Err.Number = 457 Then
            ClearAll
            Resume Next
        End If
        MsgBox Err.Number & ": " & Err.Description
        Resume Exit_BeginLink
    
    End Function
    
    Public Sub ClearAll()
        Dim x
        ' Clear any and all names from the Unprocessed Collection.
        For Each x In UnProcessed
           UnProcessed.Remove (x)
        Next
    End Sub
    
    Public Function Relinktables(strFilename As String)
    
        Dim dbbackend As DAO.Database, dblocal As DAO.Database, ws As Workspace, x, y
        Dim tdlocal As DAO.TableDef
        
        On Error GoTo Err_Relink
        
        Set dbbackend = DBEngine(0).OpenDatabase(strFilename)
        Set dblocal = CurrentDb
        
        ' If the local linked table name is found in the back-end database
        ' we're looking at, Recreate & Refresh its connect string, and then
        ' remove its name from the Unprocessed collection.
         For Each x In UnProcessed
            If Len(dblocal.TableDefs(x).Connect) > 0 Then
                For Each y In dbbackend.TableDefs
                    If y.Name = x Then
                        Set tdlocal = dblocal.TableDefs(x)
                        tdlocal.Connect = ";DATABASE=" & _
                        Trim([Forms]![frmNewDatafile]![txtFileName])
                        tdlocal.RefreshLink
                        UnProcessed.Remove (x)
                    End If
                Next
            End If
        Next
    
    Exit_Relink:
        Exit Function
    
    Err_Relink:
        MsgBox Err.Number & ": " & Err.Description
        Resume Exit_Relink
    
    End Function
    
    Public Sub CheckifComplete()
    
        Dim strTest As String, y As String, notfound As String, x
        On Error GoTo Err_BeginLink
        
        ' If there are any names left in the unprocessed collection,
        ' then continue.
        If UnProcessed.Count > 0 Then
            For Each x In UnProcessed
                notfound = notfound & x & Chr(13)
            Next
            ' List the tables that have not yet been relinked.
            y = MsgBox("The following tables were not found in " & _
            Chr(13) & Chr(13) & [Forms]![frmNewDatafile]!txtFileName _
            & ":" & Chr(13) & Chr(13) & notfound & Chr(13) & _
            "Select another database that contains the additional tables?", _
            vbQuestion + vbYesNo, "Tables not found")
            
            If y = vbNo Then
                Exit Sub
            End If
            
            ' Bring the Common Dialog Control back up.
            Browse
            strTest = Dir([Forms]![frmNewDatafile]![txtFileName])
            If Len(strTest) = 0 Then   ' File not found.
                MsgBox "File not found. Please try again.", vbExclamation, _
                "Link to new data file"
                Exit Sub
           End If
           Debug.Print "Break"
           Relinktables (strTest)
        Else
           Exit Sub
        End If
        
        CheckifComplete
        
    Exit_BeginLink:
        DoCmd.Echo True   ' Just in case of error jump.
        DoCmd.Hourglass False
        Exit Sub
    
    Err_BeginLink:
        Debug.Print Err.Number
        If Err.Number = 457 Then
            ClearAll
            Resume Next
        End If
        MsgBox Err.Number & ": " & Err.Description
        Resume Exit_BeginLink
    
    End Sub
    					
  12. Scegliere dal menu debug , Compilazione FrontEnd .
  13. Salvare il modulo come RelinkCode e chiuderlo.
  14. Rinominare il database di esempio Northwind.mdb oppure spostarlo in un'altra cartella sul disco rigido in modo che le tabelle collegate in FrontEnd.mdb verranno debba essere aggiornata.
  15. Aprire il modulo frmNewDataFile e quindi fare clic sul pulsante Sfoglia .
  16. Nella finestra di dialogo , Selezionare nuovo file di dati , individuare Northwind.mdb nella nuova cartella e quindi fare clic su Apri .

    Si noti che il percorso e il nome del database verrÓ visualizzato nella casella di testo nel modulo.
  17. Fare clic sul pulsante Aggiorna collegamenti nel modulo.

    Nota verrÓ visualizzato il seguente messaggio al termine della routine:
    Collegamento a un nuovo file di dati back-end Ŕ stato completato.

Creazione di un form di avvio per verificare di tabelle collegate

Per verificare i collegamenti alle tabelle back-end automaticamente ogni volta che si apre il database di FrontEnd.mdb, Ŕ possibile creare una maschera nascosta a tale scopo, attenendosi alla procedura seguente:
  1. In visualizzazione Struttura creare una nuova maschera che non sia basata su alcuna tabella o query.
  2. Scegliere codice dal menu Visualizza .
  3. Digitare la seguente routine da eseguire quando la maschera viene aperta:
    Private Sub Form_Open(Cancel As Integer)
          ' Tests a linked table for valid back-end.
          On Error GoTo Err_Form_Open
          Dim strTest As String, db As DAO.Database
          Dim td As DAO.TableDef
          Set db = CurrentDb
          For Each td In db.TableDefs
             If Len(td.Connect) > 0 Then   ' Is a linked table.
                On Error Resume Next   ' Turn off error trap.
                strTest = Dir(Mid(td.Connect, 11))   ' Check file name.
                On Error GoTo Err_Form_Open   ' Turn on error trap.
                If Len(strTest) = 0 Then   ' No matching file.
                   If MsgBox("Couldn't find the back-end file " & _
                      Mid(td.Connect, 11) & ". Please choose new data file.", _
                      vbExclamation + vbOKCancel + vbDefaultButton1, _
                      "Can't find backend data file.") = vbOK Then
                         DoCmd.OpenForm "frmNewDataFile"   ' Open prompt form.
                         DoCmd.Close acForm, Me.Name
                         Exit Sub                          ' to refresh links
                   Else
                      MsgBox "The linked tables can't find their source. " & _
                      "Please log onto network and restart the application."
                   End If
                End If
             End If
          Next   ' Loop to next tabledef.
          DoCmd.Close acForm, Me.Name
    Exit_Form_Open:
          Exit Sub
    Err_Form_Open:
          MsgBox Err.Number & ": " & Error.Description
          Resume Exit_Form_Open
          End Sub
    					
  4. Scegliere dal menu debug , Compilazione FrontEnd .
  5. Salvare il modulo come frmCheckLink e chiuderlo.
  6. Per impostare frmCheckLink come maschera di avvio, Strumenti menu fare clic su avvio , selezionare frmCheckLink nell'elenco Visualizza maschera/pagina e quindi fare clic su OK .
  7. Per rendere frmCheckLink una maschera nascosta, fare clic con il pulsante destro del mouse frmCheckLink nella finestra del database, scegliere ProprietÓ dal menu di scelta rapida, selezionare la casella di controllo nascosto nella finestra di dialogo ProprietÓ frmCheckLink e scegliere OK .
  8. Spostare il database di esempio Northwind.mdb in un'altra cartella sul disco rigido affinchÚ le tabelle collegate in FrontEnd.mdb dovranno essere aggiornati.
  9. Chiudere e riaprire FrontEnd.mdb.

    VerrÓ visualizzato un messaggio d'errore analogo al seguente
    Impossibile trovare il file back-end database file. Selezionare il nuovo file di dati.
    in cui il database file Ŕ il percorso e file il nome del database back-end.

    Se si sceglie OK , il modulo frmNewDataFile visualizzata per selezionare un nuovo database di back-end, quindi aggiorna i collegamenti della tabella. Se si sceglie Annulla , Ŕ visualizzato il seguente messaggio di errore:
    Le tabelle collegate Impossibile trovare l'origine. Accedere alla rete e riavviare il programma.

Riferimenti

Per ulteriori informazioni sulla personalizzazione l'esempio per l'aggiornamento di tabelle collegate nell'esempio Developer Solutions (Solutions9.mdb) del programma, fare clic sul numero dell'articolo della Microsoft Knowledge Base riportato di seguito:
154397ADT/ODE modifica modulo RefreshTableLinks in Solutions.mdb
Per ulteriori informazioni sul package e distribuzione guidata, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
240956Creazione MOD2000: Guidata pacchetti di installazione ora consente di creare un'applicazione distribuibile
236143MOD2000: Come avviare il package e distribuzione guidata

ProprietÓ

Identificativo articolo: 209862 - Ultima modifica: giovedý 23 giugno 2005 - Revisione: 3.0
Le informazioni in questo articolo si applicano a:
  • Microsoft Access 2000 Standard Edition
Chiavi:á
kbmt kbprogramming kberrmsg kbhowto kbinfo KB209862 KbMtit
Traduzione 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: 209862
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.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com