Het koppelen van 'back-end tabellen met de common dialog control in Access 2000

Vertaalde artikelen Vertaalde artikelen
Artikel ID: 209862 - Bekijk de producten waarop dit artikel van toepassing is.
Voor een Microsoft Access 97-versie van dit artikel Zie181076.
Geavanceerd: Vereist expert codering, interoperabiliteit en intervals kwalificaties.

Dit artikel geldt alleen voor Microsoft Access-database (. mdb).

Alles uitklappen | Alles samenvouwen

Op deze pagina

Samenvatting

In dit artikel ziet u hoe u met deDialoog vensterbesturings element gekoppelde tabellen in uw data base vernieuwen. HetDialoog venstercontrole is beschikbaar in Microsoft Office 2000 Developer Edition Hulp programma's. De tabellen worden gekoppeld kunnen zich bevinden in één of meerdere back-end data bases.

Voor een voorbeeld van een andere methode voor het koppelen van tabellen met Raadpleeg Microsoft Windows application programming interface (API) functies, het voorbeeld programma voor Developer-oplossingen (Solutions9.mdb). Verkrijgen Solutions9.mdb, klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:
248674ACC2000: Orders en ontwikkelaars oplossingen voorbeeld data bases beschikbaar op het Microsoft Developer Network (MSDN)
Open de data base Solutions9.mdb, selecteert uMeerdere data bases gebruikenin deSelecteer een categorie Voorbeeldenvak en klik vervolgens opTabellen koppelen bij het opstartenin deEen voorbeeld selecterenvak.

Meer informatie

Microsoft biedt program meer voorbeelden ter illustratie alleen, zonder expliciete of impliciete garantie. Dit omvat, maar is niet beperkt tot, de impliciete garanties van verkoopbaarheid of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend met de programmeer taal worden opgespoord en met de hulp programma's die worden gebruikt bent voor het maken en waarmee fouten in procedures. Ondersteuningstechnici van Microsoft kunnen helpen verklaren de functionaliteit van een bepaalde procedure, maar zij zal deze voorbeelden om extra functionaliteit of samens tellen van procedures om te voldoen aan uw specifieke vereisten niet wijzigen.Een programma dat gebruikmaakt van data base ontwerp splitsen heeft haar tabellen in een data base in een gedeelde net werk locatie (de backend-database) en alle query's, formulieren, rapporten, macro's en modules in een andere data base op elke clientcomputer (de front-enddatabase). De Front-end data base koppelingen alle van de tabellen in de back-end data base. Als de back-end data base wordt verplaatst, fouten in het programma. U kunt uw programma te detecteren die de back-end data base bestand is niet opgenomen in de verwachte locatie en vervolgens vragen de gebruiker naar de nieuwe locatie.

In het volgende voorbeeld ziet u hoe om de tabelgegevens in uw programma koppelen. Deze methode wordt een formulier dat een gebruiker kan Open voor opnieuw koppelen de 'back-end tabellen en andere optionele vormen kunnen Controleer de backend-koppeling automatisch wanneer de data base wordt geopend.

In dit artikel wordt ervan uitgegaan dat u beschikt over MicrosoftDialoog vensterbesturings element, dat meegeleverd met Microsoft Office 2000 Developer wordt Edition-hulpprogramma's. Als u dit besturings element niet hebt, gaat deBrowse ()de voorbeeld functie.

OPMERKING: Als u deDialoog venstercontrole en u van plan bent om uw data base programma u de Wizard Package and Deployment moet Common Dialog Control opnemen gebruiken bestand COMDLG32. ocx en de ondersteunende dll-bestanden met de setup-bestanden. Voor meer informatie informatie over het gebruik van de Wizard Package and Deployment, raadpleegt u de artikelen vermeld in de sectie ''Verwijzingen' van dit artikel.

Methode voor de Back-End data base tabellen koppelen

WAARSCHUWING: Als u de stappen in dit voorbeeld wijzigt u het monster data base Noordenwind. mdb. U kunt back-up van het bestand Noordenwind. mdb en Volg deze stappen op een kopie van de data base.

  1. Maak een nieuwe lege data base bestand van Access en noem dezeFrontEnd.mdb.
  2. Op deBestandhet menuExterne gegevens ophalen, en klik vervolgens opTabellen koppelen.
  3. Bladeren als u de voorbeeld data base Noordenwind. mdb, en Klik vervolgens opKoppeling. In deTabellen koppelenhet dialoog venster, klikt u opAlles selecteren, en klik vervolgens opOK.
  4. Maak het volgende nieuwe formulier niet gebaseerd op een tabel of de query in de ontwerpweergave:
    Formulier: frmNewDataFile

    Tekstvak:
    Naam: txtFileName
    Breedte: 3 "
    Common Dialog control:
    Naam: xDialog
    Opdracht knop:
    Naam: cmdBrowse
    Bijschrift: bladeren...
    Op: =Browse()
    Opdracht knop:
    Naam: cmdLinkNew
    Bijschrift: Vernieuwen koppelingen
    Op: =Processtables()
    Opdracht knop:
    Naam: cmdCancel
    Bijschrift: annuleren
    OnClick: [gebeurtenisprocedure]
    Annuleren: Ja
  5. Op deWeergavemenu, klikt u opCode.
  6. Typ of plak de volgende procedure:
    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. Op deFout opsporingmenu, klikt u opFront-end compileren.
  8. Sla het formulier op frmNewDataFile en sluit het.
  9. Klik in het data base vensterModules, en klik vervolgens opNieuwe.
  10. Op deHulp programma'smenu, klikt u opVerwijzingen, selecteerDe objectbibliotheek Microsoft DAO 3. 6Als het nog niet is geselecteerd en klik vervolgens opOK.
  11. Typ of plak de volgende code:
    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. Op deFout opsporingmenu, klikt u opFront-end compileren.
  13. Sla de module op alsRelinkCode, en Sluit het.
  14. De voorbeeld data base Noordenwind. mdb hernoemen of verplaatsen een andere map op de vaste schijf zodat de gekoppelde tabellen in FrontEnd.mdb wordt moet worden vernieuwd.
  15. Open het formulier frmNewDataFile en klik vervolgens op deBladerenknop.
  16. In deSelecteer een nieuw gegevensbestanddialoog venster vak, zoek Noordenwind. mdb in de nieuwe map en klik vervolgens opOpen.

    Houd er rekening mee dat de pad en de bestands naam van de data base in het tekstvak op het formulier weer gegeven.
  17. Klik op deKoppelingen vernieuwenknop op het formulier.

    Let op: u ontvangt de volgende bericht wanneer de procedure is voltooid:
    Koppelen naar nieuwe back-end gegevensbestand is voltooid.

