Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

esportare tabella access in txt

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

esportare tabella access in txt

Postdi miko » 01/07/11 11:15

salve,
rifacendomi a quanto discusso nel post relativo all'importazione di txt in access
ho pensato di usare la macro di flash per invertire il processo, esportare una tabella con i suoi campi in un txt che ha la seguente struttura:
http://uploading.com/files/a8b8c693/esempio%2Btxt.txt/
dalle mie ricerche ho capito che devo creare una open che crei il txt, ma poi come scrivo il codice per indicare i campi che vorrei esportare?
saluti grazie
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Sponsor
 


Re: esportare tabella access in txt

Postdi miko » 01/07/11 19:04

salve,
grazie archimede per le indicazioni;
nella mia ricerca non avevo trovato questi siti ma altri;
tutti hanno però in comune il metoto TransferText e la specifica di esportazione, quest'ultima difficilmente modificabile, da quello che ho capito, se non ripetendo l'esportazione guidata.
io invece preferivo agire sulla macro di flash che, data la sua semplicità, è facilmente modificabile ed adattabile ad altre situazioni inserendola nel vba e con un semplice copia incolla in qualsiasi db.
continuo le ricerche, ma fino ad ora si descrive sempre lo stesso argomento.
grazie ciao
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Re: esportare tabella access in txt

Postdi Flash30005 » 01/07/11 19:17

Il procedimento non è complesso
si legge la tabella di access record per record (vedi macro altro quesito e il suo loop)
ogni record ha più campi quindi quando stai su un record
passerai da un campo all'altro inserendo una , (virgola) o ; (punto e virgola) a secondo di come vuoi come separatore nel file testo generando una stringa (TuaStringa)
Perc = "C:\Temp\" '<<<< (Va all'inizio della macro)
a questo punto fai una open
Codice: Seleziona tutto
Open Perc & "File.txt" For Append As #1
Print #1, TuaStringa
Close #1

Loop '<<<< va al record successivo della tabella access


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: esportare tabella access in txt

Postdi miko » 01/07/11 19:37

ciao, non capisco a cosa ti riferisci
...vedi macro altro quesito...

sto vedendo le altre macro ma...
grazie ciao
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Re: esportare tabella access in txt

Postdi Flash30005 » 01/07/11 20:29

Il tuo quesito, no?
Codice: Seleziona tutto
Private Sub Comando108_Click()
Dim criterio As String
Dim DBCOrrente As DAO.Database
Dim Tabella As DAO.Recordset
Set db = CurrentDb

Set Tabella = db.OpenRecordset("ARCHIVIO_WINFORLIFE", dbOpenDynaset)

Do Until Tabella.EOF

    IDM = Tabella("ID")
    N1M = Tabella("n1")
    N2M = Tabella("n2")
    N3M = Tabella("n3")
    N4M = Tabella("n4")
    N5M = Tabella("n5")
    N6M = Tabella("n6")
    N7M = Tabella("n7")
    N8M = Tabella("n8")
    N9M = Tabella("n9")
    N10M = Tabella("n10")

TuaStringa = IDM & ";" &  N1M & ";" & N2M & ";" & N3M & ":" &  N4M & ";" & N5M & ";" & N6M & ";" & N7M & ";" N8M & ";" & N9M & ";" N10M

'ora qui metti la Open, lo devo fare io?


    Tabella.MoveNext
Loop

Tabella.Close
db.Close
End Sub


Ciao

EDIT: Corretta macro come rilevato da Miko
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: esportare tabella access in txt

Postdi miko » 02/07/11 10:50

buongiorno,
credevo che ti riferissi al mio post "IMPORTARE TXT IN ACCESS", del quale tra l'altro non ho ancora trovato la soluzione;
perciò rivedevo la relativa macro da te realizzata e avendo dimenticato la sintassi della open facevo nuovamente una ricerca in internet;
non mi sono accorto che, velocemente, avevi già risposto.
ho risolto parzialmente il problema aggiungendo al tuo codice le linee, evidenziate:
Codice: Seleziona tutto
Private Sub Comando12_Click()
Dim DBCOrrente As DAO.Database
Dim Tabella As DAO.Recordset
Set DB = CurrentDb
Set Tabella = DB.OpenRecordset("ARCHIVIO_WINFORLIFE", dbOpenDynaset)
Do Until Tabella.EOF
    IDM = Tabella("ID")
    N1M = Tabella("n1")
    N2M = Tabella("n2")
    N3M = Tabella("n3")
    N4M = Tabella("n4")
    N5M = Tabella("n5")
    N6M = Tabella("n6")
    N7M = Tabella("n7")
    N8M = Tabella("n8")
    N9M = Tabella("n9")
    N10M = Tabella("n10")

