Ciao a tutti, io ho una query access, qual è il metodo più semplice per ricevere i risultati della query direttamente in un nuovo file di testo?
(esiste?)
Ciao a tutti, io ho una query access, qual è il metodo più semplice per ricevere i risultati della query direttamente in un nuovo file di testo?
(esiste?)
Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).
Ma devo utilizzare obbligatoriamente VB giusto?
Vba più che Vb; devi usare l'oggetto docmd per eseguire l'output; lo puoi fare da una procedura evento e da codice (anche da macro dalle ultime ver di access)
Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).
Io ho una query che mi estae i dati da un db e me li mostra in una tabella, posso fare che appena eseguo quella query in automatico mi esegue quest'operazione di export?
Mi dai qualche dettaglio su come iniziare a provare (conosco vb.net) quindi so cosa sono le variabili le condizioni e diciamo che se si parla di vba saprei come sintassare più che altro
docmd.OutputTo acOutputTable,"nometabella", acFormatTXT, "nomeepercorsofiledasalvare"
questa è la riga da utilizzare in una routine evento o codice, fai un pulsante ad esempio
Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).
Funziona però mi esporta tutto, ovvio in quanto scrivo "outputtable" ed ogni colonna è divisa da trattini verticali/orizzontali che delimitano le celle.
C'è un modo per estrarre solo determinate colonne? e formattarle, in pratica voglio lo stesso effetto che ho quando copio dalla maschera ed incollo direttamente nel file
puoi estrarre tramite query e farne l'output; guarda la guida di acces relativa al comando e vedi tutte le opzioni disponibili
Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).
è la prima cosa che ho fatto però la guida mi dice i parametri da passare ma non quali sono cioè
ad esempio dice: "" ma cosa posso scrivere non me lo dice, invece quando vedo gli MDSN di vb mi dicono tutto, non c'è una guida simile?
OutputFile Optional Variant A string expression that's the full name, including the path, of the file you want to output the object to. If you leave this argument blank, Access prompts you for an output file name.
A me sicuramente serve l'opzione "TemplateFile" però appunto non so come impostare il file da dargli in pasto Boh
http://msdn.microsoft.com/en-us/libr...ffice.15).aspx
Il metodo più semplice è certamente "OutputTo" te la cavi con 1 sola riga di codice
ma se devi in qualche modo gestire la formattazione del file .txt allora io farei un ciclo su Recordset
se per esempio hai una tabella "T1" con i campi:
- Id
- Cam1
- Cam2
- Cam3
e vuoi escludere dal file .txt il Cam2 con larghezza fissa e separatore " ;"
.codice:Public Function GeneraTxt() ' la stringa della tua query Dim StSql As String StSql = "" StSql = StSql & "SELECT " StSql = StSql & "T1.Id, " StSql = StSql & "T1.Cam1, " StSql = StSql & "T1.Cam3 " StSql = StSql & "FROM " StSql = StSql & "T1" StSql = StSql & ";" ' apro il recordset sulla stringa sopra Dim DBx As DAO.Database Set DBx = DBEngine(0)(0) Dim RSx As DAO.Recordset Set RSx = DBx.OpenRecordset(StSql, dbOpenDynaset) ' verifico che ci sia almeno 1 record If RSx.RecordCount = 0 Then MsgBox "non ci sono record" Exit Function End If ' definisco la larghezza delle colonne del file .txt Dim L01 As Integer ' larghezza 1° colonna Dim L02 As Integer ' larghezza 2° colonna Dim L03 As Integer ' larghezza 3° colonna L01 = 5 L02 = 11 L03 = 20 ' Creo un file di nome "Prova.txt" nella cartella in cui si trova il tuo file di Access ' attento, se hai gia ub file con quel nome lo sovrascrive Open CurrentProject.Path & "\Prova.txt" For Output As #1 ' scrivo nel file .txt RSx.MoveFirst Do Until RSx.EOF 'Write #1, RSx.Fields("Id").Value & " / " & RSx.Fields("Cam1").Value & " / " & RSx.Fields("Cam3").Value & " / " Write #1, " " & Left((RSx.Fields("Id").Value & String(L01, " ")), L01) & " ;" & Left((RSx.Fields("Cam1").Value & String(L02, " ")), L02) & " ;" & Left((RSx.Fields("Cam3").Value & String(L03, " ")), L03) & " " RSx.MoveNext Loop ' chiudo tutto Close #1 RSx.Close DBx.Close Set RSx = Nothing Set DBx = Nothing End Function
Ultima modifica di nman; 07-09-2014 a 10:07