Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Exportar un Recordset a un .txt

506 views
Skip to first unread message

Luis Omar

unread,
Mar 10, 2003, 10:09:43 AM3/10/03
to
Hola a todos

Cómo podría exportar un recordset a fichero txt con
formato delimitador.

Agradecido de antemano.

Luijo

McPegasus

unread,
Mar 10, 2003, 10:20:20 AM3/10/03
to
Hola Luis,

Pues puedes utilizar el asistente para exportación de texto.

Te sitúas encima de una tabla | Botón derecho ratón | Guardar como... |
Activas, En un archivo o una base de datos externos | Guardar como tipo =
Archivos de texto

--
Un Saludo,

¡¡Se está preparando el III Encuentro!!
http://www.mcpegasus.com/encuentros/iiiencuentro.htm

McPegasus
Valencia (es)

[MVP - Access MS]
mcpe...@mcpegasus.com
www.mcpegasus.com

"Luis Omar" <l69...@hotmail.com> escribió en el mensaje
news:048b01c2e717$14715170$a301...@phx.gbl...

Eduardo Olaz

unread,
Mar 11, 2003, 1:26:45 AM3/11/03
to
Aquí te adjunto un código usando ADO, por lo que tendrás que activar la
biblioteca de DAO en las referencias
Este código te crea un fichero en la misma carpeta que el fichero mdb
Al parámetro SQL se le pasa el SQL que define el Recordset que quieres
exportar.
Si por ejemplo quisieras exportar tabla Clientes al fichero Clientes.txt,
con el carácter | como delimitador, para llamar al procedimiento lo tendrías
que hacer así:

RecordSetAtxt "SELECT * FROM Clientes", "Clientes.txt", "|"

Para grabar los datos utiliza el procedimiento GrabaDato
____________________________________

Public Sub RecordSetAtxt( _
ByVal SQL As String, _
ByVal Fichero As String, _
Optional ByVal Separador As String = ";")

' Este procedimiento graba el Recordset
' generado por el parámetro SQL
' en el fichero pasado como parámetro.
' edu...@olaz.net

On Error GoTo HayError
Dim strFichero As String
Dim i As Long
Dim rs As DAO.Recordset
Dim lngCampos As Long
Dim strCampo As String
Dim strRegistro As String
Set rs = CurrentDb.OpenRecordset( _
SQL, dbOpenSnapshot)

strFichero = CurrentProject.Path & "\" & Fichero
With rs
'Cargamos los campos del Recordset em la matriz
lngCampos = .Fields.Count
If lngCampos = 0 Then
.Close
Set rs = Nothing
Exit Sub
End If
If .RecordCount > 0 Then
.MoveFirst
Do While Not .EOF
strRegistro = .Fields(0)
For i = 1 To lngCampos - 1
strRegistro = strRegistro & Separador
strRegistro = strRegistro & .Fields(i)
Next i
GrabaDato strRegistro, strFichero, ";"
.MoveNext
Loop
End If
.Close
End With
Set rs = Nothing
Salir:
Exit Sub
HayError:
MsgBox "Se ha producido el error nº " _
& CStr(Err.Number) _
& vbCrLf _
& Err.Description, _
vbCritical + vbOKOnly, _
" Error en el procedimiento RecordSetAtxt"
End Sub

Public Sub GrabaDato(ByVal Dato As String, ByVal Fichero As String)
Dim lngFichero As Long
lngFichero = FreeFile
Open Fichero For Append As #lngFichero
Print #lngFichero, Dato
Close #lngFichero
End Sub
____________________________________

Saludos desde la calle Estafeta de Pamplona

Eduardo Olaz
Microsoft [MVP] Access

edu...@olaz.net

"Luis Omar" <l69...@hotmail.com> escribió en el mensaje
news:048b01c2e717$14715170$a301...@phx.gbl...

Eduardo Olaz

unread,
Mar 11, 2003, 1:35:25 AM3/11/03
to
Al código le sobraba la variable strCampo y le faltaba la línea de salida
cuando hubiera error
Aquí lo paso completo:
____________________________________

Public Sub RecordSetAtxt( _
ByVal SQL As String, _
ByVal Fichero As String, _
Optional ByVal Separador As String = ";")

' Este procedimiento graba el Recordset
' generado por el parámetro SQL
' en el fichero pasado como parámetro.
' edu...@olaz.net

On Error GoTo HayError
Dim strFichero As String
Dim i As Long
Dim rs As DAO.Recordset
Dim lngCampos As Long

Dim strRegistro As String

Set rs = CurrentDb.OpenRecordset( _
SQL, dbOpenSnapshot)

strFichero = CurrentProject.Path & "\" & Fichero
With rs
'Cargamos los campos del Recordset em la matriz
lngCampos = .Fields.Count
If lngCampos = 0 Then
.Close
Set rs = Nothing
Exit Sub
End If
If .RecordCount > 0 Then
.MoveFirst
Do While Not .EOF
strRegistro = .Fields(0)
For i = 1 To lngCampos - 1
strRegistro = strRegistro & Separador
strRegistro = strRegistro & .Fields(i)
Next i
GrabaDato strRegistro, strFichero

.MoveNext
Loop
End If
.Close
End With
Set rs = Nothing
Salir:
Exit Sub
HayError:
MsgBox "Se ha producido el error nº " _
& CStr(Err.Number) _
& vbCrLf _
& Err.Description, _
vbCritical + vbOKOnly, _
" Error en el procedimiento RecordSetAtxt"

Resume Salir

0 new messages