Skip to main content

AccessTr.neT


Adresi Değişen Bağlı Tabloların Adresini Güncellemek

Adresi Değişen Bağlı Tabloların Adresini Güncellemek

Çözüldü #1
belki sorduğum sorunun parça parça bir çok yerde cevabı verilmiş olabilir
network üzerinden birbirine bağlı pcler var ana pc de  sqlite db kurulu
ana bilgisayardaki de dahil bütün accessler ODBC ile ana bilgisayardaki sqlite veritabanına bağlı
ama bu bağlantıyı yaparken menude bulunan ODBC bağlantı oluşturma sihirbazını kullandım
eğer ana bilgisayardaki db yeri değişse bağlantı ölecek
ben bu bağlantılı tabloları kod ile yapmak istiyorum bunun için
DoCmd.TransferSpreadsheet kullanacağım
1.problem şu
programı açtığımda eğer sqlite.db taşınmış ise bana uyarı verip
yeni adres yolunu girince eski bağlantısı kopmuş tabloları silip
yeni bağlı tablo mu oluşturacak yoksa eski tabloları silmeden bağlantı yollarınımı değiştirecek 
2.problem
eğer ben kod ile sqlite vertabanından bağlı tablo oluşturacaksam her tablonun ismini bilmem gerekiyor mu
yani bütün tabloları bağla gibi bir kod var mı
yardımlarınız için teşekkürler
@benbendedeilem
Cevapla
#2
sihirbaz ile kurulan sqlite bağlantı bilgileri bunlar bunu kod ile nasıl oluşturabilirim 

[Resim: do.php?img=9691]
@benbendedeilem
Cevapla
#3
When I make changes to table or view structures, or change the source database (this is done by changing the output of 

Tablo veya görünüm yapılarında değişiklik yaptığımda veya kaynak veritabanını değiştirdiğimde (bu ODBC_String () çıktısını değiştirerek yapılır), bu işlevi çağırırım: demiş
Visual Basic Code
Public Function Sql_RefreshTables()

    Dim TD As TableDef
    Dim S As String
    Dim IdxFlds As String

    DB.TableDefs.Refresh

    ' save current Indizes for Views (recreated after .RefreshLink)
    Call StoreViewPKs

    For Each TD In DB.TableDefs
        If Len(TD.Connect) > 0 Then
            If Left(TD.Connect, 5) = "ODBC;" Then

                Debug.Print "Updating " & TD.Name
                TD.Connect = ODBC_String()
                TD.RefreshLink

                ' View?
                If TD.Name Like "v_*" Then
                    IdxFlds = Nz(DLookup("IndexFields", "t_LinkedViewPK", "ViewName = '" & TD.Name & "'"))
                    If IdxFlds = "" Then Stop

                    ' Create PK
                    S = "CREATE INDEX PrimaryKey ON " & TD.Name & " (" & IdxFlds & ") WITH PRIMARY"
                    DB.Execute S
                End If

            End If
        End If
    Next TD

    DB.TableDefs.Refresh

End Function
Son Düzenleme: 20/02/2020, 15:50, Düzenleyen: accessman.
Cevapla
#4
Visual Basic Code
Private Sub StoreViewPKs()

    Dim TD As TableDef
    Dim idx As index
    Dim FD As Field
    Dim RS As Recordset
    Dim S As String

    ' DB is a global Database object, set to CurrentDB
    DB.Execute "Delete * From t_LinkedViewPK"
    Set RS = DB.OpenRecordset("t_LinkedViewPK")

    For Each TD In DB.TableDefs
        If TD.Name Like "v_*" Then
            ' Views must have exactly one index. If not: panic!
            If TD.Indexes.Count <> 1 Then
                MsgBox "View " & TD.Name & " has " & TD.Indexes.Count & " Indizes.", vbCritical
                Stop
            End If

            Set idx = TD.Indexes(0)
            ' Build field list (the index may contain multiple fields)
            S = ""
            For Each FD In idx.Fields
                If S <> "" Then S = S & ", "
                S = S & FD.Name
            Next FD

            RS.AddNew
            RS!ViewName = TD.Name
            RS!IndexFields = S
            RS.Update
        End If
    Next TD

    RS.Close

End Sub
Cevapla
#5
Visual Basic Code
Private Sub insertIntoTable()
    On Error GoTo Err_hata

    Dim conn As ADODB.Connection
    
    Set conn = CreateObject("ADODB.Connection")
    conn.Open "DRIVER=SQLite3 ODBC Driver;Database=\\accessman\data\mrs.db;"

    If conn Is Nothing Then
       MsgBox "Bağlanılamadı"
    Else
        Dim strsql As String
        Dim cmd As ADODB.Command
        Dim Param, Param1 As ADODB.Parameter
        
        Set cmd = New ADODB.Command
        Set cmd.ActiveConnection = conn
              
        strsql = "CREATE TABLE tlite ENGINE=CONNECT TABLE_TYPE=ODBC tabname='tUser' CONNECTION='Driver=SQLite3 ODBC Driver;Database=\\accessman\data\mrs.db;NoWCHAR=yes' CHARSET=utf8 DATA_CHARSET=utf8;"
         
        cmd.CommandText = strsql

        cmd.Execute

    End If
    
    Set conn = Nothing

Exit_kod:
    Exit Sub

Err_hata:
    MsgBox Err.Description
    Resume Exit_kod
End Sub
@benbendedeilem
Cevapla
#6
5. mesajdaki kod ile  accessde ODBC bağlı tablo oluşturmaya çalışırken şu hatayı veriyor

[Resim: do.php?img=9693]
@benbendedeilem
Son Düzenleme: 20/02/2020, 17:53, Düzenleyen: accessman.
Cevapla

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

Yorum yapmak için üye olmanız gerekiyor

ya da