7 messaggi dal 27 maggio 2002
Ciao a tutti!
Come faccio a prelevare dei dati da un database e a generare con questi un file di testo?
Grazie!
CIAO

11.886 messaggi dal 09 febbraio 2002
Contributi
Puoi usare FileSystemObject, è un'oggetto ASP che ti permette di compiere delle azioni su file e cartelle come spostare, rinominare e appunto scrivere.

Una volta che hai aperto una connessione al database e popolato un recordset ti manca solamente l'oggetto in questione per poter scrivere i dati. Fai così:

Dim fso
set fso = Server.CreateObject("Scripting.FileSystemObject")

Ora che l'oggetto è istanziato, non ci rimane che aprire un file di testo in scrittura:

Dim file
set file = fso.OpenTextFile (Server.MapPath("tuofile.txt"), 2, true)

Ora puoi scrivere i tuoi dati usando i metodi write e writeline

file.writeline(rs("campo1")&rs("campo2))

Quando hai fatto, chiudi il file
file.close

e diamo una pulita:

set file = nothing
set fso = nothing

cerca in giro per il forum, filesystemobject ha un sacco di metodi utili per gestire i tuoi file. Un solo consiglio:
quando apri un file di testo in scrittura, questo viene immediatamente cancellato, per cui se vuoi aggiungere delle informazioni ad un preesistente file, prima lo apri in sola lettura, copi il contenuto in un array, chiudi il file, lo riapri in scrittura, copi l'array sul file e aggiungi i nuovi dati...

-----------------------
Da una perla dal saggio:
Quando non hai capito, devi dire "non ho capito", no che dici che hai capito e invece non hai capito un cavolo. Hai capito?
-----------------------

Enjoy learning and just keep making
7 messaggi dal 27 maggio 2002
Non funziona!!
Nel campo "campo1" devo inserire i campi del database, vero?
Mentre "tuofile.txt" è il nome del file che si deve generare?
E poi il file di testo a me serve in sola lettura, non deve essere modificabile!
GRAZIE

123 messaggi dal 06 luglio 2001
Potresti usare il metodo GetString (mi pare si chiami così) della classe ADODB.Recordset. Al metodo puo già specificare i caratteri di divisione di campi e record e come gestire i valori NULL. A questo punto cicli i record e con il metodo di cui ti parlo ottieni una riga per ogni record. Poi la butti dove ti pare, sia in file di testo che direttamente a video (in questo caso devi passare al client uno stream di testo specificando in ASP il content-type giusto, e cioè text/plain)

Ciao

Cold
11.886 messaggi dal 09 febbraio 2002
Contributi
Si, ma il file deve essere modificato.. da te!
in questa riga:

set file = fso.OpenTextFile (Server.MapPath("tuofile.txt"), 2, true)

Quel ,2 sta a significare che apri il file di testo in scrittura, necessario se ci vuoi buttare dentro i dati.
,True indica che se il file "tuofile.txt" non esiste, viene creato.

A posto di tuofile.txt mettici un percorso relativo a un file di testo, che ne so...
../file.txt
oppure
../cartella/sottocartella/file.txt

per prendere i dati dal database, dopo aver fatto la connessione, puoi fare come ti dice cold80.

Se hai qualche problema posta un po' di codice e risolviamo piano piano

-----------------------
Da una perla dal saggio:
Quando non hai capito, devi dire "non ho capito", no che dici che hai capito e invece non hai capito un cavolo. Hai capito?
-----------------------

Enjoy learning and just keep making
7 messaggi dal 27 maggio 2002
Questo è il pezzo di codice in questione:

Dim fso
set fso = Server.CreateObject("Scripting.FileSystemObject")
Dim file
set file = fso.OpenTextFile (Server.MapPath("C:\Inetpub\wwwroot\abc\daticliente.txt"), 2, true)

file.writeline(rs("nome_cliente")&rs("cognome_cliente")&rs("indirizzo_cliente")&rs("citta_cliente")&rs("telefono_cliente")&rs("email_cliente")&rs("cap_cliente")&rs("provincia_cliente"))
file.close
set file = nothing
set fso = nothing



Attento che con server.mappath non puoi usare un percorso assoluto.
Biank


Alberto Biancardo
7 messaggi dal 27 maggio 2002
Ho provato con tre tipi di codici diversi:

Dim fso
set fso = Server.CreateObject("Scripting.FileSystemObject")
Dim file
set file = fso.OpenTextFile (Server.MapPath("daticliente.txt"), 2, true)

file.writeline(rs("nome_cliente")&rs("cognome_cliente")&rs("indirizzo_cliente")&rs("citta_cliente")&rs("telefono_cliente")&rs("email_cliente")&rs("cap_cliente")&rs("provincia_cliente"))
file.close
set file = nothing
set fso = nothing
---------------------------------------------------------------------------------

Dim fso, f1
set fso = Server.CreateObject("Scripting.FileSystemObject")
set f1 = fso.CreateTextFile ("C:\Inetpub\wwwroot\valtermoto2.it\daticliente.txt", true)

---------------------------------------------------------------------------------

Dim fso, ts
Const ForWriting = 2
set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile ("C:\Inetpub\wwwroot\valtermoto2.it\daticliente.txt")
set f1 = fso.GetFile ("C:\Inetpub\wwwroot\valtermoto2.it\daticliente.txt")
set ts = f1.OpenAsTextStream(ForWriting, True)






Ma il tipo di errore è sempre lo stesso:
Errore di run-time di Microsoft VBScript (0x800A0046)
Autorizzazione negata


Adesso credo di aver capito, GRAZIE per il codice che mi avete consigliato, mi è stato utilissimo.
CIAO

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.