Newsgroup: it.comp.appl.access
Titolo: scrivere campi su txt

Ciao a Tutti
Avrei la necessità di scrivere alcune variabili di un Query su file TXT
dove possi trovare delle informazioni semplici?????
ciao
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/


Ciao,
Vedi Help : Metodo TrasfertText
DoCmd.TransferText
.Bat


Scusa forse mi sono espresso male
ma avrei l'intenzione di aprire o sovrascrivere un file assegni.txt che si
trova in una precisa cartella dove all'interno devo scrivere in posizioni
prestabilite delle variabili che sono poi i campi della Query.
Avrei la necessita di trovare informazioni per Creare/sovrascrivere file
assegni.txt e scrivere in precise posizioni variabili.


 ha scritto nel messaggio 
news:81Z114Z227Z244Y...@usenet.libero.it...

Per fare questo hai la necessità di conoscere l'esatta posizione in cui 
scrivere.
Normalmente ci si serve di "capoversi/sezioni" del tipo [Sezione1] in modo 
da scrivere nella riga immediatamente sottostante il valore desiderato.
Per esempio il file win.ini è strutturato proprio così.
Il tuo file di testo ha dei "capoversi/sezioni" così strutturati? Hai modo 
di individuare sul file dei punti precisi?
Ciao, Carlo 

 assegni.txt e scrivere in precise posizioni variabili.
Per scrivere su file di testo guarda nella guida i metodi "open",
"seek", mentre per le stringhe puoi guardare la funzione replace() (se
hai access >97) e magari anche instr().
Basilarmente la scrittura su file di testo si fa così:
open filetxt for output as #1  ' apre il file in scrittura
print #1, stringa                   ' scrive una stringa nel file
close #1                              ' chiude il file aperto
Se vuoi riportare i risultati di query su file di testo, una traccia
può essere questa:
sql = "select * from tbl_assegni"
set rst = currentdb.openrecordset(sql)
if rst.BOF then exit sub ' se non ci sono risultati esce dalla routine
open filetxt for output as #1
do while not rst.EOF
 stringa = "assegno " & rst!valore1 & " data " & rst!valore2
 print #1, stringa
loop
rst.close
close #1
set rst = nothing
Poi, dipende... il codice qui sopra ti "incolonna" su file di testo
dei valori presi da una tabella.
Però da quello che hai scritto sembrerebbe che tu debba gestire una
roba tipo 'template', cioè un file di testo nel quale devi sostituire
dei 'marcatori' con stringhe da te elaborate; in questo caso la
faccenda è un po' diversa (e se hai Access 97 la funzione Replace() la
devi pure aggiungere tu).
ciao,
Panathos

 ha
scritto:

Il problema è che con una stampante ad aghi EPSON LQ-590 dal un report di
Access non riesco a stampare correttamente, ho provato a trasformare il
report in file txt ma gli spazzi non sono sempre uguali,
DoCmd.OutputTo acOutputReport, "R_ASSEGNI", acFormatTXT, "C:\ASSEGNI.TXT",
True
Quindi, secondo me, la strada da percorrere è quella di scrivere il
risultato di tre campi di una Query su dei posti precisi del file
assegni.txt. però se hai altra soluzione sarei contento di saperla.
Non ho mai scritto o letto su file txt quindi avrei la necessità di
conoscere qualcosa per poterlo fare.
ciao
grazie infinite



ho provato quanto mi hai dato e ho fatto quanto sotto con il quale riesco a
scrivere si .txt ma ha 1 problema
ho fatto un ciclo for naxt per stampare i record della query ma mi stampa
sempre quello della primo record
di solito inserivo rst.FindNext se rst č una tabella ma in una Query???????
come posso fare ????
ciao
e grazie infinite
'SB
'Variabili
'****************************************************************************************************
Dim DB As Database
Set DB = CurrentDb
Dim NumeroRecord As Recordset
Dim Numero As Integer
'****************************************************************************************************
Set NumeroRecord = DB.OpenRecordset("SELECT Count(*) AS N FROM ASSEGNI",
dbOpenDynaset)
Numero = NumeroRecord!n
Set rst = DB.OpenRecordset("SELECT ASSEGNI.CDPERSON_M, ASSEGNI.COGN_NOM,
ASSEGNI.Data_ASS, ASSEGNI.Euro_ASS, ASSEGNI.Euro_Lett_ASS,
ASSEGNI.INTESTATARIO, ASSEGNI.Data_MAT, ASSEGNI.NOTE, ASSEGNI.Elimina FROM
ASSEGNI ORDER BY ASSEGNI.INTESTATARIO;", dbOpenDynaset)
If rst.BOF Then Exit Sub ' se non ci sono risultati esce dalla routine
Open "C:\ASSEGNI.TXT" For Output As #1
For Conta = 1 To Numero
 stringa = "1"
 Print #1, stringa
 
 stringa = "2 " & rst!Euro_ASS
 Print #1, stringa
 
 stringa = "3"
 Print #1, stringa
 
 stringa = "4"
 Print #1, stringa
 
 stringa = "5 " & rst!Euro_Lett_ASS
 Print #1, stringa
 
 stringa = "6 " & rst!INTESTATARIO
 Print #1, stringa
 
'rst.FindNext
Next Conta
rst.Close
Close #1
Set rst = Nothing


 di solito inserivo rst.FindNext se rst è una tabella ma in una Query???????
Tabella o query, sempre recordset sono, quindi il metodo corretto è
rst.MoveNext invece di rst.FindNext
Tra l'altro, vedo che nel ciclo usi for... next con un contatore. Se
devi ciclare solo in una parte di risultati, va bene.
Ma se devi scorrere l'intero recordset restituito dalla query, ti
conviene usare
do until rst.EOF  = true
... istruzioni
... istruzioni
loop
P.S.: per cortesia quando rispondi cancella le parti di messaggio
superflue, grazie.
ciao,
Panathos