Access 2000'de ortak iletişim denetimiyle arka uç tablolar bağlamak hakkında

Makale çevirileri Makale çevirileri
Makale numarası: 209862 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makalenin Microsoft Access 97 sürümü için bkz: 181076.
Gelişmiş: Uzman kodlama, birlikte çalışabilirlik ve çok kullanıcılı becerileri gerektirir.

Bu makale yalnızca Microsoft Access veritabanı (.mdb) için geçerlidir.

Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, Ortak iletişim denetimi veritabanınızdaki bağlantılı tablolar yenilemek için nasıl kullanılacağı gösterilmektedir. Ortak iletişim kutusu) denetimi, Microsoft Office 2000 Developer Edition araçları kullanılabilir. Bağlı tablolar, bir veya daha fazla arka uç veritabanları olarak bulunabilir.

Microsoft Windows uygulama programlama arabirimi (API) işlevlerini kullanan tabloları yeniden bağlamak için farklı bir yöntem örneği için Geliştirici çözümleri örnek program (Solutions9.mdb) başvurun. Solutions9.mdb edinmek için <a0></a0>, Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
248674ACC2000: Siparişler ve Geliştirici çözümleri örnek veritabanları Microsoft Developer Network'te (MSDN) kullanılabilir
Solutions9.mdb veritabanını açın , bir kategori örnekleri yer kutusundabirden çok veritabanı'nı Kullan ' ı seçin ve bir örnek Seç kutusunda Başlangıçta bağlantı tablolar</a1>'ı tıklatın.

Daha fazla bilgi

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Buna satılabilirlik veya belirli bir amaca uygunluk zımni garantileri de dahildir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler. Veritabanı tasarımını bölme kullanan BIR program bir paylaşılan ağ konumu (arka uç veritabanı) ve veritabanı sorguları, formları, raporları, makroları ve modülleri (ön uç veritabanı) her bir istemci bilgisayara başka bir veritabanındaki tüm alt tablolar vardır. Ön uç veritabanı, tablolar, tüm arka uç veritabanına bağlar. Arka uç veritabanı taşınmışsa, programın hataları ortaya çıkar. Beklenen konumundan arka uç veritabanı dosyasının eksik olduğunu algılar ve sonra yeni konuma kullanıcıdan programınızı yeniden etkinleştirebilirsiniz.

Aşağıdaki örnek, programınızı'de tablo verileri yeniden bağlamak gösterilmiştir. Bu yöntem, bir form bir kullanıcı, arka uç tablolar bağlamak açabilir ve arka uç bağlantıyı otomatik olarak doğrulayabilir, veritabanı açıldığında, isteğe bağlı başka bir form kullanır.

Bu makalede, Microsoft Ortak iletişim denetimi, Microsoft Office 2000 Developer Edition araçları kullanılabilir olduğunu varsayar. Bu denetime sahip örnek Browse() işlevinde atlayın.

Not: Ortak iletişim denetim kullanmak ve veritabanı programınızı planlıyorsanız, paket ve Dağıtım Sihirbazı ortak iletişim denetim eklemek için kullandığınız gerekir dosya Comdlg32.ocx ve Kur dosyaları, destek dll dosyaları. Paket ve Dağıtım Sihirbazı'nı kullanma hakkında daha fazla bilgi için bu makalenin "Başvurular" bölümünde listelenen makalelere bakın.

Yöntemi, arka uç veritabanı tabloları yeniden Bağla

