Newsgroup: it.comp.appl.access
Titolo: Modifica della struttura di una tabella collegata

Buongiorno,
come da oggetto, ho la necessità di aggiungere due campi ad una tabella collegata di un database.
Ho provato sia con SQL (ALTER TABLE) che con DAO
 
TDF1.Fields.Append TDF1.CreateField(strCampo, dbText, intDimensione)
 
ma in entrambi i casi ricevo sempre il messaggio di errore "Impossibile modificare la struttura delle tabelle collegate".
 
Navigando in Google ho trovato vecchi post (2010-2011) che dicono che non è possibile modificare le tabelle collegate.
 
Però io non ho la possibilità di collegarmi a tutte le banche dati, il programma mi è "scappato di mano" nel senso che con il passaparola i colleghi di Torino lo hanno passato ad altri colleghi in Italia, ma io non ho accesso ai loro server.
 
Come posso ovviare a tale problema?
 
Ho letto che è possibile importare la tabella in locale, modificarla e poi esportarla di nuovo, ma non so come si fa.
 
Uso Access 2013.
 
 
Saluti
Franco


Non puoi... i comandi DDL funzionano sul DB diretto... quindi se vuoi puoi scrivere un codice in file VBS, lo mandi ad i colleghi spiegandogli di mettere il File nella stessa cartella del DB(Server), poi gli dici di eseguirlo...
 
Oppure se vuoi essere più tecnico, crei un piccolo applicativo in Access che legge la Connection String del Client e ricava il PATH del Server, fai una connessione DIRETTA tramite codice con OpenCurrentDatabase e da li usando EXECUTE esegui il comando DDL, oppure con DAO fai Append sul Fields...
 
@Alex
 
@Alex


Grazie Alex,
purtroppo non sono in grado di utilizzare i due metodi suggeriti. Il primo mi sembra il più immediato però non conosco il linguaggio VBS; cercherò qualche guida in rete. Il secondo per me è arabo (ahimè).
Franco

franco...@gmail.com
 has brought this to us :

Crea una tua tabella locale coi due campi e l'identificativo
che trai dalla tabella collegata.
Crea poi una query che ti mostri sincronizzate la tabelle
collegata e quella locale.
E utilizza detta query per tutte le tue esigenze.
 
Bruno

Salve,
 
franco...@gmail.com
:

L'ho fatto mille volte da un frontend di un'applicazione per personale 
di vendita esterna che quasi non vedevo mai. In principio:
 
Dim db As DAO.Database
Set db = DBEngine.Workspaces(0).OpenDatabase(CurrentProject.Path & 
"\Backend.accdb")
 
'p.e. aggiungere un campo
If fctFieldExists("MioTabella", "NuovoCampo") = False Then
 
   db.Execute "ALTER TABLE MioTabella ADD COLUMN NuovoCampo VARCHAR(50)"
 
End If
 
Nel mio caso il backend era sempre nella stessa cartella del frontend. 
Per questo funzionava con CurrentProject.Path. Se non sai dove si trova 
il backend puo leggerlo da una tabella collegata p.e. con
 
Mid(Currentdb.TableDefs("TabellaCollegata").Connect, 11)
 
fctFieldExists era una semplice funzione ciclando l'insieme Fields della 
tabella per controllare se il campo già esiste.
 
-- 
Ciao
Karl
*********
http://AccessDevCon.com
 
Access FAQ: 
http://donkarl.com/it
 


Perfetto, funziona alla grande!
Io ero riuscito a creare un file vbs che mi modificasse la tabella, ma così è sicuramente più tecnico e più sicuro.
Grazie Karl