Condividi tramite

codice VBA per cancellare tabelle collegate e collegarne di nuove

Anonimo
2014-11-25T10:23:50+00:00

Buon giorno,

sono un neofita della community. Uso Office fin dalle prime versioni e mi reputo (spero non a torto) un dilettante evoluto. Ora uso la versione 2007. 

Ho realizzato una applicazione Access con molte tabelle, query, maschere, report  e procedure.

Ho diviso l'applicazione, come di consueto, in un database_be, che costituisce la shell dove vi sono maschere, query, report e moduli di programma, e 3 diversi database con le tabelle dati, che risiedono su 3 diversi computer. I database hanno tabelle e strutture relazionali identiche ma dati diversi.

Ciò si è reso necessario perché tre diversi clienti vogliono mantenere i propri dati distinti dagli altri, su propri PC o server.

Uso Gestione Tabelle Collegate per collegare la shell al database che mi serve in quel momento. Ho in parte automatizzato il comando con DoCmd.RunCommand acCmdLinkedTableManager, ma vorrei automatizzare completamente il processo con una maschera semplice che richiami il codice necessario.

Qualcuno ha del codice semplice, alla mia portata, (purtroppo ho poca dimestichezza con DAO e ADO) per cancellare tabelle collegate e ricollegarne di nuove?

Grazie e buona giornata

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

1 risposta

Ordina per: Più utili
  1. Anonimo
    2014-11-25T13:45:14+00:00

    ciao Gil54,

    buttata giù al volo,PathDelTuoDataBase è  il path del BE.

    fai un test un un backup prima mi raccomando...!

    facci sapere,

    un saluto.

    Sandro.

    Option Compare Database

    Option Explicit

    Private Const StrPathDbBE As String = "C:\PathDelTuoDataBase"

    Sub connectTables()

    Dim dbs As DAO.Database

    Dim tdf As DAO.TableDef

    Dim rst As DAO.Recordset

    Dim fld As Field

    Set dbs = OpenDatabase(StrPathDbBE)

    Set tdf = DBEngine(0)(0).CreateTableDef("Tlinked")

    Set fld = tdf.CreateField("tabellaCollegata", dbText)

    tdf.Fields.Append fld

    DBEngine(0)(0).TableDefs.Append tdf

    Set rst = DBEngine(0)(0).OpenRecordset("Tlinked", dbOpenTable)

    For Each tdf In dbs.TableDefs

        If tdf.Attributes = 0 And tdf.Connect = "" Then

            DoCmd.TransferDatabase acLink, "Microsoft Access", StrPathDbBE, acTable, tdf.Name, tdf.Name

            With rst

                .AddNew

                !tabellaCollegata = "[" & tdf.Name & "]"

                .Update

            End With

        End If

    Next

    dbs.Close

    Set dbs = Nothing

    Set fld = Nothing

    Set rst = Nothing

    End Sub

    Sub clearAll()

    Dim dbs As DAO.Database, rst As DAO.Recordset

    Set dbs = DBEngine(0)(0)

    Set rst = dbs.OpenRecordset("tlinked", dbOpenTable)

    While Not rst.EOF

        CurrentDb.Execute "drop table " & rst.Fields("tabellaCollegata")

        rst.MoveNext

    Wend

    Set rst = Nothing

    CurrentDb.Execute "drop table tlinked"

    Set dbs = Nothing

    End Sub

    La risposta è stata utile?

    2 persone hanno trovato utile questa risposta.
    0 commenti Nessun commento