TuaStringa = IDM & ";" & N1M & ";" & N2M & ";" & N3M & ";" & N4M & ";" & N5M & ";" & N6M & ";" & N7M & ";" & N8M & ";" & N9M & ";" & N10M

'ora qui metti la Open, lo devo fare io?
'Open "D:\ACCESS\ESPORTARE TABELLA IN TXT\FILEPROV.txt" For Output As #1 ' <<<<<
Open "D:\ACCESS\ESPORTARE TABELLA IN TXT\FILEPROV.txt" For Append As #1 '<<<<<
Print #1, TuaStringa
    Close #1 '<<<<<<<<
    Tabella.MoveNext
    'Close #1 '<<<<<<<<<
Loop
Tabella.Close
DB.Close
End Sub

nel tuo codice alla linea TuaStringa manca qualche & commerciale, questo per avvertire gli altri utenti.
il problema che ora si presenta è che:
1) se uso la linea con output, qualunque sia la posizione di Close #1, si crea il txt ed in esso trovo, alla prima linea-riga, solo l'ultimo record della tabella;
2) se uso la linea con append, anche qui qualunque sia la posizione di Close #1, nel txt trovo tutti i records della tabella ma a partire dalla linea-riga 2 del txt, la prima linea è vuota;
3) se poi porto fuori dal loop il 'Close #1 il processo si blocca con messaggio file gia aperto ed il debug mostra la line dell' open txt;
il punto 2) andrebbe bene, ma non capisco perchè incomincia ad inserire i dati dalla seconda linea.
ciao, grazie
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Re: esportare tabella access in txt

Postdi Flash30005 » 02/07/11 10:58

Strano sembrerebbe un record vuoto,
se così
prova inserendo la condizione
Codice: Seleziona tutto
if tuastringa <> "" then Print #1, TuaStringa


Devi usare append per aggiungere altrimenti con Output ofni volta sostituisci il file (sovrascrive il precedente)
se però devi avere un file diverso ad ogni elaborazione e quindi non vuoi aggiungere record al txt
dovrai cancellare il txt prima di avviare il processo
Codice: Seleziona tutto
Private Sub Comando108_Click()
Dim criterio As String
Perc = "C:\Temp\"
Kill perc & "File.txt"
...
tutto il resto...


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: esportare tabella access in txt

Postdi miko » 02/07/11 11:15

ciao,
considerato il tuo dubbio:
..sembrerebbe un record vuoto...

ho ricreato una nuova tabella ed inserito la condizione if, ma il problema persiste;
continua a scrivere dalla seconda linea.
vedo anche che il contatore parte dal valore 2 e non da 1 come in altri casi, eppure si tratta di una tabella nuova.
saluti, grazie
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Postdi archimede » 02/07/11 11:19

miko ha scritto:quest'ultima difficilmente modificabile
Ma cosa devi modificare una volta che l'export funziona?

Raramente scrivere del codice custom per funzioni già presenti nel prodotto che si usa è una buona idea, ma la scelta finale è tua ovviamente.

Buona fortuna.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Re: esportare tabella access in txt

Postdi miko » 02/07/11 12:00

salve, con
..quest'ultima difficilmente modificabile

intendevo dire che se si vuole cambiare nome o percorso del file di deve ripetere ogni volta il procedimento guidato, e se l'esportazione serve per altri db è necessario ripetere anche per questi.
inoltre l'esportazione guidata non mi ha fornito risultati soddisfacenti, trovo i dati non disposti sulle stesse colonne.
la macro mi sembra più facile da gestire.
flash ha indovinato il problema.
eseguendo l'esportazione guidata trovo nel txt una linea vuota, 0 0 0 0.. che non vedo in tabella.
eseguendo la tua macro ora trovo nel txt la linea vuota in prima posizione;
non capisco prima non scriveva la linea vuota ora si;
e poi in tabella non c'è, risultano 10 records quanti in effetti sono.
allora ho eliminato tutti i records dalla tabella, reimportato i dati ed eseguito l'esportazione;
nel txt trovo tutti i records a partire dalla prima linea;
ma eseguendo una nuova esportazione si è ripresentato il problema, la prima linea è vuota ed i valori vengono scritti dalla linea 2.
è un mistero questo access.
saluti, grazie
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Re: esportare tabella access in txt

Postdi Flash30005 » 02/07/11 12:58

Invia il file testo
e il db
dici che è una linea vuota ma poi dici con campi 0 0 0
è ben diverso
devo analizzare meglio
anche perché a me non è mai successo 8)

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: esportare tabella access in txt

Postdi miko » 02/07/11 16:50

buona sera,
si perchè alcune volte ottengo la prima linea completamente vuota, altre volte contiene solo l'ID=1 e tutto il resto 0 0 0 0...;
altre volte avevo anche il primo records con solo l'ID=1 e tutti gli altri campi con 0;
eseguivo questo iter: eliminavo i records ed il contenuto del txt ed eseguivo nuovamente l'importazione e l'esportazione.
allora ho ricostruito l'intero db ex novo pensando ad un difetto nel db;
il risultato non cambia, ma è strano poichè la prima volta che eseguo l'esportazione la scrittura avviene a partire dalla prima linea del txt;
se cancello il contenuto del txt ed eseguo nuovamente l'esportazione la prima linea e vuota senza alcun dato.
forse però ho risolto il problema:
ho cancellato manualmente il txt, non ho ancora inserito la linea del kill, e dopo una 20 di volte che ripeto il processo tutto funziona perfettamente;
spero che non sia solo fortuna ed alla 21 volta si ripeta il problema.
mi è sorto però un altro problema in quanto i valori nel txt non si trovano sulle stesse colonne;
considerando ad esempio l'ultima colonna, più facile da controllare, alcuni dati si trovano in colonna 26, altri in col. 25, altri in col 29;
forse dipende dal fatto che access prende i valori senza considerare se nei campi c'è un singolo numero o due numeri, cioè 1 e 15, e quindi quando avviene l'esportazione viene scritto 1 5 13 e scrivevdo la linea successiva si ha ad esempio
............... 18 19 20
per cui si ha questo spostamento.
come possio ovviare a questo altro problema?
invio lo stesso i file così puoi renderti conto del risultato:
questo è il txt che uso per importare:
http://uploading.com/files/ccd4m692/ARCHIVIO_WINFORLIFE.Txt/
questo è il nuovo db, all'interno ho inserito la tua macro che uso per importare, ma non credo che dipenda da questa poichè usata nell'altro progetto funziona benissimo:
http://uploading.com/files/5a5e1a86/ESPORTARE%2BTABELLA%2BIN%2BTXT.mdb/
ed infine questo è il txt che ottengo:
http://uploading.com/files/616mf2mc/FILEPROV.txt/
ciao felice sabato, grazie
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Re: esportare tabella access in txt

Postdi Flash30005 » 03/07/11 18:11

Miko,

è chiaro che se per sbaglio è subentrata una riga vuota quella rimarrà lì in quanto usi Append che accoda sempre
per questo dicevo di eliminare il file con il codice
Codice: Seleziona tutto
Kill Perc & "File.txt"

prima del processo.
Ho preso il tuo file e funziona, appunto, come alla fine dici e non ti preoccupare che non troverai un record vuoto

Ti invio di nuovo tutto in quanto ho inserito un msgbox per testare record per record
così, in futuro, saprai come fare per visualizzare cosa scrivi
(gli msgbox funzionano come in excel ma un po' tutto il vba access è molto simile ad Excel)

download

Per quanto riguarda il tuo quesito non ho capito cosa intendi per saltare i record
il trasferimento da tabella a txt segue l'ordine che è in tabella (o criteri di ricerca impostati nella macro)

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: esportare tabella access in txt

Postdi miko » 04/07/11 18:28

buonasera,
hai ragione inserendo la linea di codice che elimina il file tutto funziona perfettamente.
problema risolto.
grazie ciao
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44


Torna a Applicazioni Office Windows


Topic correlati a "esportare tabella access in txt":


Chi c’è in linea

Visitano il forum: Marius44, raimea e 17 ospiti