Newsgroup: it.comp.appl.access
Titolo: ricollegare tabelle collegate al backend mysql da vba

buongiorno a tutti, ho un frontend che con un pulsante esegue un codice VBA che ricollega le tabelle collegate da un database backend1.accdb ad un database backend2.accdb senza problemi
 
il problema è quando userò mysql e collegherò le tabelle a mysql come backend, sono a conoscenza del fatto che si debba creare un file odbc contenente qualcosa di simile
 
[ODBC]
DRIVER=MySQL ODBC 8.0 ANSI Driver
UID=root
PORT=numeroporta
DATABASE=miodatabase
SERVER=ipServer
 
 
dovrò creare un duplicato del database backend in mysql esempio
database di nome clienti, la copia si chiamerà clientiTEST
 
ho necessità di sapere se in VBA si può ricollegare le tabelle collegate del frontend da un db all'altro dei due db presenti in mysql
 
qualche dritta o qualche idea?
 
grazie.


Porta pazienza, ma non si capisce esattamente cosa stai chiedendo
Esplicita per favore quel "..si debba creare un file odbc .."
Cos'e' un 'file odbc' ?
 
Se per 'file odbc' intendi la creazione di un nuovo dsn come solitamente 
si fa da PannelloControllo/StrumentiAmministrazione/OdbcDataSource 
allora credo sia necessario creare una nuova sezione nel registry di Windows
 
Per la richiesta del ricollegamento su altro db, certamente deve andare
Se la routine che hai fatto funziona ricollegando le tabelle al primo 
db, non c'e' motivo che non debba funzionare se la lanci sul secondo db
 
Ti consiglierei prima di lanciare il ricollegamento sul secondo db di 
azzerare la memoria programma relativamente alle tabelle collegate, 
perche' potrebbe essere che rimanga collegata qualche tabelle del primo 
db, ad esempio se il primo db ha tabelle ARTICOLI, CLIENTI, PREZZI ed il 
secondo db ha tabelle ARTICOLI, CLIENTI, quando lanci il ricollegamento 
al secondo db ti ritrovi due tabelle collegate al secondo db e la 
tabella PREZZI collegata al primo db


Mi spiego meglio, ad oggi riesco a gestire tabelle collegate di un database backend che è formato accdb
con la routine VBA qui sotto indicata riesco a collegare le tabelle collegate ad un altro backend che è sempre in formato accdb 
il tutto funziona senza problemi.
 
il mio problema è il seguente: dovendo migrare i backend access in mysql avrò che le tabelle collegate nel front end non saranno più collegate ad un backend accdb ma ad un backend mysql, per collegare MANUALMENTE le tabelle del frontend ad un database mysql non ho problemi, basta creare il file ODBC in windows in PannelloControllo/StrumentiAmministrazione/OdbcDataSource e poi passare tale file nomefile.dns ai vari client.
 
Quello che vorrei riuscire a fare è:
Creare due copie identiche del database backend in mysql una di nome DATABASEREALE una copia di nome DATABASETEST
una routine tipo quella qui sotto in VBA alla quale passo una volta il file ODBC di nome DatabaseReale.dns e questa routine mi collega le tabelle collegate del client al database mysql reale, un altra volta passare il file ODBC di nome DatabaseTest.dns e questa routine mi collega le tabelle collegate del client al database mysql per i TEST
 
la routine qui sotto funziona per i backend in formato accdb non funziona (o almeno credo che non funzioni) per i database mysql.
 
'connette le tabelle al percorso indicato
Public Function ConnettiTabelle(path As String)
Dim miatable As TableDef
Dim miodb As Database
Dim i As Integer
 
Set miodb = CurrentDb()
For i = 0 To miodb.TableDefs.Count - 1
        Set miatable = miodb.TableDefs(i)
        Dim backend As String
        Dim PathConnect As String
 
        'prelevo il file backend a cui la tabella attuale del ciclo for è connessa
        backend = CalcolaNomeFileConEstensione(miatable.Connect)
        'aggiungo al path nuovo il backend per ottentere il path completo del nuovo backend
        PathConnect = path & backend
 
        'connetto le tabelle collegate al nuovo path
        ' istruzione da usare se il backend ha la password
        'miatable.Connect = ";DATABASE=" & PathConnect & ";UID=sa;PWD=1234;"
        miatable.Connect = ";DATABASE=" & PathConnect & ";UID=sa;"
        miatable.RefreshLink
Next i
End Function
 
 

 End Function
 
 
https://groups.google.com/g/it.comp.appl.access/c/wbxMsPiFTas/m/JjAzqPOCAgAJ
 
 
 


lo so, non trovavo più il post


se a qualcuno dovesse servire ho trovato questa sintassi 
 
ConnectionString = "DRIVER={MySQL ODBC 8.0 Driver};\
                   SERVER=localhost;\
                   DATABASE=test;\
                   USER=venu;\
                   PASSWORD=venu;\
                   OPTION=3;"
 
tutti i dettagli dei parametri si trovano qui
https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-configuration-connection-parameters.html