DIKKAT: Bu örnekteki adımları, Northwind.mdb adlı örnek veritabanını değiştirme. Northwind.mdb dosyasını yedekleyin ve bu adımları veritabanının bir kopyasında isteyebilirsiniz.

  1. Yeni bir boş Access veritabanı dosyası oluşturun ve bu FrontEnd.mdb adlandırın.
  2. Dosya menüsünden Dış Veri Al'ın üzerine gelin ve Tabloları Bağla</a1>'ı tıklatın.
  3. Northwind.mdb örnek veritabanını seçmek için gözatın ve sonra Bağlan ' ı tıklatın. Tabloları Bağla iletişim kutusunda, Tümünü Seç'i tıklatın ve sonra Tamam ' ı tıklatın.
  4. Herhangi bir tabloyu veya sorguyu Tasarım görünümünde temel aşağıdaki yeni form oluştur:
    Form: frmNewDataFile

    Text box:
    Ad: txtFileName
    Genişlik: 3 "
    Ortak iletişim denetimi:
    Ad: xDialog
    Komut düğmesi:
    Ad: cmdBrowse
    Resim yazısı: Gözat...
    Click üzerinde: =Browse()
    Komut düğmesi:
    Ad: cmdLinkNew
    Başlığı: Yenileme bağlantıları
    Click üzerinde: =Processtables()
    Komut düğmesi:
    Ad: cmdCancel
    Resim yazısı: iptal
    Tıklatıldığında: [Olay Yordamının]
    Iptal: Evet
  5. Görünüm menüsünde kodu ' ı tıklatın.
  6. Yazın veya aşağıdaki yordamı yapıştırın:
    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. Hata Ayıkla menüsünde Önuç Derle'yi tıklatın.
  8. FrmNewDataFile formu kaydedin ve kapatın.
  9. Veritabanı penceresinde, modüller ' i tıklatın ve sonra Yeni ' yi tıklatın.
  10. Araçlar menüsünde, Başvurular ' ı tıklatın, sonra da zaten seçili değilse, Microsoft DAO 3.6 Nesne Kitaplığı'na seçin ve Tamam ' ı tıklatın.
  11. Aşağıdaki kodu yazın veya yapıştırın:
    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. Hata Ayıkla menüsünde Önuç Derle'yi tıklatın.
  13. Modül RelinkCode kaydedin ve sonra kapatın.
  14. Northwind.mdb örnek veritabanını yeniden adlandırın veya onu başka bir klasöre sabit diskinizde FrontEnd.mdb Bağlantılı tablolarda yenilenmeye gereksinimi olacak biçimde taşıyın.
  15. FrmNewDataFile formunu açın ve sonra Gözat düğmesini tıklatın.
  16. Lütfen SELECT yeni veri dosyası iletişim kutusunda, Northwind.mdb içinde yeni klasörü bulun ve sonra ' ı tıklatın.

    Not formunuz üzerinde <a1>metin</a1> kutusunda veritabanının yolunu ve dosya adı görüntülenir.
  17. Formdaki Bağlantılar Yenile düğmesini tıklatın.

    Not yordamı tamamlandığında aşağıdaki iletiyi alırsınız:
    Yeni bir arka uç veri dosyasına bağlama başarılı oldu.

Bağlantılı tablolarda denetlemek için bir başlangıç formu oluşturma

FrontEnd.mdb veritabanını açın, her zaman otomatik olarak arka uç tablolar bağlantılarını doğrulamak için aşağıdaki adımları izleyerek bu amaç için gizli bir form oluşturabilirsiniz:
  1. Herhangi bir tabloyu veya sorguyu Tasarım dayanan yeni bir form oluşturmak görüntüle.
  2. Görünüm menüsünde kodu ' ı tıklatın.
  3. Form açıldığında çalışması için aşağıdaki yordamı yazın:
    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. Hata Ayıkla menüsünde Önuç Derle'yi tıklatın.
  5. FrmCheckLink formu kaydedin ve sonra kapatın.
  6. Araçlar başlangıç formu olarak frmCheckLink ayarlamak için menü Başlangıç ' ı tıklatın, frmCheckLinkForm/Sayfa Görüntüle listeden seçin ve Tamam ' ı tıklatın.
  7. Gizli bir form frmCheckLink yapmak için <a0></a0>, Veritabanı penceresinde frmCheckLink sağ tıklatın, kısayol menüsünden Özellikler ' i tıklatın, frmCheckLink özellikleri</a1> iletişim kutusunda Gizli onay kutusunu seçmek için tıklatın ve Tamam ' ı tıklatın.
  8. Bağlantılı tablolarda FrontEnd.mdb yenilenmeye gereksinimi, Northwind.mdb örnek veritabanını, sabit diskinizdeki başka bir klasöre taşıyın.
  9. Kapatın ve yeniden FrontEnd.mdb açın.

    Aşağıdaki hata iletisini aldığınız dikkat edin.
    Arka uç dosya database file bulunamıyor. Lütfen yeni bir veri dosyası seçin.
    database file arka uç veritabanının yolunu ve dosya adını olduğu.

    Tamam ' ı tıklatırsanız, frmNewDataFile form yeni bir arka uç veritabanını seçmek için açılır ve sonra tablo bağlantılarınız yeniler. Iptal ' i tıklatın, aşağıdaki hata iletisini alırsınız:
    Bağlantılı tablolar, kendi kaynak bulunamıyor. Lütfen ağ oturumu açma ve programı yeniden başlatın.

Referanslar

Bu örnek için Geliştirici çözümleri örnek bağlı tablolar yenileniyor özelleştirme hakkında ek bilgi için (Solutions9.mdb) programı, Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
154397ADT/ODE nasıl Solutions.mdb RefreshTableLinks modülünde değiştirmek
Paket ve Dağıtım Sihirbazı hakkında ek bilgi için Microsoft Knowledge Base'deki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
240956MOD2000: Paketleme ve Dağıtım Sihirbazı şimdi dağıtılabilir bir uygulama oluşturmak için kullanılır.
236143MOD2000: nasıl paket ve Dağıtım Sihirbazı'nı Başlat

Özellikler

Makale numarası: 209862 - Last Review: 23 Haziran 2005 Perşembe - Gözden geçirme: 3.0
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Access 2000 Standard Edition
Anahtar Kelimeler: 
kbmt kbprogramming kberrmsg kbhowto kbinfo KB209862 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:209862

Geri Bildirim Ver

 

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