6

Tabloyu bir MS Access Veritabanından (* .mdb veya * .accdb) VBA'daki başka bir Access veritabanına nasıl bağlarım?MS Access Bağlantı Tablosu VBA ile

Temel olarak, yalnızca dış veri sihirbazının ne yaptığını çoğaltmak için VBA kullanacaktım.

Bunu yaptım ve tabloları güncelleştirme ve SQL veritabanlarına bağlantı birçok örnek, ancak Access veritabanları arasındaki basit bağlantı tabloları çok az birkaç örnek nasıl görüyorum.

+0

ben cevabını bilmiyorum ve seni vazgeçirmeye çalışmıyorum, ama bu yüzden olabilir olduğu Sadece bir düğmeyi tıklatıp sihirbazı çalıştırmanın aksine verileri eşleştirin? Bunu yapmak için (kodlayabiliyorsunuz), Access ile yerel olarak gelen güzel yerleşik doğrulama nedeniyle bunu yapmakta tereddüt ederim. –

+0

Evet, bunu yapmanın tam nedeni budur. Bunun dışında VBA'de neredeyse tüm veritabanı manipulasyonlarını otomatikleştirdim. Sihirbazı kullanabilirim ama sanırım son engeldeyim! – Mark

cevap

6

Başka Access veritabanındaki bir tabloya bir bağlantı oluşturmak için DoCmd.TransferDatabase Method kullanabilirsiniz .

DoCmd.TransferDatabase TransferType:=acLink, _ 
     DatabaseType:="Microsoft Access", _ 
     DatabaseName:="C:\share\Access\Example Database.accdb", _ 
     ObjectType:=acTable, _ 
     Source:="Addresses", _ 
     Destination:="Addresses_link" 

Ben daha kolay olan ideal seçeneği izlemek için yapacak umuduyla seçenek isimleri dahil. Ama bu çok ayrıntılı görünüyor, sen opsiyon isimleri ihmal ve tek bir satırda hepsini yapabilirsiniz:

DoCmd.TransferDatabase acLink, "Microsoft Access", "C:\share\Access\Example Database.accdb", acTable , "Addresses", "Addresses_link" 
+0

güzel cevap, Hans! –

2

Aslında oldukça kolay - sadece yeni bir tabledef oluşturun ve .connect özelliğini diğer Access veritabanına bağlanan bir ODBC bağlantı dizesine ayarlayın.

Private Function LinkTable(LinkedTableName As String, TableToLink As String, connectString As String) As Boolean 


Dim tdf As New dao.TableDef 

On Error GoTo LinkTable_Error 

With CurrentDb 

    .TableDefs.Refresh 

    Set tdf = .CreateTableDef(LinkedTableName) 
    tdf.Connect = connectString 
    tdf.SourceTableName = TableToLink 
    .TableDefs.Append tdf 
    .TableDefs.Refresh 


End With 

Set tdf = Nothing 

End Function

bağlantı dizesi (connectionstrings.com alınan) böyle bir şey görünecektir:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\myFolder\myAccessFile.accdb;Persist Security Info=False;