Skip to main content

AccessTr.neT


Access Bağlatısı

Access Bağlatısı

#11
(29/02/2024, 13:06)atoykan yazdı: Verdiğim kod sadece size fikir vermesi açısından örnekti. TableDef System.Data.OleDb kitaplığında bulunmaz bunun için DAO kitaplığını eklemeniz gerekir. Projenizde Solution Explorer'dan Manage NuGet Packages seçeneğine girin ve Browse'u tıklayıp Microsoft.Office.Interop.Access.Dao paketini bulup install ederek projenize ekleyin. İşlemi tamamladıktan sonra yukarıdaki kodu
Kod:
Imports System.Data.OleDb
Imports Microsoft.Office.Interop.Access.Dao ' DAO'yu ekleyin

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim tableName As String = "BağlıTabloAdı" ' Bağlı tablo adını buraya girin
        Dim connectionString As String = "provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\DataBase.mdb;Persist Security Info=True;Jet OLEDB:Database Password=Şifre" ' Eğer var ise şifreyi girin
        Try
            Using connection As New OleDbConnection(connectionString)
                connection.Open()
                Dim linkedDbPath As String = GetLinkedDatabasePath(connection, tableName) ' Bağlı tablonun bağlı olduğu veritabanını al
                If Not String.IsNullOrEmpty(linkedDbPath) Then ' Sonuçları görüntüle
                    MessageBox.Show("Bağlı Tablonun Bağlı Olduğu Veritabanı Yolu: " & linkedDbPath)
                Else
                    MessageBox.Show("Bağlı Tablo Bulunamadı")
                End If
            End Using
        Catch ex As Exception
            MessageBox.Show("Hata: " & ex.Message)
        End Try
    End Sub
Private Function GetLinkedDatabasePath(connection As OleDbConnection, tableName As String) As String
        Dim dbPath As String = ""
        Dim tableDef As TableDef = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, {Nothing, Nothing, tableName, Nothing}).Rows(0)("TABLE_NAME") ' Bağlı tablonun veritabanının dosya yolunu al
        If tableDef IsNot Nothing Then
            dbPath = tableDef.Connect
        End If
        Return dbPath
    End Function
Private Function GetLinkedDatabasePath(connection As OleDbConnection, tableName As String) As String
        Dim dbPath As String = ""
        Dim dbEngine As New DBEngine() ' DAO DBEngine kullanımı
        Dim db As Database = dbEngine.OpenDatabase(connection.DataSource) ' Veritabanını aç
        For Each tableDef As TableDef In db.TableDefs
            If tableDef.Name = tableName Then
                dbPath = tableDef.Connect
                Exit For
            End If
        Next
        db.Close()
        Return dbPath
    End Function
End Class

mantığında düzenleyerek kullanabilirsiniz.

Teşekkür ederim. Sağolun.



Private Function GetLinkedDatabasePath(connection As OleDbConnection, tableName As String) As String
        Dim dbPath As String = ""
        Dim dbEngine As New DBEngine() ' DAO DBEngine kullanımı
        Dim db As Database = dbEngine.OpenDatabase(connection.DataSource) ' Veritabanını aç
        For Each tableDef As TableDef In db.TableDefs
            If tableDef.Name = tableName Then
                dbPath = tableDef.Connect
                Exit For
            End If
        Next
        db.Close()
        Return dbPath
    End Function
function ile bu işlem tamam olur gibi. Sorun şu; bağlı tablo olan yani başka bir klasördeki Access veritabanı tablolarına bağlı olan acces veritabanını şifrelediğim zaman  connectionString kısmına bu Access VERİTABANIMA AİT şifreyi yazsamda okumuyor. "HATA GEÇERSİZ PAROLA YAZIYOR". Acces veritabanımda Şifreyi kaldırınca okuyor şifreli olunca okumuyor.

Teşekkürler.Kodlar aşağıda
Kod:
Private Sub Button19_Click(sender As System.Object, e As System.EventArgs) Handles Button19.Click
        Dim tableName As String = "tb_personel_bilgileri" ' Bağlı tablo adını buraya girin
        Dim connectionString As String = "provider=microsoft.jet.oledb.4.0;data source=" & Application.StartupPath & "\DataBase.mdb ;Persist Security Info=True;Jet OLEDB:Database Password=12212"
        Try
            Using connection As New OleDbConnection(connectionString)
                connection.Open()
                Dim linkedDbPath As String = GetLinkedDatabasePath(connection, tableName) ' Bağlı tablonun bağlı olduğu veritabanını al
                If Not String.IsNullOrEmpty(linkedDbPath) Then ' Sonuçları görüntüle
                    MessageBox.Show("Bağlı Tablonun Bağlı Olduğu Veritabanı Yolu: " & linkedDbPath)
                Else
                    MessageBox.Show("Bağlı Tablo Bulunamadı")
                End If
            End Using
        Catch ex As Exception
            MessageBox.Show("Hata: " & ex.Message)
        End Try
    End Sub

    Private Function GetLinkedDatabasePath(connection As OleDbConnection, tableName As String) As String
        Dim dbPath As String = ""
        Dim dbEngine As New DBEngine() ' DAO DBEngine kullanımı
        Dim db As Database = dbEngine.OpenDatabase(connection.DataSource) ' Veritabanını aç
        For Each tableDef As TableDef In db.TableDefs
            If tableDef.Name = tableName Then
                dbPath = tableDef.Connect
                Exit For
            End If
        Next
        db.Close()
        Return dbPath
    End Function

Son Düzenleme: 29/02/2024, 16:27, Düzenleyen: umutakkaya.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da

Bu Konudaki Yorumlar
Access Bağlatısı - Yazar: hakilkan - 02/07/2013, 16:04
Cvp: Access Bağlatısı - Yazar: bilisim_01 - 02/07/2013, 16:31
Cvp: Access Bağlatısı - Yazar: bilisim_01 - 02/07/2013, 16:41
Cvp: Access Bağlatısı - Yazar: DUAYEN - 02/07/2013, 22:00
Cvp: Access Bağlatısı - Yazar: ogulcan92 - 03/07/2013, 15:32
Cvp: Access Bağlatısı - Yazar: ogulcan92 - 02/10/2013, 11:23
RE: Access Bağlatısı - Yazar: umutakkaya - 29/02/2024, 09:49
RE: Access Bağlatısı - Yazar: atoykan - 29/02/2024, 11:08
RE: Access Bağlatısı - Yazar: umutakkaya - 29/02/2024, 11:27
RE: Access Bağlatısı - Yazar: atoykan - 29/02/2024, 13:06
Re: Access Bağlatısı - Yazar: umutakkaya - 29/02/2024, 15:11
RE: Access Bağlatısı - Yazar: atoykan - 29/02/2024, 16:27
RE: Access Bağlatısı - Yazar: umutakkaya - 29/02/2024, 16:37
RE: Access Bağlatısı - Yazar: atoykan - 29/02/2024, 16:38
Re: Access Bağlatısı - Yazar: umutakkaya - 29/02/2024, 20:25
RE: Access Bağlatısı - Yazar: atoykan - 29/02/2024, 21:48
RE: Access Bağlatısı - Yazar: umutakkaya - 29/02/2024, 22:41
RE: Access Bağlatısı - Yazar: atoykan - 01/03/2024, 01:12
RE: Access Bağlatısı - Yazar: umutakkaya - 01/03/2024, 08:31
RE: Access Bağlatısı - Yazar: atoykan - 01/03/2024, 11:27
RE: Access Bağlatısı - Yazar: umutakkaya - 01/03/2024, 16:05