Exportar a txt me multiplica los valores que toma de una consulta

Eh creado un código para exportar una consulta a txt desde access con vba de la siguiente manera:

Private Sub Btn_txt_Click()
Dim rst As DAO.Recordset
Dim output As String
Dim fld As DAO.Field
Dim nmbField As String

Open "C:\Users\Documents\" + Nmb_reporte + Str(Day(Date)) + Str(Month(Date)) + Str(Year(Date)) + ".txt" For Output As #1

Set rst = CurrentDb.OpenRecordset("Select * from [" & Nmb_obj_reporte & " ]", dbOpenSnapshot)

Do While Not rst.EOF

For Each fld In rst.Fields
nmbField = fld.Name
Print #1, rst.Fields(5)
Next
rst.MoveNext
Loop

rst.Close
Set rst = Nothing
Close #1
End Sub

El problema ocurre que cuando exporta solo logro exportar 1 solo campo de cualquiera de mis consultas y el campo que logra exportar lo multiplica por 50 es decir me aparece 50 veces el mismo dato por cada uno de los registro, quisiera que me ayudaran a detectar cual es el problema y como puedo leer todos los campos del registro sin especificarlo uno por uno.

1 respuesta

Respuesta
2

Creo que el error lo tienes en esta linea:

Print #1, rst. Fields(5)

Que debiera ser:

Print #1, rst. Fields(nmbField)

Porque de la forma que tu lo tienes, siempre te exporta el mismo campo (el que corresponde al índice 5), y por eso te parece que te lo multiplica.

Muchísimas gracias, efectivamente me trae los campos pero uno bajo del otro como lo colocaría en orden para que sea tabulado? es decir, que cada fila sea un registro completo de todos los datos de la consulta.

A ver de este modo:

output=""

For Each fld In rst.Fields
nmbField = fld.Name
output=output  & rst.Fields(nmbField) & Chr(9)
Next

Print #1, output
rst.MoveNext

Loop

Sveinbjorn El Rojo muchísimas gracias, eres un sol, tenia tiempo buscándolo y tu lo hiciste de una manera muy sencillla, había encontrado códigos larguísimos que solo me generaban errores y tu fuiste muy simple, muchas gracias por tu ayuda experto.

Saludos

De nada!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas