Ako znova prepojiť back-end tabuľky so spoločným riadením dialógové okno v programe Access 2000

Preklady článku Preklady článku
ID článku: 209862 - Zobraziť produkty, ktorých sa tento článok týka.
Microsoft Access 97 verziu tohto článku, pozri 181076.
Rozšírené: Vyžaduje expertné kódovanie, interoperability a multiuser zručnosti.

Tento článok sa uplatňuje iba na databázu programu Microsoft Access (.mdb).

Rozbaliť všetko | Zbaliť všetko

Na tejto stránke

SUHRN

Tento článok vám ukáže, ako používať Common Dialog kontrola obnoviť prepojených tabuliek v databáze. V Common Dialog kontrola je k dispozícii s Microsoft Office 2000 Developer Edition Nástroje. V tabuľkách je prepojený môže zdržiavať v jedného alebo mnoho back-end databázy.

Ako príklad inú metódu na opätovné prepojenie tabuľky, ktoré používa Microsoft Windows aplikácie programovacie rozhranie (API) funkcie, označovať Roztoky vývojok vzorky program (Solutions9.mdb.) Na získanie Solutions9.mdb, kliknutím na nasledujúce číslo článku zobrazte článok v Microsoft Knowledge Base:
248674 ACC2000: Objednávok a roztoky vývojok ukážkové databázy k dispozícii na Microsoft Developer Network (MSDN)
Otvorenie Solutions9.mdb databázy, vyberte Použiť viacero databáz v Vyberte kategóriu Príklady a potom kliknite na Prepojiť tabuľky pri spustenív Vyberte napríklad rámček.

DALSIE INFORMACIE

Spoločnosť Microsoft poskytuje príklady programovacieho kódu len ako názornú ukážku bez ľubovoľnej vyjadrenej alebo implicitnej záruky. Toto zahŕňa, okrem iného, implicitné záruky obchodovateľnosti a vhodnosti pre konkrétny účel. Úroveň odbornosti článku predpokladá, že ovládate predvádzaný programovací jazyk a nástroje, ktoré sa používajú na vytváranie a ladenie procedúr. Pracovníci technickej podpory spoločnosti Microsoft môžu pomôcť vysvetliť funkčnosť konkrétny postup, ale nie modifikuje tieto príklady poskytovať pridanú funkčnosť alebo výstavbe postupy splniť vaše konkrétne požiadavky. Program, ktorý používa rozdeliť návrh databázy sa jej tabuliek do jednej databázy v zdieľanom umiestnení v sieti (back-end databázy), a všetky jej dotazy, formuláre, zostavy, makrá a moduly v inej databáze na každom klientskom počítači (klientsku databázu). Klientsku databázu odkazy all of its tables na back-end databázy. Ak sa presunie back-end databázy, v programe sa vyskytnú chyby. Môžete zapnúť program na zisťovanie, back-end databázy súbor je chýbajúce z očakávaných umiestnenia a potom rýchlej používateľa na nové umiestnenie.

Nasledujúci príklad zobrazuje, ako na opätovné prepojenie údaje tabuľky v programe. Táto metóda používa formulár, ktorý používateľ môže otvoriť znova prepojiť tabuľky back-end a ďalšie voliteľné tvoria že môže automatické overenie back-end prepojenie pri otvorení databázy.

Tento článok predpokladá, že máte Microsoft Common Dialog ovládač, ktorý je k dispozícii s Microsoft Office 2000 Developer Vydanie nástroje. Ak nie je táto kontrola, Preskočiť Browse() Funkcia v príklade.

POZNÁMKA: Ak použijete Common Dialog plán kontroly a môžete distribuovať databázový program, môžete musí používať balík a nasadenie Sprievodca zahrnúť spoločné dialógové okno Kontrola súboru, Comdlg32.ocx a jeho podporné knižnice DLL so súbormi inštalácie. Pre viac informácie o používaní Sprievodcu balík a nasadenia, nájdete v článkoch uvedené v časti "Odkazy" tohto článku.

Metóda na opätovné prepojenie tabuliek Back-End databázy

UPOZORNENIE: Ak budete postupovať podľa krokov v tomto príklade, môžete upraviť vzorky databázu Northwind.mdb. Možno budete chcieť zálohovať databázu Northwind.mdb súbor a postupujte podľa týchto krokov na kópiu databázy.

  1. Vytvorte nový prázdny súbor databázy programu Access a nazvite hoFrontEnd.mdb.
  2. Na Súbor ponuku, ukážte na Načítať externé údaje, a potom kliknite na tlačidlo Prepojiť tabuľky.
  3. Prehľadávať vyberte ukážkovú databázu Northwind.mdb, a kliknite na tlačidlo Prepojenie. V Prepojiť tabuľky dialógové okno, kliknite na tlačidlo Vyberte všetky, a potom kliknite na tlačidlo ok.
  4. Vytvoriť nasledujúci nový formulár nie je založená na ľubovoľnej tabuľky alebo dotaz v návrhovom zobrazení:
    Forma: frmNewDataFile

    Blok textu:
    Názov: txtFileName
    Šírka: 3 "
    Spoločné dialógové okno Kontrola:
    Názov: xDialog
    Príkazové tlačidlo:
    Názov: cmdBrowse
    Popis: Prehľadávať...
    Kliknutím: =Browse()
    Príkazové tlačidlo:
    Názov: cmdLinkNew
    Titulok: Obnoviť odkazy
    Kliknutím: =Processtables()
    Príkazové tlačidlo:
    Názov: cmdCancel
    Popis: zrušiť
    OnClick: [Udalostná procedúra]
    Zrušiť: áno
  5. Na View ponuky, kliknite na tlačidlo Kód.
  6. Zadajte alebo prilepte nasledujúci postup:
    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. Na Ladiť ponuky, kliknite na tlačidlo Zostaviť FrontEnd.
  8. FrmNewDataFile forme ju uložte a zatvorte.
  9. V okne databáze kliknite na tlačidlo Moduly, a potom kliknite na tlačidlo Nové.
  10. Na Nástroje ponuky, kliknite na tlačidlo Odkazy, vyberte Objektová knižnica programu Microsoft DAO 3.6 Ak to už nie je vybratá, a potom kliknite na tlačidlo ok.
  11. Zadajte alebo prilepte nasledujúci kód:
    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. Na Ladiť ponuky, kliknite na tlačidlo Zostaviť FrontEnd.
  13. Uložiť modul ako RelinkCode, a potom ho zatvorte.
  14. Premenovať databáze Northwind.mdb vzorky alebo presunúť ju iného priečinka na pevnom disku tak, aby prepojených tabuľkách v FrontEnd.mdb musia byť obnovené.
  15. Otvorte formulár, frmNewDataFile, a potom kliknite na Prehľadávať tlačidlo.
  16. V Prosím vyberte nový súbor s údajmi dialógové okno rámček, vyhľadajte databázu Northwind.mdb jej nového priečinka a potom kliknite na Otvorené.

    Všimnite si, že aj cestu a názov súboru databázy sa zobrazí v textovom poli vo formulári.
  17. Kliknite na Obnoviť odkazy tlačidlo na formulári.

    Všimnite si, že budete dostávať nasledovné hlásenie po dokončení postupu:
    Prepojenia na nový súbor s údajmi back-end bol úspešný.

Vytvorenie spúšťacej formulár skontrolovať prepojené tabuľky

Overiť prepojenia na back-end tabuľky automaticky vždy, keď že otvoríte databázu FrontEnd.mdb, pre ktoré môžete vytvoriť v skrytom formulári účel pomocou nasledujúcich krokov:
  1. Vytvoriť nový formulár nie založené na ľubovoľnej tabuľky alebo dotazu v dizajne zobraziť.
  2. Na View ponuky, kliknite na tlačidlo Kód.
  3. Zadajte nasledujúci postup na spustenie, keď sa formulár otvorí:
    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. Na Ladiť ponuky, kliknite na tlačidlo Zostaviť FrontEnd.
  5. Uložte formulár ako frmCheckLink a zavrite ho.
  6. Nastaviť frmCheckLink ako pri spustení formulára na Nástroje kliknite na ponuku Spustenie, vyberte frmCheckLink v Zobraziť formulár/stránku zoznam a potom kliknite na tlačidlo ok.
  7. Aby sa frmCheckLink v skrytom formulári, kliknite pravým tlačidlom myši frmCheckLink v okne databáze kliknite na tlačidlo Vlastnosti v kontextovej ponuke kliknite na položku Vybrať Skryté políčko frmCheckLink vlastnosti dialógového okna a potom kliknite na tlačidlo ok.
  8. Premiestnite databáze Northwind.mdb vzorky do iného priečinka pevný disk tak, že prepojených tabuľkách v FrontEnd.mdb bude musieť byť obnovené.
  9. Zatvorte a znovu otvorte FrontEnd.mdb.

    Všimnite si, že zobrazí nasledujúce chybové hlásenie
    Nemožno nájsť back-end súbor súbor databázy. Prosím vyberte nové údaje súbor.
    kde súbor databázy je cesta a názov súboru back-end databázy.

    Ak kliknete na tlačidlo ok, otvorí formulár frmNewDataFile môžete vybrať nové back-end databázy a potom obnovuje vaše tabuľky odkazy. Ak kliknete na tlačidlo Zrušiť, zobrazí nasledujúce chybové hlásenie:
    Prepojené tabuľky nemôže nájsť ich zdroja. Prosím prihlásenie do siete a reštartujte program.

ODKAZY

Ďalšie informácie o prispôsobení príklad pre osviežujúci prepojených tabuľkách v programe roztoky vývojok vzorky (Solutions9.mdb), kliknutím na nasledujúce číslo článku zobrazte článok v Microsoft Knowledge Base:
154397 ADT/ÓDA ako upraviť modul RefreshTableLinks v Solutions.mdb
Pre ďalšie informácie o balení a nasadenie sprievodca, kliknite na číslo článku nižšie pre zobrazenie článkov v databáze Microsoft Knowledge Base:
240956 MOD2000: Nasadenie sprievodca teraz používa na vytvorenie rozdeliteľných žiadosti a balík
236143 MOD2000: Ako začať balík a nasadenie Sprievodca
Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Vlastnosti

ID článku: 209862 - Posledná kontrola: 20. októbra 2011 - Revízia: 2.0
Informácie v tomto článku sa týkajú nasledujúcich produktov:
  • Microsoft Access 2000 Standard Edition
Kľúčové slová: 
kbprogramming kberrmsg kbhowto kbinfo kbmt KB209862 KbMtsk
Strojovo preložené
DÔLEŽITÉ: Tento článok bol preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft, nie prekladateľom. Spoločnosť Microsoft ponúka články preložené prekladateľmi aj strojovo preložené články, vďaka čomu máte možnosť prístupu ku všetkým článkom databázy Knowledge Base vo svojom jazyku. Strojovo preložený článok však nie je vždy perfektný. Môže obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky, podobne ako cudzinec môže robiť chyby, keď rozpráva vašim jazykom. Spoločnosť Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené akýmkoľvek nepresným prekladom obsahu alebo jeho použitím zo strany zákazníkov. Spoločnosť Microsoft softvér na strojový preklad pravidelne aktualizuje.
Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem:209862

Odošlite odozvu

 

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