Newsgroup: it.comp.appl.access
Titolo: Da tabella locale a tabella collegata

Ciao, è possibile senza ricorrere a VBA trasformare una tabella locale in 
una tabella collegata ad un file txt o Excel?
Piu precisamente: ho un file Excel con campi di intestazione nella prima 
riga, se faccio l'importazione seleziono la prima riga come contenente i 
campi, e Access mi crea la tabella importata; dopodiché vorrei copiare la 
struttura e cambiarla in tipo tabella collegata, dove il collegamento punta 
ad un altro file txt (che può avere nome diverso ma stessa struttura dei 
campi). 
 


E pensi di aver necessità di EDITARE questi documenti...?
Se così fosse... direi che magari è opportuno non usare un Database che lavorando su PK non potrebbe fare il suo mestiere.
 
@Alex


Nessuna modifica agli Excel o txt collegati, solo aggancio per poter fare 
query.
Periodicamente vengono sovrascritti con altri txt con lo stesso nome.
Il mio problema è in realtà un altro: ho una marea di campi da specificare 
durante il wizard di collegamento ai txt, e questi txt non hanno la prima 
riga che contiene il nome dei campi.
Quindi il trucco sarebbe: importo un Excel con pochi record di dati e con la 
1a riga avente il nome dei campi, di conseguenza creo velocemente la 
struttura della tabella.  Poi se riuscissi a trasformarla in tabella 
collegata al relativo txt, il gioco è fatto! 
 

Secondo me se scrivi 3 righe di codice... importi in tabella temporanea e fai prima... ma magari frainteso.
In ogni caso puoi tranquillamente linkare sia un file di Excel che un file txt come fosse una linked table... usando i driver ISAM ma se segui la procedura guidata fa tutto lui...
 
@Alex

 fai prima... ma magari frainteso.
Hai capito bene, grazie alex, quindi mi confermi di non perdere altro tempo 
con trucchi vari e procedere con VBA.
Magari se standardizzo la soluzione posso postare qui il codice. 
 

 Magari se standardizzo la soluzione posso postare qui il codice.
 
è un po' tardi e posso vedere eventuali continuazioni solo domattina
 
Da quel che ho capito hai già una specifica valida di LINK per un file Excel
(in cui ci sono le intestazioni -> nomi di campo)
e la vuoi "doppiare" per un file txt nel quale però NON hai la riga di intestazione (i nomi di campo).
 
Penso si possa agire, con cautela (quindi su una copia),
sulle tabelle di sistema MSysIMEXSpecs (master) e MSysIMEXColumns (detail)
con lo scopo di aggiungere una specifica (copiando quella di Excel)
e poi modificarla (va adeguata, almeno per la mancanza di intestazioni)
 
Penso si possa raggiungere lo scopo anche con query di comando
(con le quali ho più dimestichezza rispetto ai recordset)
ovviamente rispettando il vincolo master-detail


ho dato una scorsa al db dove ho qualche specifica,
sia per Excel e sia per file di testo,
aggiungo un paio di rilievi,
e una possibilità operativa (leggi: come proverei a fare io).
 
Forse è meglio far trascrivere al sistema una specifica di esportazione,
da "addestrare" poi ad importazione, e quindi
 
-farei una esportazione in un file di testo della tabella temporanea ottenuta con importa dati da Excel (il sistema registra la specifica nelle due tabelle "IMEX"):
nella tabella hai ora i nomi dei campi e il tipo dati:
ATTENZIONE: con i decimali NON PUOI (a meno di cambiare le specifiche di sistema ma poi devi SEMPRE fare questo, e quindi lo devi fare da codice) ADOPERARE IL SEPARATORE VIRGOLA (che va in conflitto con il separatore campi) e quindi occorre definire questi campi come testo
 
-FORSE (sottolineo forse) a questo punto è sufficiente agire manualmente sulla specifica e cambiare l'indicatore (StartRow in IMEXspecs) delle intestazioni presenti (1) assenti (0), 
MA CONTROLLA BENE l'elenco dei campi delle specifiche !!!
 
altrimenti occorre aggiungere a mano una specifica (se le tabelle non sono editabili, lo diventano con una query di selezione delle intere tabelle)copiando l'intestazione (1 riga) e le colonne (query di accodamento) e modificando quello che è necessario (digitazione diretta)
 
NOTA: ho riscontrato che i campi Start e Width non sono "veri" segnaposti,
in pratica (prova fatta) si possono imporre valori sequenziali (quindi Width sempre=1 e Start in progressione numerica 1,2,3 ...)
 
In ultimo si adopera Docmd.TransferText con gli adeguati argomenti

sulle tabelle di sistema MSysIMEXSpecs (master) e MSysIMEXColumns (detail)
 
Grazie mille delle informazioni, in effetti avevo esaminato anch'io la 
modificabilità delle tabelle di sistema.
Ho verificato che manualmente si possono modificare i nomi dei campi, offset 
e tipo, però sempre con molta cautela.
Altre tabelle sembrano invece bloccate, ma la loro modifica può essere fatta 
con gli oggetti vba.
grazie ancora