hayırlı cumalar
bağlı tablo ile veri tabanımızdaki bilgilere ulaşıyoruz
DoCmd.TransferDatabase acLink, "ODBC", "ODBC;DSN=karpuz", acTable, "sebze", "t_sebze", False
bu kod ile sebze tablosuna t_sebze bağlı tabloso ile bağlanıyoruz
ama benim istediğim bağlandığımız veri tabanındaki (buna karşı taraf diyeceğim) tüm tablolara bağlanmak
yani karşı tarafa yeni tablo eklenebilir bu durumda bizim projede bunun karşılığı olmaz
o yüzden tablo isimlerine bağlı kalmadan
For Each c In Me.Controls
DoCmd.TransferDatabase acLink, "ODBC", "ODBC;DSN=karpuz", acTable, "sebze", "t_sebze", False
next
gibi bir döngü kullanarak karşı taraftaki tüm tabloları bağlamak istiyorum
teşekkürler
örnek ekleyemiyorum çünkü manasız olacak bağlanacak veri tabanı sizlerde olmayacağı için zaten çalışmayacak
diyelimki bağlı tabloların değişen yeni kaynağını biliyoruz ve kaynağın adresi elimizde
buda bir mysql tablosu normal olarak bağlı tablo yönetici ile bağlandığımız kaynak
DoCmd.TransferDatabase acLink, "ODBC", "ODBC;DSN=karpuz", acTable, "sebze", "t_sebze", False
şimdi aşağıdaki kodda bu bağlantı adresini belirterek bu mysql veri tabanındaki tabloların yeni bağlantısını nasıl oluşturabiliriz
Kod:
Function ReLink(strDir As String, DefaultData As Boolean) _
As Boolean
Dim cat As ADOX.Catalog
Dim tdfRelink As ADOX.Table
Dim oDBInfo As DBInfo
Dim strPath As String
Dim strName As String
Dim intCounter As Integer
Dim vntStatus As Variant
vntStatus = SysCmd(acSysCmdSetStatus, "Yükleniyor")
Set cat = New ADOX.Catalog
Set oDBInfo = New DBInfo
With cat
.ActiveConnection = CurrentProject.Connection
oDBInfo.FullName = strDir
strPath = oDBInfo.FilePathOnly
strName = Left(oDBInfo.fileName, InStr(oDBInfo.fileName, ".") - 1)
On Error Resume Next
Call SysCmd(acSysCmdInitMeter, "Data Tabloları Yükleniyor", .Tables.Count)
For Each tdfRelink In .Tables
intCounter = intCounter + 1
Call SysCmd(acSysCmdUpdateMeter, intCounter)
If .Tables(tdfRelink.Name).Type = "LINK" Then
tdfRelink.Properties("Jet OLEDB:Link Datasource") = strPath & strName & IIf(DefaultData, "Data.Mdb", ".mdb")
End If
If Err.Number Then
Exit For
End If
Next tdfRelink
End With
Call SysCmd(acSysCmdRemoveMeter)
vntStatus = SysCmd(acSysCmdClearStatus)
ReLink = (Err = 0)
End Function
teşekkürler
yeni dosya seçme penceresi açılmasın
zaten dosyanın yeni yerini biliyoruz
Programda iki tablo var
birisi bir accesse bağlı
birisi
ODBC veritabanlarından bir mysql tablosuna bağlı
ikisinin de mouse üzerine gelince çıkan bağlı adres yolu bilgisinin resimlerini ekledim
şimdi bu resimlerde çıkan adres yolu bilgilerinden hareketle
Function ReLink içerisinde nasıl bir değişiklik yaparak bağlı tablo penceresi çıkmadan dosya yolu seçmeye gerek kalmadan yapabilirim
Kod:
Set objFileDialog = Application.FileDialog(msoFileDialogOpen)
With objFileDialog
.Show
.AllowMultiSelect = False
strFilename = .SelectedItems(1)
End With
yerine
Kod:
strFilename = "D:\access-23012012\bağlı tablo\bağlı tablo\Yeni klasör\ÖRNEK_be.mdb"
yazarsam dosya seçmeme gerek kalmıyor
şimdi geriye
ODBC veri tabnı için nereye ne yazmam gerekiyor onu bulmaya
cumadan sonra devam ederiz
Kod:
DoCmd.TransferDatabase acLink, "Microsoft Access", "D:\access-23012012\bağlı tablo\bağlı tablo\ÖRNEK_be.mdb", acTable, "tablo1", "gusto", False
Kod:
DoCmd.TransferDatabase acLink, "ODBC", "ODBC;DSN=h", acTable, "sebze", "t_sebze", False
"D:\access-23012012\bağlı tablo\bağlı tablo\ÖRNEK_be.mdb" yerini
"ODBC;DSN=h"
almış