Een opstartformulier controleren gekoppelde tabellen maken

Om te controleren of de koppelingen naar de 'back-end tabellen automatisch elke keer dat u de FrontEnd.mdb data base opent, kunt u een verborgen formulier maken voor die doel door de volgende stappen:
  1. Maak een nieuw formulier dat niet gebaseerd op een tabel of query in de ontwerp weer geven.
  2. Op deWeergavemenu, klikt u opCode.
  3. Typ de volgende procedure wilt uitvoeren wanneer het formulier wordt geopend:
    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. Op deFout opsporingmenu, klikt u opFront-end compileren.
  5. Sla het formulier op als frmCheckLink en sluit het.
  6. FrmCheckLink op instellen als het opstartformulier deHulp programma'sKlik in het menuOpstarten, selecteerfrmCheckLinkin deFormulier/pagina weer gevenlijst en klik vervolgens opOK.
  7. Als u frmCheckLink een verborgen formulier, rechterfrmCheckLinkKlik in het data base vensterEigenschappenKlik in het snelmenu op deVerborgenhet selectie vakje in defrmCheckLink eigenschappenhet dialoog venster en klik vervolgens opOK.
  8. Op de voorbeeld data base Noordenwind. mdb naar een andere map verplaatsen de vaste schijf zodat de gekoppelde tabellen in FrontEnd.mdb moeten worden vernieuwd.
  9. Sluit en open FrontEnd.mdb.

    Zoals u ziet het volgende fout bericht
    Kan niet vinden het back-end bestanddata base bestand. Kies nieuwe gegevens bestand.
    waardata base bestandhet pad en bestandsnaam van de back-enddatabase.

    Als u klikt opOK, het formulier frmNewDataFile opent u een nieuwe back-end selecteren data base en vervolgens de tabel is gekoppeld wordt vernieuwd. Als u klikt opAnnuleren, wordt het volgende foutbericht weer gegeven:
    De gekoppelde tabellen vinden niet hun bron. Voer net werk aanmelden en opnieuw opstarten het programma.

Referenties

Voor meer informatie over het aanpassen van de Voorbeeld voor het vernieuwen van gekoppelde tabellen in het voorbeeld programma ontwikkelaars oplossingen (Solutions9.mdb), klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base:
154397ADT/ODE Module Solutions.mdb RefreshTableLinks wijzigen
Voor extra informatie over de Wizard Package and Deployment, klikt u op de artikel nummers hieronder voor de artikelen in de Microsoft Knowledge Base:
240956MOD2000: Wizard Package and Deployment nu gebruikt voor het maken van een toepassing te distribueren
236143MOD2000: Het starten van de Wizard Package and Deployment

Eigenschappen

Artikel ID: 209862 - Laatste beoordeling: zaterdag 17 september 2011 - Wijziging: 3.0
De informatie in dit artikel is van toepassing op:
  • Microsoft Access 2000 Standard Edition
Trefwoorden: 
kbprogramming kberrmsg kbhowto kbinfo kbmt KB209862 KbMtnl
Automatisch vertaald artikel
BELANGRIJK: Dit artikel is vertaald door de vertaalmachine software van Microsoft in plaats van door een professionele vertaler. Microsoft biedt u professioneel vertaalde artikelen en artikelen vertaald door de vertaalmachine, zodat u toegang heeft tot al onze knowledge base artikelen in uw eigen taal. Artikelen vertaald door de vertaalmachine zijn niet altijd perfect vertaald. Deze artikelen kunnen fouten bevatten in de vocabulaire, zinsopbouw en grammatica en kunnen lijken op hoe een anderstalige de taal spreekt en schrijft. Microsoft is niet verantwoordelijk voor onnauwkeurigheden, fouten en schade ontstaan door een incorrecte vertaling van de content of het gebruik ervan door onze klanten. Microsoft past continue de kwaliteit van de vertaalmachine software aan door deze te updaten.
De Engelstalige versie van dit artikel is de volgende:209862

Geef ons feedback

 

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