
Originariamente inviata da
deamon75
Ciao a tutti, io ho una query access, qual è il metodo più semplice ........
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
.